Watchdog : Wenn Nix mehr geht !

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Benutzeravatar
funkleuchtturm
Beiträge: 2368
Registriert: 13.06.2011, 16:42
Hat sich bedankt: 23 Mal
Danksagung erhalten: 357 Mal
Kontaktdaten:

Watchdog : Wenn Nix mehr geht !

Beitrag von funkleuchtturm » 09.09.2013, 15:43

Auf meiner Homepage gibt´s hierzu evtl. weitere Informationen: http://www.stall.biz/?project=watchdog- ... -mehr-geht

Hier im Forum gab es bereits verschiedene softwareseitige Ansätze für die Realisierung eines Watchdogs. Anlass war meist ein Hängenbleiben der CCU , die durch den Watchdog wieder zum Leben erwachen soll. Der Watchdog ist also so etwas wie der Defibrillator in der Medizin. Wenn das Herz nicht oder nicht mehr richtig schlägt wird mit purer Gewalt der Herzschlag neu gestartet. Genauso ist es mit dem elektronischen Watchdog: wenn der Rechner beispielsweise eingefroren ist oder sich anderweitig "aufgehängt" hat, dann soll ein Watchdog dies möglichst erkennen und den Rechner resetten. Im "normalen" Betrieb bekommt der Watchdog vom Rechner regelmässige Signale, die ein Funktionieren signalisieren sollen. Ob die Funktion des Rechners richtig ist oder ob vieleicht schon bestimmte Dienste sich "verabschiedet" haben lässt sich dabei nur schwer erkennen. Also, um bei der Medizin zu bleiben: ein Watchdog kann nur erkennen , ob der Patient lebt ; er kann aber nicht erkennen ob der Patient gesund ist!Deshalb halte ich persönlich eigentlich vom Watchdog gar nichts, weil er oft nur eine softwareseitig oder hardwareseitig fehlerhafte Funktion oder eine insgesamt schlechte Konstruktion kaschiert.

Ein robust und fehlerarm konstruiertes System braucht keinen Watchdog!

Aber warum dann die nachfolgende Bauanleitung?
Ganz einfach, ich hatte ein relativ gut funktionierendes Homematic-System auf Basis der CCU1. Zur Zeit habe ich leider ein weniger zuverlässig funktionierendes System auf Basis der CCU2. Ein oder zwei Tage läuft es mit den auf der alten CCU1 problemlos funktionierenden und nahezu unverändert übernommenen Programmen einwandfrei, bis dann unregelmässig bestimmte Funktionen ausfallen. Bei mir ist es beispielsweise das altbekannte Tageszeit-Skript, welches nach einiger Zeit immer mal stehen bleibt. Da von dieser Funktion bei mir viele Funktionen und u.a. auch die Rolladen und Lüftungsfenster ausgelöst werden, hat dies inbesondere bei Urlaubsabwesenheit bei mir zu (gelinde gesagt) unschönen Effekten geführt. Damit wenigstens in so einer Situation das System neu gestartet wird und ich die Hoffnung haben kann , dass die Homematic danach die nächsten Stunden nicht einfriert, habe ich mir notgedrungen einen Hardware-Watchdog aufgebaut. Wenn dann hoffentlich in nächster Zeit die Software der CCU2 zufriedenstellend läuft, dann kann ich vielleicht dieses Gerätchen entsorgen.
Die Schaltung ist simpel und kann innerhalb einer Stunde leicht zusammengelötet werden.

