Hallo zusammen,
nach etwas "herumspielen" sieht es mir im Moment nach gar nicht so ganz dramatisch viel Arbeit aus, ein Modul zu erstellen.
Dabei bin ich aber über ein paar Dinge gestolpert, die mir unklar sind. Die Referenz zum Erstellen von Modulen gibt es ja bei
github. Klar, Sinn und Zweck der Module ist es "ein paar Variablen" in die ramdisk zu schreiben.
Auf der github-Seite steht wörtlich, ein Modul "besteht aus einem Shell script mit dem Namen main.sh. Sollten weitere Dateien benötigt werden liegen diese mit im Ordner".
Das stimmt ja z.B. für das "SMA-SunnyHomemanager" Modul smashm nicht so ganz. Hier ist noch ein systemd-Service mit an Bord, der ein Python-Script daemonisiert, das vorher via GIT heruntergeladen wird.
Mal abgesehen davon, das der SMA-EnergyMeter-Daemon gut funktioniert hätte ich eher vermutet, dass das Python-Programm im Modul-Ordner liegt und jedesmal von main.sh aufgerufen wird. Klar hat die Daemonisierung auch Vorteile, z.B. sind die Werte "sofort" da, da sie ja nur lokal ausgelesen werden müssen.
Aktuell läuft die Installation der Dependencies und die GIT-"Magie" über den UI-Button "SMA Support" unter Einstellungen - Misc.
Die Frage ist natürlich, ist das eine Ausnahme, ist das ein Vorbild oder soll das möglichst in dem Modul-Ordner untergebracht werden? Wie sollen Dependencies "korrekt" installiert werden?
Zum Anderen bin ich überfordert und verwirrt mit den Variablen, die die verschiedenen Module erheben, verarbeiten und speichern.
Gibt es irgendwo eine Auflistung, welches Modul welche Informationen liefern muss, sollte und/oder kann?
Die github Referenz gibt an, "Bei PV Modulen muss geschrieben werden: ... /var/www/html/openWB/ramdisk/pvwatt, /var/www/html/openWB/ramdisk/pvkwh"
Klar, alle vorhandenen Bezugsmodule schreiben in /var/www/html/openWB/ramdisk/wattbezug, teilweise bin ich bei meinen Experimenten aber auch über ganz andere Variablen gestolpert.
Bei einigen kann ich mir den Nutzen zwar vorstellen, weiss aber nicht, ob openWB diese systematisch weiterverarbeitet.
Natürlich haben verschiedene Hersteller verschiedene Messparameter und jeder Wert ist sicherlich auch für einen Teilaspekt nötig oder hilfreich.
Mir geht es mit dieser Frage aber NUR darum, was für openWB Sinn macht, sprich für das Laden von Elektrofahrzeugen, gerne PV geführt und mit einer "netten" (z.B. grafischen) Auswertung.
Alles was openWB verarbeiten kann und möchte ist dabei definitionsgemäß sinnvoll.
Zugegeben: Ich habe keine Ahnung von der Materie, aber mir scheint das bei ein paar Modulen ziemlich viel erhoben wird (eben das was technisch möglich ist).
Als Anfänger (oder zum Nachvollziehen) ist das unübersichtlich:
Bezugsmodule:
Klar braucht openWB /var/www/html/openWB/ramdisk/wattbezug. bezugkwh und einspeisungkwh mögen auch noch Sinn machen, aber wie ist das mit Schein- und Wirkleistung, Phasenverschiebung, Aufschlüsselung nach Phasen, ...? Folgendes habe ich gefunden:
- evuv1, evuv2, evuv3
- bezuga1, bezuga2, bezuga3
- bezugw1, bezugw2, bezugw3
- evupf1, evupf2, evupf3
- bezugwatt (was ist der Unterschied zu wattbezug?)
- pvwatt, pvkwh, pvkwhk (pv* -> vielleicht bei PV-Insellösungen?)
- evuhz
- lla1, lla2, lla3
- llas11, llas12, llas13
Bei den Speichern ist es etwas übersichtlicher, hier ist
/var/www/html/openWB/ramdisk/speichersoc und /var/www/html/openWB/ramdisk/speicherleistung sicherlich sinnvoll und "Pflicht", es findet sich aber auch
pvwatt, speicherikwh, speicherekwh
pvwatt hätte ich eher bei den PV-Wechselrichtern gesucht, die beiden anderen Werte sind sicherlich für eine Speicher-Auswertung gut, aber für openWB?
Auch die Wechselrichter-Module liefern unterschiedliche Informationen:
Klar ist:
/var/www/html/openWB/ramdisk/pvwatt
/var/www/html/openWB/ramdisk/pvkwh
Aber was ist mit:
- pva1, pva2, pva3
/var/www/html/openWB/ramdisk/pvkwhk
/var/www/html/openWB/ramdisk/daily_pvkwhk
/var/www/html/openWB/ramdisk/yearly_pvkwhk
/var/www/html/openWB/ramdisk/monthly_pvkwhk
Wenn es eine Archivfunktion gibt, dann sollte diese openWB zur Verfügung stellen und nicht die einzelnen Module.
Oder ist es so, dass jedes Modul die Informationen liefert, die der jeweilige Programmierer für sinnvoll hält, egal was openWB damit macht?
Mir fehlt ein wenig die Orientierung und der Blick für's "große Ganze".
"Eigentlich" habe ich nicht vor, ein Modul für openWB zu entwickeln (fehlende Kenntnisse in PHP, Perl, Python, ...). Falls ich aber mal etwas in dieser Richtung "herumspielen" möchte, ist es dann sinnvoller ein "SMA-Speedwire-Modul" für SMA-SHM, PV-WR und Speicher-WR gemeinsam "all-in-one" (wegen gemeinsamem Code, z.B. der "
Speedwire-Discovery", anschließend eine selbst gebaute "Speedwire Autokonfiguration") ins Auge zu fassen oder (wie in openWB erkennbar) als drei separate Module?
Ist es sinnvoll/okay weitere systemd-Dienste zu "kreieren"? Schöner abzufragen, für mein Empfinden aber "böse".
Wie können Perl/Python-Abhängigkeiten sichergestellt werden?
Sind externe GIT-Repositories (wie bei smaemd) erwünscht? ("böse"?)
Oder ist es okay, wenn zusätzliche Programme (SBFspot) einfach als Binary im Modul-Ordner liegen? (auch "böse")
Oder sollten sie aus dem Sourcecode gebaut werden? Wie? (Build-Dependencies, aufwendig)
Am liebsten würde ich statt dessen den
76_SMAInverter.pm von FHEM umbauen und auch Code von
FHEM-SMA-Speedwire verwenden.
Natürlich könnte man dann auch gleich die "
FHEM Werte an openWB übergeben"
aber ohne den Umweg über FHEM wäre es schöner: Einfacher Anwendungsfall (openWB) - einfache Lösung.
Viele Grüße
Christian