FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: tfriedrich85 am 13 August 2021, 10:06:44

Titel: [gelöst] - DOIF für Fhem Neustart
Beitrag von: tfriedrich85 am 13 August 2021, 10:06:44
Hallo Leute,
ich habe ein DOIF Problem, das Ziel ist Fhem ungefähr alle 2 Tage neuzustarten, sobald keiner zu Hause ist.
Hintergrund: Die Sonos-Integration in Fhem hat ungefähr alle 2 Tage einen Bug und findet die Lautsprecher nicht mehr. 2021.08.12 15:24:51 5: SONOS0: Player: Sonos_Buero ~ Slaves: [][/i]
Der Workaround ist jetzt, das ich über das Modul Systemmonitor schaue wie lange Fhem schon läuft und wenn die Zeit erreicht ist UND niemand zu Hause ist, soll ein Neustart durchgeführt werden.
Das funktioniert auch. Aber das Reading "fhemuptime" wird nach dem Neustart nicht sofort auf 0 gesetzt und damit befindet sich das System in einer endlos Schleife.

Wie könnte ich das lösen? Kann man Device nach dem Neustart sofort zum Update zwingen? Was sind eure Ideen?

 
Internals:
   DEF        ([06:30] and [Bewohner] eq "home" ) (set Master on)
DOELSEIF ([Bewohner] eq "home" and [Master] eq "off" ) (set Master on)
DOELSEIF ([Bewohner] eq "home" and [FritzBox:wlan] eq "off" and [Sleepmode] eq "off") (set FritzBox wlan on)
DOELSEIF ([Bewohner] eq "absent" and [Master] eq "on" ) (sleep 6 ;set Master off)
DOELSEIF ([Bewohner] eq "absent" and [sysmon:fhemuptime] > 172800 ) (set mybot message geplanter Neustart! ; sleep 90;shutdown restart)
DOELSEIF ([Bewohner] eq "absent" and [E3b.4:"^on$"] ) (set mybot message Vorsicht! Jemand befindet sich in der Wohnung! Obwohl von uns keiner da ist.)
DOELSE ()
   FUUID      6102fb6a-f33f-aed9-a69d-8ff4270bcf2e32d8
   MODEL      FHEM
   NAME       Wohnung_AnAus
   NOTIFYDEV  FritzBox,sysmon,Bewohner,E3b.4,Sleepmode,Master,global
   NR         1437
   NTFY_ORDER 50-Wohnung_AnAus
   STATE      cmd_7
   TYPE       DOIF
   VERSION    24755 2021-07-15 16:40:59
   Helper:
     DBLOG:
       state:
         logdb:
           TIME       1628834614.90172
           VALUE      checkall
   READINGS:
     2021-08-13 09:52:49   Device          Bewohner
     2021-08-13 08:03:11   cmd             7
     2021-08-13 08:03:11   cmd_event       sysmon
     2021-08-13 08:03:11   cmd_nr          7
     2021-08-13 09:52:49   e_Bewohner_STATE home
     2021-08-13 09:43:33   e_E3b.4_events  off
     2021-08-13 09:52:11   e_sysmon_fhemuptime 66713
     2021-08-13 08:03:08   mode            enabled
     2021-08-13 08:03:11   state           cmd_7
     2021-08-13 08:03:08   timer_01_c01    14.08.2021 06:30:00

Danke.
Titel: Antw:DOIF für Fhem Neustart
Beitrag von: steffen83 am 13 August 2021, 10:12:49
Schau mal bei doif gibt es auch ein wait das könnte ich mir damit vorstellen
Titel: Antw:DOIF für Fhem Neustart
Beitrag von: tfriedrich85 am 13 August 2021, 10:27:33
Zitat von: steffen83 am 13 August 2021, 10:12:49
Schau mal bei doif gibt es auch ein wait das könnte ich mir damit vorstellen
Danke Steffen, ja, das könnte funktionieren.

wait
0:0:0:0:60:0:0

ich probiere das mal aus, sobald keiner zu Hause ist. Danke
Titel: Antw:DOIF für Fhem Neustart
Beitrag von: Frank_Huber am 13 August 2021, 10:59:43
Das WAIT verzögert den Neustart,
Es gibt aber auch ein "waitsame" oder "repeatsame"

schau mal in die CRef vom DOIF, da findest es.
Titel: Antw:DOIF für Fhem Neustart
Beitrag von: tfriedrich85 am 13 August 2021, 16:00:51
Zitat von: steffen83 am 13 August 2021, 10:12:49
Schau mal bei doif gibt es auch ein wait das könnte ich mir damit vorstellen

Danke für die Hinweise, ich hab bisher mit dem wait die besten Ergebnisse erzielt.
Erklärung aus der CommandRef:
wait
Das Attribut verzögert die Befehlsausführung, nach wahr werden einer Bedingung.
Laufende Wait-Timer werden bei einem eingeleiteten Statuswechsel des DOIF abgebrochen, daher werden die zu verzögernden Befehle nicht mehr ausgeführt.

Das heißt, selbst nach dem ersten Neustart. Wird im DOIF die Bedingung zum Neustart "Wahr" allerdings verursacht das wait ein warten von 1 Minute und diese Zeit genügt, damit das Sysmon Device die "fhemuptime" aktualisiert hat. Wie oben beschrieben wird in diesem Fall des Statuswechsels der Befehl abgebrochen.

Zitat von: Frank_Huber am 13 August 2021, 10:59:43
Das WAIT verzögert den Neustart,
Es gibt aber auch ein "waitsame" oder "repeatsame"

schau mal in die CRef vom DOIF, da findest es.
Sowohl waitsame und repeatsame werden beim Neustart neu initalisiert und verhindern einen weiteren Neustart nicht.