FHEM Forum

FHEM => Automatisierung => Thema gestartet von: koldomon am 01 Dezember 2013, 14:08:08

Titel: at -> notify -> modify at überpringt Ausführung
Beitrag von: koldomon am 01 Dezember 2013, 14:08:08
Hallo zusammen,

ich beobachte gerade folgendes Phänomen

ein at löst um xx:05 einen notify aus. In dem notify aktualisiere ich das Intervall des at. Der modifizierte at zeigt aber nicht die nächste (gewollte) Ausführung, sondern die übernächste.
Beispiel:
"at1" ist definiert als +*00:30 trigger nfy1
12:05 Uhr AT "at1" wird ausgelöst und ruft notify "nfy1" auf
notify "nfy1" macht ein "modify at1 +*00:10"
theoretisch sollte der "at1" jetzt "Next: 12:15" anzeigen, aber zeigt "Next: 12:25" an. Der AT überspringt quasi eine Ausführung obwohl es immer noch 12:05 Uhr ist

Was ich erreichen wollte: Der Notify soll einen Aktor einschalten und das Prüfintervall auf 10min. setzen. wird der Aktor ausgeschaltet, soll das Prüfintervall 30 min. sein.

Hab ich einen Denkfehler, Bug oder "Behavior by design"?

Danke für eure Unterstützung

Titel: Antw:at -> notify -> modify at überpringt Ausführung
Beitrag von: rudolfkoenig am 01 Dezember 2013, 16:56:21
Letzteres.

Falls at mit * definiert ist (d.h. wiederkehrende at), dann ruft es nach dem ausfuehren des zugehoerigen Befehls wieder die Funktion "define" auf, um den naechsten Zeitpunkt zu bestimmen. Damit ist ein modifizieren im ausgefuehrten Befehl sinnlos.
Titel: Antw:at -> notify -> modify at überpringt Ausführung
Beitrag von: koldomon am 01 Dezember 2013, 18:22:03
danke rudolfkönig für die Erklärung

aber, wie kann ich das sonst machen? Ich hätte gerne, dass wenn der Aktor an ist, öfter geprüft wird, ob der Status noch benötigt wird. 10min wenn an und 30 min. wenn aus. Wie macht man sowas, wenn nicht mit modify at?
Titel: Antw:at -> notify -> modify at überpringt Ausführung
Beitrag von: rudolfkoenig am 01 Dezember 2013, 22:02:25
Entweder ein at, der alle 10 minuten laeuft, und falls nicht notwendig, die pruefung nicht durchfuehrt, oder zwei ats, die je nach Zustand was machen oder nicht.
Titel: Antw:at -> notify -> modify at überpringt Ausführung
Beitrag von: koldomon am 02 Dezember 2013, 22:42:58
Hallo rudolfkönig,

danke, dann geh ich "zu Fuß"  ;)

ich hab mir über dein geschildertes Verhalten mal gedanken gemacht. Evtl. könntest du für ein Update ein Attribut vorsehen, mit dem man bestimmen kann, ob die Berechnung für die nächste Ausführung auf dem State oder auf time() basiert. Bei der Gelegenheit auch gleich ein Attribut, mit dem man das "alignTime" für jede Berechnung mit einbeziehen kann.

schönen abend

cu markus