Seite 1 von 2

Grundlegendes Verständnis - Module und Kommunikation mit dem 'System'

Verfasst: Mo Mai 04, 2020 1:04 pm
von andre
Hallo,

ich stehe kurz davor ein eigenes Modul zu schreiben (HyCube Solaranlage mit Speicher). Allerdings ist das ja kein Spielzeug und ich verstehe gerne was ich tue ;)
Die Beispiele auf der Github Seite sind schon gut, aber mir fehlt so ein wenig das Grundverständnis wie das openWB System arbeitet und wie die Module mit dem System kommunizieren.
Sollte es da irgendwo was zu lesen geben was ich übersehen habe, bitte ich um Entschuldigung und freue mich über einen Link.

Ansonsten wäre es toll, und vermutlich auch für anderen Hilfreich wenn jemand ein wenig über das System erzählen könnte, damit man ein Grundverständnis vom Aufbau und der Kommunikation der einzelnen Teile bekommen kann.

Viele Grüsse

Andre

PS: Die opwnWB Standart+ ist schon bestellt, finde das Konzept klasse und freue mich drauf!

Re: Grundlegendes Verständnis - Module und Kommunikation mit dem 'System'

Verfasst: Di Mai 05, 2020 6:30 am
von openWB
Zum erstellen eines Moduls ist es am einfachst ein bestehendes zu nehmen und entsprechend anzupassen.

Grundsätzlich fragt die openWB die Module ab, diese liefern Werte und openWB arbeitet dann damit.
Wenn es um Variablen geht ist das gerade etwas im Wandel.
Wenn du das Modul machst kurz Bescheid geben. Dann schaue ich drüber und pass die ggf. grad an. Ebenso die EInstellbarkeit im UI.

Re: Grundlegendes Verständnis - Module und Kommunikation mit dem 'System'

Verfasst: Di Mai 05, 2020 8:15 am
von LutzB
Hallo Andre,

es ist eigentlich gar nicht so schwierig. Über einen Cronjob ruft openWB regelmäßig die "main.sh" der eingestellten Module auf. In dem Skript kannst Du alles machen, was Du willst. ;)

Es sollte (Stand jetzt) auf jeden Fall die "openwb.conf" geladen werden, um an die Einstellungen zu Deinem neuen Modul zu kommen. Der Teil wird, wie Kevin schon geschrieben hat, überarbeitet.

Die von Deinem Modul ermittelten Werte schreibst Du einfach in die entsprechenden Dateien im Ordner Ramdisk. OpenWB liest die regelmäßig ein und hat so in jedem Prozess die aktuellen Messwerte und Regelparameter. Eine Übersicht aller Dateien und der Funktion gibt es meines Wissens nach nicht. Im Zweifel schaust Du am Besten in einem bestehenden Modul nach, was wohin geschrieben wird.

Gruß,
Lutz

Re: Grundlegendes Verständnis - Module und Kommunikation mit dem 'System'

Verfasst: Mi Mai 06, 2020 6:25 pm
von andre
Hallo,

danke für Eure Erklärung und Hilfe, ich denke ich hab jetzt schonmal ein wenig mehr verstanden.

Was mich stutzig macht, aus dem Beispiel:

Code: Alles auswählen

#Der Hauptwert (Watt) wird als echo an die Regellogik zurückgegeben
echo $wattbezug
Wie geht das mit dem "Echo", vor allem wenn ich mehrere Werte habe (PV-Leistung, Speicher %, Hausverbrauch, Einspeisung...), woher wie open WB was da gerade im Echo landet?

Das hier, hätte ich verstanden:
Die von Deinem Modul ermittelten Werte schreibst Du einfach in die entsprechenden Dateien im Ordner Ramdisk. OpenWB liest die regelmäßig ein und hat so in jedem Prozess die aktuellen Messwerte und Regelparameter.
da steht aber

Code: Alles auswählen

#Zusätzlich wird der Wert in die Ramdisk geschrieben, dies ist für das Webinterface sowie das Logging und ggf

Sorry, ist vielleicht blöde, aber da komm ich gerade nicht mit ;)
Und wie Ihr merkt bin ich da ein wenig 'perfektionistisch', ich bin selbst Softwareentwickler, meiner Meinung nach gibt es nur eine Sache die schlimmer ist als ein Programmteil was nicht funktioniert: Ein Teil was funktioniert, aber keiner weis warum 8-)

Viele Grüsse

Andre

Re: Grundlegendes Verständnis - Module und Kommunikation mit dem 'System'

Verfasst: Mi Mai 06, 2020 6:31 pm
von LutzB
Die Ausgaben über echo sind nur fürs Debugging und werden nicht verarbeitet, so zumindest mein Wissensstand. Wenn das Skript im Terminal ausgeführt wird, kann man so sehen, ob es funktioniert.

