DOIF Waittimer überdauert keinen Reboot

Begonnen von Loredo, 19 Februar 2016, 09:20:54

Vorheriges Thema - Nächstes Thema

Per

Problematischer finde ich die Tatsache, dass Abfolgen unterbrochen und dadurch völlig falsche Ergebnisse kommen können. Nämlich wenn Ereignisse während des Reboots eintreffen und nicht ausgewertet (Abbruch wait) oder der Wait im Reboot zu Ende wäre (soll das dann bei Neustart ignoriert oder nachgeholt werden?).

Damian

Zitat von: Per am 18 Juni 2018, 12:59:05
Problematischer finde ich die Tatsache, dass Abfolgen unterbrochen und dadurch völlig falsche Ergebnisse kommen können. Nämlich wenn Ereignisse während des Reboots eintreffen und nicht ausgewertet (Abbruch wait) oder der Wait im Reboot zu Ende wäre (soll das dann bei Neustart ignoriert oder nachgeholt werden?).

Tja, das ist aber nichts anderes, was immer passieren kann, wenn ein Programm oder App  gekillt wird. Diesen Fall sollte jeder Programmierer vor Augen haben und sich überlegen, was nach dem Neustart im Programm passiert.

Nach dem späteren Neustart zu versuchen irgendwelche Aktionen nachzuholen, dürfte genauso oft nicht sinnvoll sein, z. B. einen Rollladen herunterzufahren, weil die Sonne schien, macht in der Nacht, wenn das System wieder hochgefahren wird, nicht mehr viel Sinn.

Ich benutze das initialize-Attribut, um in kritischen Fällen nach dem Neustart den aktuellen Zustand/Befehlsausführung im DOIF zu provozieren. Ggf. kann auch

attr di_test startup set $SELF checkall

sinnvoll sein.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ellert

Mit DOIFtools kann man die laufenden Waittimer anzeigen und den Neustart entsprechend durchführen. Damit lässt sich sie Problematik der abgebrochenen Timer entschärfen.
https://wiki.fhem.de/wiki/DOIFtools#Laufende_Wait-Timer_anzeigen

DanielGab



Zitat von: Ellert am 20 Juni 2018, 05:57:27
Mit DOIFtools kann man die laufenden Waittimer anzeigen und den Neustart entsprechend durchführen.

Das hatte ich auch schon überlegt... kann ich den denn auch triggern?

z. B.
[DOIFtools:get runningTimerInDOIF] eq "No running wait_timer found.*."

bzw gibt es ein Reading dazu?

Ellert

#19
Zitat von: DanielGab am 20 Juni 2018, 14:09:09

Das hatte ich auch schon überlegt... kann ich den denn auch triggern?

z. B.
[DOIFtools:get runningTimerInDOIF] eq "No running wait_timer found.*."

bzw gibt es ein Reading dazu?
Es gibt kein Reading, Du kannst den Rückgabewert abfragen, das triggert aber nicht
{my $ret = fhem "get DOIFtools runningTimerInDOIF",1;;$ret =~  "No running wait_timer"}