Zitat von Masifi
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
[OpenKNX-Ready] GardenControl Bewässerungsautomat
Einklappen
X
-
Zitat von coko Beitrag anzeigenDu meinst den Hinweis mit der Verknüpfung von mehreren Automaten?
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
-
Zitat von shortyle Beitrag anzeigeneigentlich war hier schon Schluss
[...]
mir helfen da immer Bilder bzw. ein Exportstring um das Grundschema zu verstehen.
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
-
Zitat 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
Code: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
-
Zitat von shortyle Beitrag anzeigenHier die beiden DEAs als String,
Kommentar
-
Kommentar
-
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
-
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.
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