Re: Grundlegendes Verständnis - Module und Kommunikation mit dem 'System'

Verfasst: Mi Mai 06, 2020 7:14 pm
von andre
Hi,

das würde ich verstehen, aber dann sind die Kommentare ein wenig 'sub-optimal' ;)

Viele Grüsse

Andre

Re: Grundlegendes Verständnis - Module und Kommunikation mit dem 'System'

Verfasst: Fr Mai 08, 2020 4:21 am
von keil
Moin Andre und Lutz,
Die Ausgaben über echo sind nur fürs Debugging und werden nicht verarbeitet
das stimmt so an wirklich fast allen Stellen, aber bei der Leistung für Bezug/Einspeisung nicht. Siehe ab Zeile 658 in der loadvars.sh (https://github.com/snaptec/openWB/blob/ ... rs.sh#L658):

Code: Alles auswählen

#Wattbezug
if [[ $wattbezugmodul != "none" ]]; then
	wattbezug=$(modules/$wattbezugmodul/main.sh || true)
	if ! [[ $wattbezug =~ $re ]] ; then
		wattbezug="0"
	fi
Hier wird der Rückgabewert (also das "echo $wattbezug" in Deinem Skript) wirklich vom ausführenden Skript verwendet und nicht aus der Ramdisk gelesen.
Und wie Ihr merkt bin ich da ein wenig 'perfektionistisch', ich bin selbst Softwareentwickler
... dann empfehle ich Dir nicht zu genau in den Code bzw. die Mechanismen dahinter zu schauen ;-)
In openWB ist vieles "historisch gewachsen" und Kevin würde sicherlich auch einige Sachen anders machen, wenn er nochmal ganz von vorne beginnen würde.

Aber: Als er das Projekt begonnen hatte wäre er wahrscheinlich nie auf die Idee gekommen, dass das ganze mal so groß wird dass er das irgendwann mal in Vollzeit macht. Und hätte er von Anfang an Wert auf "schönen" Code, absolut "saubere" Schnittstellen und "gute Dokumentation" für den Einstieg der Softwareentwicklung gelegt, dann wäre openWB ganz sicher nicht so erfolgreich geworden.

Schön und schnell geht halt leider nicht beides und ich bin froh, dass der Fokus auf der schnellen Entwicklung von Features und Bugfixes liegt, denn für den Nutzer ist die Funktionalität entscheidend... und die ist gegeben.
Und bitte nicht zu vergessen: Kevin liefert einen hervorragenden Support, der auch viel Zeit frisst.


Viele Grüße,
Michael

Re: Grundlegendes Verständnis - Module und Kommunikation mit dem 'System'

Verfasst: Fr Mai 08, 2020 8:15 am
von aiole
Weise Worte, Michael. Denen kann ich mich nur anschließen.

Außerdem erfolgt sicher permanent Codeoptimierung oder sogar ein rewrite.
Zunächst standen die features im Fokus (und das herstellerübergreifend).

Ich bin mir ziemlich sicher, dass wenn die Aufgabe an 2 Progger gegangen wäre, auch 2 unterschiedliche Ergebnisse vorlägen. Das kann man nicht zu 100% standardisieren und wenn doch, wird man nie fertig.

VG aiole

Re: Grundlegendes Verständnis - Module und Kommunikation mit dem 'System'

Verfasst: Sa Mai 09, 2020 4:55 pm
von andre
Hi,

danke für die Info, und keine Angst, ich bin nicht hier um das schlecht zu machen!
Ich weis selbst wie das ist wenn etwas 'historisch wächst', da müssen immer Kompromisse gemacht werden.
Mir gehts nur um das was ich dazu baue, das will ich verstehen und nicht mal eben so lange probieren bis es geht (oder dann auch irgendwann nicht mehr, je nach Fall).

Die erste konkrete Frage wäre dann: Kann ich ein Modul schreiben was alles berechnet / liefert (den Bezug dann auch als Ausgabe) oder muss das für jeden Wert (Bezug, Erzeugung, Speicher-Prozent) ein eigenes Modul sein?
Woher weis die Software welche Module sie verwenden soll? Hab die WB ja noch nicht hier... Ggf. würde es sinn machen mal einen Test Raspi zu installieren... geht das ohne zusätzliche Hardware?

Viele Grüsse
Andre

Re: Grundlegendes Verständnis - Module und Kommunikation mit dem 'System'

Verfasst: Sa Mai 09, 2020 5:52 pm
von okaegi
Schau dir mal e3dc an,
Das hat ein Bezugsmodul:
Bezug_e3dc
Und ein kombiniertes Wr Speicher Modul
Speicher_e3dc
Gruss Oliver