FHEM hang recovery

Begonnen von connormcl, 13 Oktober 2019, 16:59:40

Vorheriges Thema - Nächstes Thema

connormcl

Hallo Zusammen,

manche ?ältere? Module können ja FHEM soweit zum Hängen bringen, dass man es hart abschiessen muss.

Bei mir verursachen das aktuell noch meine JeeLinks. Das sind original JeeLink Classic mit den mit FHEM mitgelieferten Sketches für EC3000/Energiemessung und Lacrosse/Thermometer.
Alle zwei bis drei Monate hängt sich in einem der JeeLinks entweder das Funkmodul auf, (RFM hang detected) oder es geht einer vom Bus und disconnected via ser2net.

Nachdem das passiert ist, hängt FHEM fast komplett...das Webinterface lässt sich nicht mehr aufrufen und notify/at funktioniert nicht mehr bzw. es wird auch auf keinerlei Funk-Signale mehr reagiert.

Das Log wird jedoch weitergeschrieben und HMCCU scheint noch rudimentär zu laufen und schreibt den Status ins Log.

Das sieht dann z.B. so aus:

Zitat
2019.04.01 09:42:01 1: 192.168.3.22:10007 disconnected, waiting to reappear (JeeLinkT1)
2019.04.01 09:42:23 3: CCURPC: CB2001 Received 500 events from CCU since last check
2019.04.01 10:21:29 3: CCURPC: CB2001 Received 500 events from CCU since last check
2019.04.01 11:02:47 3: CCURPC: CB2001 Received 500 events from CCU since last check
2019.04.01 11:45:11 3: CCURPC: CB2001 Received 500 events from CCU since last check
2019.04.01 12:24:06 3: CCURPC: CB2001 Received 500 events from CCU since last check
2019.04.01 13:04:11 3: CCURPC: CB2001 Received 500 events from CCU since last check
2019.04.01 13:44:35 3: CCURPC: CB2001 Received 500 events from CCU since last check

FHEM ist nur per kill -9 abzuschiessen und die JeeLinks müssen vor FHEM-Neustart einmal hart vom Strom getrennt werden, damit alles wieder läuft.
Da ich recht viele Thermometer und Energiemesser einsetze, will ich vermeiden, andere Hardware anzuschaffen.

Deshalb kam mir schon seit längerem die Idee, die JeeLinks in eine andere FHEM-Instanz auszulagern und dann per FHEM2FHEM zu kapseln, damit der Haupt-FHEM nicht in die Knie geht, wenn ein Fehler auftritt... das erschien mir aber bisher zu aufwändig.


Die Fehler werden aber alle  im Log von FHEM noch sichtbar und sind mir dem Wortlaut nach bekannt.

Also könnte ich ein Shell-Skript schreiben:

- Logfiles nach Auftreten eines bekannten Fehlers überwachen
- FHEM per kill -9 abschiessen
- je nach aufgetretenem Fehler die fhem.cfg austauschen oder modifizieren...also die JeeLinks deaktivieren.
- FHEM mit der neuen fhem.cfg wieder anstarten
- E-Mail schicken, dass der FHEM-Notbetrieb aktiv ist

Deshalb wollte ich fragen, ob es diesen Mechanismus in FHEM schon gibt (watchdog? Funktioniert der aber noch wenn FHEM hängt) oder ob jemand etwas entsprechendes umgesetzt hat?

rudolfkoenig

Das watchdog FHEM Modul benoetigt eine nicht blockierte FHEM Umgebung.

connormcl

Ok, ich höre da heraus, dass sich FHEM selbst in dem Zustand auf keine Weise heilen kann?

Hat vielleicht schon jemand etwas geschrieben, dass das von aussen erledigt?