Grundlegendes Verständnis - Module und Kommunikation mit dem 'System'
Grundlegendes Verständnis - Module und Kommunikation mit dem 'System'
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!
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'
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.
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.
Supportanfragen bitte NICHT per PN stellen.
Hardwareprobleme bitte über die Funktion Debug Daten senden mitteilen oder per Mail an support@openwb.de
Hardwareprobleme bitte über die Funktion Debug Daten senden mitteilen oder per Mail an support@openwb.de
-
- Beiträge: 3735
- Registriert: Di Feb 25, 2020 9:23 am
- Has thanked: 2 times
- Been thanked: 9 times
Re: Grundlegendes Verständnis - Module und Kommunikation mit dem 'System'
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
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'
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:
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:
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
Viele Grüsse
Andre
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
Das hier, hätte ich verstanden:
da steht aberDie 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.
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
Viele Grüsse
Andre
-
- Beiträge: 3735
- Registriert: Di Feb 25, 2020 9:23 am
- Has thanked: 2 times
- Been thanked: 9 times
Re: Grundlegendes Verständnis - Module und Kommunikation mit dem 'System'
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'
Hi,
das würde ich verstehen, aber dann sind die Kommentare ein wenig 'sub-optimal'
Viele Grüsse
Andre
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'
Moin Andre und Lutz,
Hier wird der Rückgabewert (also das "echo $wattbezug" in Deinem Skript) wirklich vom ausführenden Skript verwendet und nicht aus der Ramdisk gelesen.
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
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):Die Ausgaben über echo sind nur fürs Debugging und werden nicht verarbeitet
Code: Alles auswählen
#Wattbezug
if [[ $wattbezugmodul != "none" ]]; then
wattbezug=$(modules/$wattbezugmodul/main.sh || true)
if ! [[ $wattbezug =~ $re ]] ; then
wattbezug="0"
fi
... dann empfehle ich Dir nicht zu genau in den Code bzw. die Mechanismen dahinter zu schauenUnd wie Ihr merkt bin ich da ein wenig 'perfektionistisch', ich bin selbst Softwareentwickler
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
-
- Beiträge: 7632
- Registriert: Mo Okt 08, 2018 4:51 pm
- Has thanked: 6 times
- Been thanked: 14 times
Re: Grundlegendes Verständnis - Module und Kommunikation mit dem 'System'
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
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'
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
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
-
- Beiträge: 2377
- Registriert: Fr Mär 08, 2019 1:57 pm
- Has thanked: 1 time
- Been thanked: 9 times
Re: Grundlegendes Verständnis - Module und Kommunikation mit dem 'System'
Schau dir mal e3dc an,
Das hat ein Bezugsmodul:
Bezug_e3dc
Und ein kombiniertes Wr Speicher Modul
Speicher_e3dc
Gruss Oliver
Das hat ein Bezugsmodul:
Bezug_e3dc
Und ein kombiniertes Wr Speicher Modul
Speicher_e3dc
Gruss Oliver
Entwickler- openWB (ehrenamtlich) / Feedback zu Funktionen immer erwünscht..
Smarthomeprobleme siehe hier (update ): viewtopic.php?f=14&t=5923
Smarthomeprobleme siehe hier (update ): viewtopic.php?f=14&t=5923