Hallo,
anhand der Doku [1] wollte ich mit Verzögerungen bei Zwischenzuständen arbeiten. Also so wie mit
Sollen Verzögerungen innerhalb von Befehlsfolgen stattfinden, so müssen diese Komandos in eigene Klammern gesetzt werden, das Modul arbeitet dann mit Zwischenzuständen gemeint ist.
Hier ist meine Definition vom DOIF:
( [HM_SchluesselbrettSchalter_Btn01] =~ "^Short..to.*" ) (
( set WohnzimmerSchrankLicht on-for-timer 1 ) ( set VentilatorSteckdose on-for-timer 1 )
) DOELSE ()
attr SchluesselbrettSchalter.Btn01 do always
attr SchluesselbrettSchalter.Btn01 room EG_Flur
attr SchluesselbrettSchalter.Btn01 wait 5,20:0
Bei jedem Betätigen des Schalters wird auch der erste DOIF-Teil getriggert. Soweit, so gut. Das Licht geht nach 5 Sekunden ein - das passt auch noch. "Gleichzeitig" wird aber auch die Steckdose eingeschaltet. Das sollte aber erst nach 20 Sekunden passieren, deshalb die Angabe ",20" im wait-Attribut. Weshalb wird nicht die Wartezeit von 20 Sekunden eingehalten?
Was ich schon gemacht habe (hat alles nicht zum gewünschten Erfolg geführt):
- update und Neustart
- die Klammernpaare (set...) (set...) auf zwei Zeilen aufgeteilt
- testhalber das do always gelöscht und mit einem langen Tasendruck das DOELSE getriggert
- hier im Forum nach ähnlichen Fragestellungen gesucht
Ich bin langsam am Verzweifeln. Irgendetwas muss ich übersehen...
Besten Dank im Voraus!
[1] https://fhem.de/commandref_DE.html#DOIF_wait
hm... bitte immer ein list vom Device posten, keine definitionen.
( [HM_SchluesselbrettSchalter_Btn01] =~ "^Short..to.*" ) (( set WohnzimmerSchrankLicht on-for-timer 1 ) ( set VentilatorSteckdose on-for-timer 1 ))
DOELSE
hab das mal umformatiert, dann siehst du, dass du bei cmd_1 quasi nur einen Ausführungsteil hast. Willst du zwei haben, dann lass die äußeren Klammern weg:
( [HM_SchluesselbrettSchalter_Btn01] =~ "^Short..to.*" ) ( set WohnzimmerSchrankLicht on-for-timer 1 ) ( set VentilatorSteckdose on-for-timer 1 )
DOELSE
dann funktioniert dein wait auch.
... und so stehts auch in der Commandref
Zitat von: automatisierer am 30 Januar 2017, 11:45:50
hm... bitte immer ein list vom Device posten, keine definitionen.
Okay, ist notiert :)
Zitathab das mal umformatiert, dann siehst du, dass du bei cmd_1 quasi nur einen Ausführungsteil hast. Willst du zwei haben, dann lass die äußeren Klammern weg:
( [HM_SchluesselbrettSchalter_Btn01] =~ "^Short..to.*" ) ( set WohnzimmerSchrankLicht on-for-timer 1 ) ( set VentilatorSteckdose on-for-timer 1 )
DOELSE
dann funktioniert dein wait auch.
... und so stehts auch in der Commandref
Du hast vollkommen recht. Exakt so steht es in der Commandref und kaum mache ich es so, funktioniert es auch wie von mir gewünscht. Tausend Dank! Ich weiß nicht wie oft ich mir das Beispiel angesehen und verglichen habe. Aber das ist mir nicht aufgefallen :'(