Bild 1: Schaltplan Watchdog
schaltplan_watchdog.jpg
Die Versorgungsspannung vom Homematic-Netzteil wird über ein 5V-Relais (Ruhestellung durchgeschaltet) auf einen baugleichen Versorgungsspannungsstecker an die CCU gegeben. Nach dem Einschalten wird der 1000uF-Kondensator über den 1MOhm-Widerstand langsam aufgeladen, bis dann nach etwa 14 Minuten der FET durchschaltet und das Relais betätigt. Damit wird dann die Versorgungsspannung für die CCU kurz unterbrochen, was zu einem Hardware-Reset führt. Dieser Vorgang wird aufgehalten, solange regelmässig beispielsweise alle 10 Minuten mit dem Funk-Schaltaktor der 1000uF-Elko entladen wird. Der 22uF-Tantal-Kondensator mit dem vorgeschalteten 1MOhm-Widerstand sorgt dafür, dass die Versorgungsspannung für die CCU etwa 1 Sekunde lang unterbrochen wird. Dies reicht bei mir für einen ordentlichen Reset der CCU2.

Bild 2: Das Watchdog-Kästchen
watchdog_kaestchen.JPG

Wenn nun der Watchdog regelmässig alle 10 Minuten angestossen wird, dann läuft die CCU ganz normal weiter. Erst wenn die regelmässigen Impulse ausbleiben, wird ein Reset ausgelöst. An dem Vorhandensein dieser Impulse wird also eine ordnungsgemässe Funktion der CCU festgemacht.

Anmerkung: Wenn ein Firmware-Update erfolgt und/oder das Flash programmiert wird, muß der Watchdog abgeschaltet sein. Man kann auch mit einem Überbrückungsschalter den 1000uF-Kondensator kurzschliessen und so den Watchdog abschalten.

Ein entsprechendes Programm für das Auslösen eines regelmässigen Impulses kann im einfachsten Fall eine einfache Zeitsteuerung sein. Besser wäre aber eine Art Testprogramm, mit dem die verschiedenen Funktionen der CCU getestet würden, um erst bei richtiger Funktion den Impuls regelmässig (bei mir alle 10 Minuten) auszugeben. Ich verwende zur Zeit noch eine einfache Skript- Zeitsteuerung. Hier sind kreative Homematiker gefragt, um bessere Software zu entwickeln. Für entsprechende Anregungen wäre ich dankbar.
Wau, Wau !!
Zuletzt geändert von funkleuchtturm am 19.07.2014, 11:39, insgesamt 2-mal geändert.
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker

EnergyStar
Beiträge: 1276
Registriert: 27.07.2010, 11:38
Danksagung erhalten: 1 Mal

Re: Watchdog : Wenn Nix mehr geht !

Beitrag von EnergyStar » 09.09.2013, 16:18

Hallo,

ich glaube, das ganze geht auch ohne Lötkolben. Mit einem Zwischenstecker-Aktor sollte es auch anders gehen.

Einstellung nach Spannungswiederkehr: Einschalten
Direktverknüpfung mit einem virtuellen RF-Button der CCU. Einstellungen hierzu:
Ausschaltdauer: 1 Sekunde
Einschaltdauer: 14 Minuten

WebUI-Programm schreiben: alle 10 Minuten den virtuellen Button betätigen

Ablauf:
Wenn man den Aktor mit dem Netzteil der CCU in die Steckdose steckt, geht der Aktor an und versorgt die CCU.
Dann startet das Programm auf der CCU und schaltet alle 10 Minuten für 14 MInuten ein. Bleibt dieses einschalten aus, wird der Aktor nach 14 Minuten für eine Sekunde ausgeschaltet. Dann wird er wieder unendlich eigeschaltet. Das anlaufende WebUI-Programm begrenzt dann aber wieder auf 14 Minuten.

Ich habe mir das jetzt nur eben mal kurz überlegt. Ausgetestet habe ich es nicht. Nach meinen theoretischen Kentnissen sollte dies aber klappen.

Gruß
EnergyStar
--------------------------------------------
CCU1 mit 1.514, CUxD 0.59b, Historian V0.7.6hf1
161 Kanäle in 35 Geräten
in schrittweiser Migration auf die
CCU2 mit 2.15.5, CUxD 0.68, Historian V0.7.6hf1
254 Kanäle in 88 Geräten
gesamte Funktionalität über die
CL-Box mit homeputer CLX Ver. 4.0 Rel. 150625
Ansichten: 17, Objekte: 882, Zeilen: 19863, Variablen: 1966

