FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: BerndArnold am 30 Januar 2017, 11:22:45

Titel: [Gelöst] Problem bei DOIF und Zwischenzuständen: Wait wird nicht eingehalten
Beitrag von: BerndArnold am 30 Januar 2017, 11:22:45
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):

Ich bin langsam am Verzweifeln. Irgendetwas muss ich übersehen...
Besten Dank im Voraus!

[1] https://fhem.de/commandref_DE.html#DOIF_wait
Titel: Antw:Problem bei DOIF und Zwischenzuständen: Wait wird nicht eingehalten
Beitrag von: automatisierer am 30 Januar 2017, 11:45:50
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
Titel: [Gelöst] Problem bei DOIF und Zwischenzuständen: Wait wird nicht eingehalten
Beitrag von: BerndArnold am 30 Januar 2017, 12:09:40
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 :'(