Zitat von Masifi
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
[OpenKNX-Ready] GardenControl Bewässerungsautomat
Einklappen
X
-
eigentlich war hier schon SchlussZitat von coko Beitrag anzeigenDu meinst den Hinweis mit der Verknüpfung von mehreren Automaten?
mir helfen da immer Bilder bzw. ein Exportstring um das Grundschema zu verstehen.Zitat von coko Beitrag anzeigenFormal:
Ventil_Schaltzustand: Ventilnummer × Zustand → {EIN, AUS}
Ventil_Schaltzustand(n, z) :=
EIN (wenn Ventil n im Zustand z geöffnet sein soll)
bzw.
AUS (wenn Ventil n im Zustand z geschlossen sin soll)
Gruß David
Kommentar
-
Das war eigentlich nur noch als Ergänzung/Alternative zum Text gedacht ;-)Zitat von shortyle Beitrag anzeigeneigentlich war hier schon Schluss
[...]
mir helfen da immer Bilder bzw. ein Exportstring um das Grundschema zu verstehen.
Ich probiere es einfach noch mal mit einem Bild (mit künstlichem Beispiel). Wenn Du für jeden Zustand direkt sagen kannst ob ein Ventil offen oder geschlossen ist (egal was davor passiert ist!), dann hast Du ein direkt nachvollziehbares und robustes verhalten:Zitat von coko Beitrag anzeigenDu könntest auch direkt die einzelnen Ventile schalten (über mehrere Ausgänge), bzw. den Schaltzustand setzen. Das passt auch eher zum Zustandskonzept, wenn Du einen (eindeutigen) funktionalen Zusammenhang abbildest. D.h.: Der Öffnungszustand jedes einzelnen Ventils sollte ausschließlich davon abhängen welcher Zustand aufgerufen wurde.
Formal:
[...]
grafik.pngz A B Timeout T Ventil1
O1Ventil2
O2Ventil3
O3Ventil4
O4Ventil5
?Ventil6
?Ventil7
?1 alles aus 2 0 0 0 0 0 0 0 2 Zone1+4 1 15min 3 EIN 0 0 0 0 EIN 0 3 Zone2a+4 1 5min 4 0 EIN EIN 0 0 EIN 0 4 Zone2a+2b 1 10min 5 0 EIN EIN EIN 0 0 0 5 Zone3+5 1 10min 1 0 0 0 0 EIN 0 EIN
Du kannst dann also einfach eine Tabelle mit Zustandänden und Ventil-Öffnung erstellen (das funktioniert nur wenn Du einen solchen klaren funktionalen Zusammenhang hast), siehst aber auch dass es eben mehr als 4 Ausgangswerte benötigt die man direkt mit einem Zustandsautomaten erzeugen kann.
Eine Möglichkeit ist die genannte Kopplung, die als "Abfallprodukt" beim direkten Setzen des Zustands möglich ist.:
Folgender_Automat_Ventile.marked.png
Der "Folgende Automat" übernimmt dann nur noch die Ausgabe weiterer Ausgangswerte.
Und mir sind auch gerade noch weitere Lösungsansätze eingefallen...
- Likes 1
Kommentar
-
Interesse ist schon mal eine gute Basis. Zur sinnvollen Nutzung des Moduls bzw. auch dem Erkennen von geeigneten Einsatzszenarien braucht es in der Tat eine gewisse Vorstellung vom zugrundeliegenden Konzept mit Zuständen und Ereignissen die zu Zustandswechseln führen. Das Modul erfordert es realistischerweise, dass man sich etwas damit auseinandersetzt. Ich erwarte nicht, dass bei allen Nutzern die von dem Modul profitieren können bereits ein intuitives Verständnis vorhanden ist. Sehr einfach sollten es alle Menschen haben die mal Informatik studiert haben und das zugrundeliegende Modell noch aus aus dem Grundstudium kennen; für alle anderen dürfte der Einstieg schwieriger sein. Werde gerne dabei unterstützten; bei allgemeinem Interesse können wir mal einen Online-Workshop dazu durchführen, mitZitat von shortyle Beitrag anzeigenDas Modul mit den Zustandsautomaten ist für mich nach wie vor ein Buch mit sieben Siegeln Aber ich finde es sehr interessant.
Stereofeld und Masifi hatte ich das schon mal andiskutiert.
Ansonsten stell gerne auch einfach so Fragen.
- Likes 2
Kommentar
-
Hallo zusammen,
ich schaue mir gerade die GardenControl Applikation an um die Möglichkeiten mit meiner bisherigen Installation (Heizungsaktor + Analogaktor) zu vergleichen.
Im Analogbereich geht mir ein wenig die Möglichkeit ab die Sensordaten auf Prozent / Liter usw. umzusetzen wenn diese nicht liniear sind. Aktuell habe ich zumindest 5 Werte mit denen ich mit dem Sensor gemessene Werte in "echte" Werte umsetzen kann, dazwischen wird natürlich jeweils linearisiert. Gibt's hier im Gerät selber möglichkeiten die ich aktuell nicht sehe?
Gruß
Winni
Kommentar
-
wollte nur gerade mal zurückmelden das ich mit dem Zustandsautomaten eine ganze Ecke weiter bin.
Ziel war es 4 Rasenzonen nacheinander laufen zulassen.
Vor den 4 Zonenventilen sitzt ein Hauptventil (V1), welches beim Starten der Bewässerung zuerst geöffnet werden soll. Anschließend öffnet das erste (Rasen)Zonenventil V2 mit Verzögerung von 2s. Nach der eingestellten Laufzeit (zu Testzwecken 10s) schließt V2 und es wird, mit erneuter Verzögerung, das nächste (Rasen)Zonenventil V3 geöffnet usw. bis zu Zone4 (V5). Jeder Wechsel wird per Textanzeige ausgegeben.
Nach dem letzten Zoneventil schließt mit Verzögerung von 2s auch das Hauptventil.
Gestartet wird die Bewässerungssequenz entweder über eine ZSU oder manuell.
Aufgrund der Anzahl an benötigten Ausgängen (5 Ventile + Diagnosetext) werden 2 Zustandsautomaten verwendet und quasi nacheinander durchlaufen (KO DEA 2, Ausgabe Zustand und KO DEA 3, Eingabe Zustand mittels GA verbinden).
Auch ein gezielter Start einer Bewässerungszone innerhalb der Sequenz funktioniert. Allerdings läuft die Sequenz dann bis zum Schluss durch.
So funktioniert es erst einmal für mich, auch wenn es bestimmt noch etwas schlanker/eleganter geht. Wichtig für mich ist, ich bin ein ganzes Stück schlauer zum Zustandsautomat.
Als nächster Schritt folgt das Einbinden für einen Windalarm, der die Bewässerung pausiert (einfach über einen Logikkanal und das passende KO im DEA). Ein Regenalarm soll ebenfalls noch Einfluss nehmen (hier weiß ich aber noch nicht, was wirklich sinnvoll ist zu messen) und auch die Bodenfeuchte.
Danke nochmal für all die Mühen und die Hilfsbereitschaft sowohl bei Hardware wie auch den Modulen.
Hier die beiden DEAs als String, für jene die es auch einmal probieren und "spielen" wollen
DEA 1
DEA 2Code:OpenKNX,cv1,0xA210:0x9/DFA:0x4/2§a~Name=Bew%C3%A4sserung%20Rasen§a~Active=1§a~StartPause=1§a~StateSetting=1§a~SymbolPairAB=1§a~SymbolPairEF=1§a~SymbolPairGH=1§a~SymbolAName:2=Bew.%20Rasen%20an%2Faus§a~SymbolAInput:2=1§a~SymbolCName:1=ZSU§a~SymbolCInput:1=3§a~SymbolCLogicNumber:1=11§a~SymbolEName:2=Windalarm§a~SymbolGName:2=Regenalarm§a~Output1Name=Hauptventil§a~Output2Name=Rasen%201§a~Output3Name=Rasen%202§a~Output4Name=Status§a~Output1Dpt=10§a~Output2Dpt=10§a~Output3Dpt=10§a~Output4Dpt=161§a~z01Name=alles%20AUS§a~z02Name=Rasen%201%20aktivieren§a~z03Name=Rasen%201§a~z04Name=Rasen%202%20aktivieren§a~z05Name=Rasen%202§a~z06Name=Rasen%203%20aktivieren§a~z07Name=Rasen%203§a~z08Name=Rasen%204%20aktivieren§a~z09Name=Rasen%204§a~z10Name=deaktivieren§a~d01A=2§a~d01C=2§a~z01o1Send=10§a~z01o1Dpt1=0§a~z01o2Send=10§a~z01o2Dpt1=0§a~z01o3Send=10§a~z01o3Dpt1=0§a~z01o4Send=10§a~z01o4Dpt16=Alles%20AUS§a~d02B=10§a~d02T=3§a~d02TTime=2§a~z02o1Send=10§a~z02o2Send=10§a~z02o2Dpt1=0§a~z02o3Send=10§a~z02o3Dpt1=0§a~z02o4Send=10§a~z02o4Dpt16=Bew.%20starten§a~d03B=10§a~d03T=4§a~d03TTime=10§a~z03o1Send=10§a~z03o2Send=10§a~z03o3Send=10§a~z03o3Dpt1=0§a~z03o4Send=10§a~z03o4Dpt16=Rasen%201%20aktiv§a~d04B=10§a~d04T=5§a~d04TTime=2§a~z04o1Send=10§a~z04o2Send=10§a~z04o2Dpt1=0§a~z04o3Send=10§a~z04o3Dpt1=0§a~z04o4Send=10§a~z04o4Dpt16=Zonenwechsel§a~d05B=10§a~d05T=6§a~d05TTime=10§a~z05o1Send=10§a~z05o2Send=10§a~z05o2Dpt1=0§a~z05o3Send=10§a~z05o4Send=10§a~z05o4Dpt16=Rasen%202%20aktiv§a~d06B=10§a~d06T=7§a~d06TTime=2§a~z06o1Send=10§a~z06o2Send=10§a~z06o2Dpt1=0§a~z06o3Send=10§a~z06o3Dpt1=0§a~z06o4Send=10§a~z06o4Dpt16=Zonenwechsel§a~d07B=10§a~d07T=8§a~d07TTime=10§a~z07o1Send=10§a~z07o2Send=10§a~z07o2Dpt1=0§a~z07o3Send=10§a~z07o3Dpt1=0§a~z07o4Send=10§a~z07o4Dpt16=Rasen%203%20aktiv§a~d08B=10§a~d08T=9§a~d08TTime=2§a~z08o1Send=10§a~z08o2Send=10§a~z08o2Dpt1=0§a~z08o3Send=10§a~z08o3Dpt1=0§a~z08o4Send=10§a~z08o4Dpt16=Zonenwechsel§a~d09B=10§a~d09T=10§a~d09TTime=10§a~z09o1Send=10§a~z09o2Send=10§a~z09o2Dpt1=0§a~z09o3Send=10§a~z09o3Dpt1=0§a~z09o4Send=10§a~z09o4Dpt16=Rasen%204%20aktiv§a~d10T=1§a~d10TTime=2§a~z10o1Send=10§a~z10o2Send=10§a~z10o2Dpt1=0§a~z10o3Send=10§a~z10o3Dpt1=0§a~z10o4Send=10§a~z10o4Dpt16=Bew.%20stoppen§;OpenKNX
Code:OpenKNX,cv1,0xA210:0x9/DFA:0x4/3§a~Name=Bew%C3%A4sserung%20Rasen§a~Active=2§a~StartPause=1§a~StateSetting=1§a~SymbolPairAB=1§a~SymbolPairEF=1§a~SymbolPairGH=1§a~SymbolAName:2=Bew.%20Rasen%20an%2Faus§a~SymbolAInput:2=1§a~SymbolCName:1=ZSU§a~SymbolCInput:1=3§a~SymbolCLogicNumber:1=11§a~SymbolEName:2=Windalarm§a~SymbolGName:2=Regenalarm§a~Output1Name=Rasen%203§a~Output2Name=Rasen%204§a~Output4Name=Status§a~Output1Dpt=10§a~Output2Dpt=10§a~Output4Dpt=161§a~z01Name=alles%20AUS§a~z02Name=Rasen%201%20aktivieren§a~z03Name=Rasen%201§a~z04Name=Rasen%202%20aktivieren§a~z05Name=Rasen%202§a~z06Name=Rasen%203%20aktivieren§a~z07Name=Rasen%203§a~z08Name=Rasen%204%20aktivieren§a~z09Name=Rasen%204§a~z10Name=deaktivieren§a~d01A=2§a~d01C=2§a~z01o1Send=10§a~z01o1Dpt1=0§a~z01o2Send=10§a~z01o2Dpt1=0§a~z01o4Send=10§a~z01o4Dpt16=Alles%20AUS§a~d02B=10§a~d02T=3§a~d02TTime=2§a~z02o1Send=10§a~z02o2Send=10§a~z02o2Dpt1=0§a~z02o4Send=10§a~z02o4Dpt16=Bew.%20starten§a~d03B=10§a~d03T=4§a~d03TTime=10§a~z03o1Send=10§a~z03o2Send=10§a~z03o2Dpt1=0§a~z03o4Send=10§a~z03o4Dpt16=Rasen%201%20aktiv§a~d04B=10§a~d04T=5§a~d04TTime=2§a~z04o1Send=10§a~z04o2Send=10§a~z04o2Dpt1=0§a~z04o4Send=10§a~z04o4Dpt16=Zonenwechsel§a~d05B=10§a~d05T=6§a~d05TTime=10§a~z05o1Send=10§a~z05o2Send=10§a~z05o2Dpt1=0§a~z05o4Send=10§a~z05o4Dpt16=Rasen%202%20aktiv§a~d06B=10§a~d06T=7§a~d06TTime=2§a~z06o1Send=10§a~z06o2Send=10§a~z06o2Dpt1=0§a~z06o4Send=10§a~z06o4Dpt16=Zonenwechsel§a~d07B=10§a~d07T=8§a~d07TTime=10§a~z07o1Send=10§a~z07o2Send=10§a~z07o4Send=10§a~z07o4Dpt16=Rasen%203%20aktiv§a~d08B=10§a~d08T=9§a~d08TTime=2§a~z08o1Send=10§a~z08o2Send=10§a~z08o2Dpt1=0§a~z08o4Send=10§a~z08o4Dpt16=Zonenwechsel§a~d09B=10§a~d09T=10§a~d09TTime=10§a~z09o1Send=10§a~z09o2Send=10§a~z09o2Dpt1=0§a~z09o4Send=10§a~z09o4Dpt16=Rasen%204%20aktiv§a~d10T=1§a~d10TTime=2§a~z10o1Send=10§a~z10o2Send=10§a~z10o2Dpt1=0§a~z10o4Send=10§a~z10o4Dpt16=Bew.%20stoppen§;OpenKNX
Zuletzt geändert von shortyle; 15.05.2025, 19:53.Gruß David
- Likes 5
Kommentar
-
Es ist geschafft, der Release 0.9 steht :-)
https://github.com/OpenKNX/BEM-GardenControl/releases
Ich habe in noch als Beta laufen, da es jetzt doch ein paar Änderungen zum letzten Offiziellen Release 0.4 gegeben hat.
Wenn euch was negativ auffällt, dann lasst es mich wissen. Ansonsten viel Spaß damit
- Likes 4
Kommentar
-
Ist zweimal Kanal2...Zitat von shortyle Beitrag anzeigenHier die beiden DEAs als String,
Kommentar
-
Kommentar
-
Schau Dir mal das Beispiel des Countdown-Zählers an, wobei Du wahrscheinlich eher ein EIN erzeugen willst so lange die 0 noch nicht erreicht ist. Wenn Du nur einige wenige verschiedene Zeiten benötigst, dann wäre das auch sehr bequem über die Timeout-Funktion der Zustandsautomaten möglich (Aufruf verschiedener Zustände mit unterschiedlichen Timeouts).Zitat von mpl1337 Beitrag anzeigenIst es möglich eine Zeit per KO vorzugeben?
In Zukunft wird es noch ein OpenKNX-Modul mit Countdown-Funktion (von mgeramb ) geben, das ist aktuell aber noch in keiner Produktiv-Applikation enthalten.
Kommentar
-
Gerne. Freut mich, dass das zu einem Ergebnis geführt hat und danke auch dafür, dass Du das hier als Beispiel teilst.Zitat von shortyle Beitrag anzeigenwollte nur gerade mal zurückmelden das ich mit dem Zustandsautomaten eine ganze Ecke weiter bin.[...] Wichtig für mich ist, ich bin ein ganzes Stück schlauer zum Zustandsautomat. [..]
Danke nochmal für all die Mühen und die Hilfsbereitschaft sowohl bei Hardware wie auch den Modulen.
Zitat von shortyle Beitrag anzeigenAufgrund der Anzahl an benötigten Ausgängen (5 Ventile + Diagnosetext) werden 2 Zustandsautomaten verwendet und quasi nacheinander durchlaufen (KO DEA 2, Ausgabe Zustand und KO DEA 3, Eingabe Zustand mittels GA verbinden).
Schön, dass das bei Dir so funktioniert. Die Eingänge hast Du hoffentlich nicht mit beiden Automaten verknüpft? Damit würdest Du ein potenziell unerwartetes Verhalten provozieren, weil der zweite Automat dann ggf. so reagiert als hätte er das selbe Symbol zweimal hintereinander erhalten. Etwas was in Deinem Anwendungsfall evt. nicht mal auffällt. Ich würde empfehlen im zweiten Automaten alle Eingänge und Zustandswechsel zu entfernen. Insbesondere Timeouts könnten sonst bei späteren Anpassungen zu Überraschungen führen (wenn Du diese im Haupt-Automaten verlängerst und diese im zweiten weiterhin früher ausgeführt werden). Die Kopplung von meheren Automaten verhält sich halt nicht exakt genau so wie ein einzelner zusammenhängender Automat.
Beim Begriff "nacheinander" hätte ich eher noch an eine andere Form von Automaten-Kombination gedacht.
Zitat von shortyle Beitrag anzeigenAuch ein gezielter Start einer Bewässerungszone innerhalb der Sequenz funktioniert. Allerdings läuft die Sequenz dann bis zum Schluss durch.
So funktioniert es erst einmal für mich, auch wenn es bestimmt noch etwas schlanker/eleganter geht.
Beim direkten Start (über Zustandsaufruf nehme ich an?) einer Zone hättest Du kein Vorab-Schalten des Hauptventils. Das ließe sich Abbilden, wenn Du das Schalten der Ventile nicht durch die Automaten-Definition, sondern durch einen nachgelagerten Logik-Kanal verzögerst (Einschaltverzögerung von 2s und beim Hauptkanal das Ausschalten um 2s, wobei der auch durch ODER-Verknüpfung der Ventile erzeugt werden könnte.
Über das Diagnose-Objekt kannst Du auch den Timeout des aktuellen Zustands direkt auslösen.Zitat von shortyle Beitrag anzeigenNach der eingestellten Laufzeit (zu Testzwecken 10s)
Zitat von shortyle Beitrag anzeigenAls nächster Schritt folgt das Einbinden für einen Windalarm, der die Bewässerung pausiert (einfach über einen Logikkanal und das passende KO im DEA).
Vorsicht: Pausieren könnte dazu führen, dass Dauerberegnung erfolgt, wenn das Ventil gerade an ist.
Kommentar


Kommentar