Hauptmenü

DOIF schaltet nicht immer

Begonnen von kutschi, 28 April 2016, 21:33:35

Vorheriges Thema - Nächstes Thema

kutschi

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

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

kutschi

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

Muschelpuster

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
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

Damian

Wenn du nicht zyklisch sendende Sensoren abfragst reicht bereits das Attribut do always.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF