DOIF überspringt CMD n.1 und löst direkt CMD n.2 aus

Begonnen von GhostSG, 08 August 2024, 22:42:57

Vorheriges Thema - Nächstes Thema

GhostSG

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.

Nobbynews

#1
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.

GhostSG

danke für den Hinweis. Ich wusste nicht, dass Wait für jeden Kommandoblock einzeln angegeben werden muss :)