Guten Abend ! Ich werde aus den Beispielen und der CommandRef in Bezug auf mein Problem leider nicht schlau. Ich möchte folgendes erreichen:
wenn ich in einem DOIF-Zweig einen set-Befehl an meinen HM-CC-RT-DN sende geht dieser zuerst in den CMDs_pending Status, dann in den CMDs_processing Status und danach (hoffentlich) in den CMDs_done Status. Nun möchte ich im selben Zweig einen weiteren Befehl absetzen, der aber erst wenn der HM-CC-RT-DN wieder im CMDs_done-Status ist gesetzt werden soll. Wie kann ich das mit dem wait-attribut bewerkstelligen ? 120 Sekunden kann ich "schätzen", manchmal ist das zu kurz, manchmal zu lang. Daher hätte ich es gerne über den aktuellen Status getriggert...
Habt ihr bitte gute Ideen ? Danke !
Im selben Zweig geht es nur über Verzögerungen oder auf den gewünschten Status triggern im Prinzip so
(Bedingung für set Ventil) (set ...)
DOELSEIF ([Ventil] eq "done" and $cmd =1) (Befehle)
Danke. Nunja, das ist schon klar, was du da schreibst. was ich allerdings meine ist bei folgendem stück Code im DOELSEIF-Zweig::
([rg_Guest] eq "home" and [HCAutomatik] eq "on")
{Heating_Control_SetAllTemps()}
DOELSEIF ([rg_Guest] ne "home" and [HCAutomatik] eq "on")
(set HK_Vent.SO_Clima controlMode night)
{Heating_Control_SetAllTemps()}
Nachdem ich den "set HK_Vent.SO_Clima controlMode night"-Befehl abgesetzt habe möchte ich den "{Heating_Control_SetAllTemps()}" "nachschießen". Allerdings erst, nachdem der erste (set)-Befehl fertig ist, also nach dem CMDs_pending - CMDs_processing zu CMDs_done geführt hat. Die Zeiten/Dauer des "pending" und "processing" sind nicht vorhersehbar, da man ja nicht weiß, wann das Ventil "aufwacht" - im Schnitt alle 3 Minuten, aber beim Absetzen des "set" weiß man ja nicht wo man im 3-Minuten-Intervall (Anfang/Mitte/Ende) man gerade ist. Daher hab ich es mit einem
attr HomeState wait 0:0,120
gelöst - und das scheint mir nicht sehr elegant ...
Dann könntest Du statt {Heating_Control_SetAllTemps()}
diesen Funktionsaufruf in ein at packen, dass sich alle x Sekunden selbst erneuert bis CMDs_done und dann nur den Funktionsaufruf ausführt.