Benutzeravatar
Sammy
Beiträge: 9172
Registriert: 09.09.2008, 20:47
Hat sich bedankt: 15 Mal
Danksagung erhalten: 174 Mal

Re: Watchdog : Wenn Nix mehr geht !

Beitrag von Sammy » 09.09.2013, 16:32

Hallo,

ich hatte mir das fast genau so wie EnergyStar das beschrieben hat als Signalisierung gebaut, den Reset bzw. Rettungsversuche aber noch manuell ausgeführt, um Fehler finden zu können (Es lag damals an häufigen SystemExec Aufrufen).
Ich hatte den Stecker-Schaltaktor per CCU und virtueller Taste in die Ausschaltverzögerung geschickt (mit zusätzlicher Ausschalt-Dauer), damit ich am kurzen aufblitzen der Status-LED das Hängen der CCU erkennen konnte.

Beim Zwischenstecker Schaltaktor kann man aber ja kein Verhalten für Netzspannungszufuhr konfigurieren. Deshalb müsste man sich hier zusätzlich mit dem EA4 behelfen, der den Aktor nach einem Stromausfall automatisch wieder einschaltet.

Viele Grüße,
Sammy
Links: CCU-Logik, Tipps für Anfänger, WebUI-Doku, Expertenparameter, virtuelle Aktorkanäle
Inventur vom 22.01.14: 516 Kanäle in 165 Geräten, 132 Programme, 270 Direkte Verknüpfungen
Ich übernehme für alle von mir gegebenen Hinweise, Tipps und Links keine Haftung! Das Befolgen meiner Tipps ist nur für Fachkundige gedacht und erfolgt auf eigene Gefahr!

Benutzeravatar
owagner
(verstorben)
Beiträge: 1193
Registriert: 13.05.2008, 19:49
Danksagung erhalten: 1 Mal

Re: Watchdog : Wenn Nix mehr geht !

Beitrag von owagner » 09.09.2013, 16:52

Die CCU2 hat, ebenso wie die CCU1, einen Hardware-Watchdog. Der wird mit einem Timeout von 115 Sekunden initialisiert, dann wird er von busybox bedient:

102 root watchdog -t 30 /dev/watchdog

Dies hilft natürlich nicht, wenn es "nur" auf der Applikationsschicht Probleme gibt, das Betriebssystem an sich aber grundsätzlich läuft.

Was gehen könnte:

-- ein WebUI-Programm schreiben, welches per Timer alle Minute per system.Exec() in /dev/watchdog0 reinschreibt
-- und beim Startup per bedinungslosem Programm den busybox-Watchdog wegkillen ("killall watchdog" oder so)

Viele Grüße,
Olli

Benutzeravatar
funkleuchtturm
Beiträge: 2368
Registriert: 13.06.2011, 16:42
Hat sich bedankt: 23 Mal
Danksagung erhalten: 357 Mal
Kontaktdaten:

Re: Watchdog : Wenn Nix mehr geht !

Beitrag von funkleuchtturm » 09.09.2013, 17:15

owagner hat geschrieben:Dies hilft natürlich nicht, wenn es "nur" auf der Applikationsschicht Probleme gibt, das Betriebssystem an sich aber grundsätzlich läuft.
Hallo Olli,
die Frage ist für mich unklar, ob der interne Watchdog wirklich (d.h. hardwaremässig) einen Neustart der gesamten CCU initiieren kann oder ob nur einzelne Prozesse damit überwacht werden.
Ich habe auf jeden Fall das Problem, dass häufig Anwendungsprogramme hängen und dann in der Folge auch das ganze Betriebssystem mehr oder weniger "spinnt". Insbesondere wenn ich per Fernzugang noch was machen möchte ist ein brutaler Hardware-Reset für mich die erste Wahl. Zumal ich danach zumindest über den Fernzugang wieder auf die CCU komme.
Wenn schon Watchdog, dann richtig mit Spannung weg !
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker

