FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: GhostSG am 08 August 2024, 22:42:57

Titel: DOIF überspringt CMD n.1 und löst direkt CMD n.2 aus
Beitrag von: GhostSG am 08 August 2024, 22:42:57
Hallo zusammen,
ich dachte eigentlich, ich hätte die Logik von DOIF verstanden.
Nun stehe ich aber vor einem Rätsel, auf dessen Lösung ich nicht kommen.

Ich habe folgendes DOIF:

defmod doif_Korridor_Licht DOIF ([WS_Korridor_Licht:"opened"])\
(set sonoff_werkstatt_aussenlicht ON)\
(set sonoff_werkstatt_aussenlicht OFF)\
DOELSEIF ([WS_Korridor_Licht:"closed"])\
(set sonoff_werkstatt_aussenlicht OFF)\
DOELSEIF ([TK_Terassentuer:"open"])\
(set sonoff_werkstatt_aussenlicht ON)\
(set sonoff_werkstatt_aussenlicht OFF)\
DOELSEIF ([TK_Werkstatt:"open"])\
(set sonoff_werkstatt_aussenlicht ON)\
(set sonoff_werkstatt_aussenlicht OFF)\
DOELSEIF ([TK_Carport:"open"])\
(set sonoff_werkstatt_aussenlicht ON)\
(set sonoff_werkstatt_aussenlicht OFF)\

attr doif_Korridor_Licht DbLogExclude .*
attr doif_Korridor_Licht do resetwait
attr doif_Korridor_Licht group Funktionen
attr doif_Korridor_Licht room E.2a Korridor
attr doif_Korridor_Licht wait 0,300

Problem:
Bedingung 1 wird korrekt ausgeführt, nach wait-Ablauf springt er in CMD 1.2. Alles wie es soll.
Alle anderen Bedingungen werden, wenn Sie wahr sind jedoch nicht korrekt ausgeführt.
Bei allen überspringt er CMD n.1 und führt direkt n.2 aus.

Mein Licht bleibt also quasi immer aus.
Was habe ich falsch gemacht?

Komme echt nicht drauf.
Titel: Aw: DOIF überspringt CMD n.1 und löst direkt CMD n.2 aus
Beitrag von: Nobbynews am 09 August 2024, 06:38:33
Zitat von: GhostSG am 08 August 2024, 22:42:57attr doif_Korridor_Licht wait 0,300

Bei allen überspringt er CMD n.1 und führt direkt n.2 aus.
Dein attr wait ist falsch.
Das müsste so lauten:
attr doif Korridor wait 0,300:0:0,300:0,300:0,300CMD 2 hat nur einen Befehlsblock.
Titel: Aw: DOIF überspringt CMD n.1 und löst direkt CMD n.2 aus
Beitrag von: GhostSG am 09 August 2024, 08:19:59
danke für den Hinweis. Ich wusste nicht, dass Wait für jeden Kommandoblock einzeln angegeben werden muss :)