FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: MichaelO am 21 Juni 2021, 17:46:56

Titel: Nach x Sekunden von einem Zweig in einen anderen
Beitrag von: MichaelO am 21 Juni 2021, 17:46:56
Moin,

vielleicht denke ich zu kompliziert, aber ich bekomme es nicht innerhalb EINES DOIF hin und habe es derzeit über ein zweites quasi als Watchdog gelöst. Prinzipiell möchte ich Folgendes erreichen: Wenn das DOIF in einen cmd-Zweig a gesprungen ist, soll es nach x Sekunden in diesem Zweig in einen anderen Zweig b springen. Dieser Sprung soll natürlich nicht stattfinden, wenn innerhalb der x Sekunden einer der übrigen Zweige c etc. angesprungen wird.

Ich hatte es versucht, über ein wait im Zweig a und dann einem verzögerten set $SELF cmd_x ... aber hier wird nur der Befehlszweig von cmd_x ausgeführt und nicht wirklich der Zweig gewechselt. Zumindest steht im Reading des DOIF immer der ursprüngliche Zweig drin. Anscheinend soll auf diese Art das Modul sich selbst nicht wechseln können.

Gibt es hier eine elegante Lösung, die ich übersehen habe?

Danke
Michael
Titel: Antw:Nach x Sekunden von einem Zweig in einen anderen
Beitrag von: rabehd am 21 Juni 2021, 20:13:47
ZitatIch hatte es versucht, über ein wait im Zweig a und dann einem verzögerten set $SELF cmd_x ... aber hier wird nur der Befehlszweig von cmd_x ausgeführt und nicht wirklich der Zweig gewechselt.
Das ist völlig korrekt.
Du willst, dass er den Zweig x prüft und ausführt?
Da wäre ja wenn innerhalb der Wait-Zeit der Zweig x getriggert wird. Du musst also in der Zeit diese Bedingungen schaffen.
Man kann auch noch ein IF im Ausführungsteil einbauen, aber ich würde mal über den Anwendungsfall nachdenken.
Titel: Antw:Nach x Sekunden von einem Zweig in einen anderen
Beitrag von: Per am 02 März 2022, 11:33:41
Du kannst im Zweig y
or [$SELF:cmd] ==