Hallo,
ich möchte gern folgendes realisieren und habe gerade eine Knoten im Kopf ob das mit DOIF auch geht (was ich bevorzugen würde) oder ob ich mit notify und/oder watchdog arbeiten "muss".
Wenn es zwischen 21 Uhr und 0 Uhr ist und der Songs Player im Schlafzimmer im Status Playing, dann soll ein Bewohner:
- auf "gotosleep" geschaltet werden
ist der Status nach 60 Minuten weiterhin "Playing" und der Bewohner bereits "gotosleep" dann soll der Status auf "asleep" gehen. Wenn der Status auf asleep ist und der Songs Player stoppt soll aber weiterhin asleep bestehen bleiben.
Ich habe mir das ungefähr so vorgestellt aber hoffe das geht eleganter:
DOIF ([?21:00-00:00] and [Sonos.SZI:transportState] eq "PLAYING") (set rr_Bewohner gotosleep) DOELSEIF ([21:30-00:00] and [?rr_Bewohner:state] eq "gotosleep" and [?Sonos.SZI:transportState] eq "PLAYING") (set rr_Bewohner asleep)
Was mir an der Lösung (bisher ungetestet) missfällt ist die versetzte Zeitangabe, das hätte ich gern etwas eleganter, so nach dem Motto, wenn erst um 22 Uhr der DOIF TRUE ist, dann soll erst um 22:30 Uhr der DOELSEIF in CMD2 aktiv werden. Geht das irgendwie ohne Dummy oder muss ich dafür auch wieder Dummies "missbrauchen" nur um eine Zeit zu speichern?
Oder wäre ein watchdog viellicht doch die bessere Lösung? Hat so etwas schon einmal jemand gelöst, zuverlässig?
Hallo,
sieh dir mal das wait-Attribut vom DOIF an.
Ronny
Zitat von: RoBra81 am 06 April 2015, 00:29:04
sieh dir mal das wait-Attribut vom DOIF an.
Das heißt ich definiere das 2. Kommando auch ab 21 Uhr, aber mit einem "wait" mit 30 Minuten Verzögerung? Dann muss es aber sofort wie Kommando 1 auslösen, sonst klappt das ja nicht, oder?
Zitat von: rretsiem am 06 April 2015, 22:39:01
Das heißt ich definiere das 2. Kommando auch ab 21 Uhr, aber mit einem "wait" mit 30 Minuten Verzögerung? Dann muss es aber sofort wie Kommando 1 auslösen, sonst klappt das ja nicht, oder?
So könnte es gehen (ungetestet):
DOIF ([?21:00-00:00] and [Sonos.SZI:transportState] eq "PLAYING")
(set rr_Bewohner gotosleep)
DOELSEIF ([?rr_Bewohner:state] eq "gotosleep" and [?Sonos.SZI:transportState] eq "PLAYING")
(set rr_Bewohner asleep)
attr myDOIF wait 0:3600
Der 1. Befehl wird ohne Verzögerung ausgeführt, der 2. nach 3600 sec.
Gruss
flurin