Benutzeravatar
owagner
(verstorben)
Beiträge: 1193
Registriert: 13.05.2008, 19:49
Danksagung erhalten: 1 Mal

Re: Watchdog : Wenn Nix mehr geht !

Beitrag von owagner » 09.09.2013, 17:23

Ja, der Watchdog ist ein eigenständiges Hardwaremodul und löst auf der CPU-Ebene einen Resetimpuls aus.

Dokumentation: Kapitel 19 in http://infocenter.arm.com/help/index.js ... dggaj.html

"Spannung weg" kann übrigens ein Schuss in den Fuß sein, wenn gerade das Flash beschrieben wird...

Benutzeravatar
funkleuchtturm
Beiträge: 2368
Registriert: 13.06.2011, 16:42
Hat sich bedankt: 23 Mal
Danksagung erhalten: 357 Mal
Kontaktdaten:

Re: Watchdog : Wenn Nix mehr geht !

Beitrag von funkleuchtturm » 09.09.2013, 18:04

owagner hat geschrieben:"Spannung weg" kann übrigens ein Schuss in den Fuß sein, wenn gerade das Flash beschrieben wird...
Aber ich denke, geflashed wird nur beim Firmware-Update, oder ??
Während so eines Updates schalte ich natürlich den Watchdog ab.
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker

hobbyquaker
Beiträge: 3978
Registriert: 12.07.2009, 20:01
Hat sich bedankt: 17 Mal
Danksagung erhalten: 176 Mal
Kontaktdaten:

Re: Watchdog : Wenn Nix mehr geht !

Beitrag von hobbyquaker » 09.09.2013, 18:26

funkleuchtturm hat geschrieben:Aber ich denke, geflashed wird nur beim Firmware-Update, oder ??
Das kann ich glaube ich verneinen. Einfach Beispiele: /var/log/messages, schreiben der homematic.regadom, ... Es gibt viele Dateien die im Betrieb beschrieben werden... In der ro-gemounteten Partition natürlich nicht, aber das sollte einen nicht in Sicherheit wiegen, ich habe schon 2x einen Raspberry genau so abgeschossen.

Benutzeravatar
funkleuchtturm
Beiträge: 2368
Registriert: 13.06.2011, 16:42
Hat sich bedankt: 23 Mal
Danksagung erhalten: 357 Mal
Kontaktdaten:

Re: Watchdog : Wenn Nix mehr geht !

Beitrag von funkleuchtturm » 09.09.2013, 18:34

funkleuchtturm hat geschrieben:Das kann ich glaube ich verneinen.
...aber der Watchdog macht doch nichts anderes, was ich auch tun müsste, wenn die CCU2 nicht mehr läuft: Spannungsstecker ziehen und damit Neustart.
Davon dürfen doch keine bleibenden Schäden entstehen!?
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker

hobbyquaker
Beiträge: 3978
Registriert: 12.07.2009, 20:01
Hat sich bedankt: 17 Mal
Danksagung erhalten: 176 Mal
Kontaktdaten:

Re: Watchdog : Wenn Nix mehr geht !

Beitrag von hobbyquaker » 09.09.2013, 19:05

Jupp, richtig, dabei gehst aber auch das gleiche Risiko ein. Das ist wohl auch der Grund warum die CCU1 Batterien hatte und die CCU2 ein Rettungssystem... Am besten wenn die CCU nicht mehr läuft per SSH einloggen und das System sauber rebooten. Oder mit der CUxD notfallkonsole den reboot auslösen. Geht natürlich nur wenn das System an sich noch läuft, aber das tut es ja üblicherweise, es crashen ja primär RegaHSS, rfd und Konsorten, das Linux an sich ist bei mir noch nie gecrashed...

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“