Hallo zusammen,
ich baue meine Rolladensteuerung auf DOIF um. Irgendwie schaltet der DOIF aber nicht immer. Anbei der Code ausschnitt. Vielleicht sieht ja jemand einen Fehler. Der DOIF wird über eine Zeit ausgelöst.
define WzRoru DOIF (([[du_Rollo_Zeit_ru]]) and ([du_Rollo_Master] eq "an") and ([du_Rollo_Modus] eq "Zeitgesteuert" )) (set Test an) DOELSEIF (([du_Rollo_Master] eq "an") and ([du_Rollo_Modus] eq "Sonnenuntergang" ) and ([du_Tageslicht] eq "dunkel" )) (set Test an)
define WzRoho DOIF (([[du_Rollo_Zeit_ho]]) and ([du_Rollo_Master] eq "an")) (set Test aus)
Markus
Zitat von: kutschi am 28 April 2016, 21:33:35
Hallo zusammen,
ich baue meine Rolladensteuerung auf DOIF um. Irgendwie schaltet der DOIF aber nicht immer. Anbei der Code ausschnitt. Vielleicht sieht ja jemand einen Fehler. Der DOIF wird über eine Zeit ausgelöst.
define WzRoru DOIF (([[du_Rollo_Zeit_ru]]) and ([du_Rollo_Master] eq "an") and ([du_Rollo_Modus] eq "Zeitgesteuert" )) (set Test an) DOELSEIF (([du_Rollo_Master] eq "an") and ([du_Rollo_Modus] eq "Sonnenuntergang" ) and ([du_Tageslicht] eq "dunkel" )) (set Test an)
define WzRoho DOIF (([[du_Rollo_Zeit_ho]]) and ([du_Rollo_Master] eq "an")) (set Test aus)
Markus
Dass DOIF mit Zuständen arbeitet ist dir bekannt?
Zitat aus der aktuellen Commandref des Moduls:
ZitatDas DOIF-Modul arbeitet mit Zuständen. Jeder Ausführungszweig DOIF/DOELSEIF..DOELSEIF/DOELSE stellt einen eigenen Zustand dar (cmd_1, cmd_2, usw.). Das Modul merkt sich den zuletzt ausgeführten Ausführungszweig und wiederholt diesen standardmäßig nicht. Ein Ausführungszweig wird erst dann wieder ausgeführt, wenn zwischenzeitlich ein anderer Ausführungszweig ausgeführt wurde, also ein Zustandswechsel stattgefunden hat. Dieses Verhalten ist sinnvoll, um zu verhindern, dass zyklisch sendende Sensoren (Temperatur, Feuchtigkeit, Helligkeit, usw.) zu ständiger Wiederholung des selben Befehls oder Befehlsabfolge führen.
Gruß
Damian
Hallo,
das habe ich so noch nicht gelesen. Damit natürlich auch nicht so bedacht. Da muss ich mal sehen wie ich das umbaue.
Danke für den Tipp
Es würde das Attribut do always helfen, denn die Betonung liegt auf 'standardmäßig':attr WzRoru do always
attr WzRoho do always
Aber warum überhaupt 2 DOIFs?
define WzRo DOIF (([[du_Rollo_Zeit_ru]]) and ([du_Rollo_Master] eq "an") and ([du_Rollo_Modus] eq "Zeitgesteuert" )) (set Test an)
DOELSEIF (([du_Rollo_Master] eq "an") and ([du_Rollo_Modus] eq "Sonnenuntergang" ) and ([du_Tageslicht] eq "dunkel" )) (set Test an)
DOELSEIF (([[du_Rollo_Zeit_ho]]) and ([du_Rollo_Master] eq "an")) (set Test aus)
vereinfachte Grüße
Niels
Wenn du nicht zyklisch sendende Sensoren abfragst reicht bereits das Attribut do always.
Gruß
Damian