Forum: Mikrocontroller und Digitale Elektronik Raspi: Watchdog per Python-Skript triggern


von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Ich verwende einen Raspberry B+ als Treiber für eine LED-Matrixanzeige. 
Dazu läuft ein Python-Skript, was die darzustellenden Daten per UDP 
entgegennimmt und mittels der Adafruit-Lib und dem RGB-LED-HAT-Modul auf 
die Anzeige bring. Das funktioniert im Testbetrieb bisher gut.

Für den ernsthaften Einsatz hätte ich doch gerne den eingebauten 
Hardware-Watchdog des Raspi genutzt, allerdings ergeben sich da ein par 
Probleme oder es sind einfach nur Wissenslücken meinerseits.

In den Beschreibungen zur Einrichtung und Verwendung des Watchdog habe 
ich zwei Dinge verstanden: 1. muss die Hardware "eingeschaltet" werden 
und 2. wird ein Daemon installiert, der den Watchdog normalerweise 
periodisch davon abhält, einen Reset auszuführen. Hängt das System, 
kommen diese Impulse nicht und der Watchdog schlägt zu - soweit klar.

Nun habe ich aber eher Sorge, dass mein Python-Skript mal irgendwie 
hängenbleibt oder sich unvorhergesehen beendet, als das das gesamte 
System hängt.

Eine Idee wäre es, dieses "Wachhalten" des Watchdog vom ohnehin zyklisch 
laufenden Python-Skript zu leisten, statt den Daemon auf Systemebene zu 
installieren. Nur, ist dieser Fall überhaupt "vorgesehen"? Gibts einen 
passenden Befehl in Python dazu, oder funktioniert das wenigstens mit 
os.system(...)?

Allerdings ist das wahrscheinlich sowieso nicht sinnvoll, weil es dann 
nicht mehr möglich wäre, irgendwas an dem Python-Skript zu machen, weil 
ja sofort der Watchdog zuschlägt. Könnte man dessen Wirken vom 
eingelogten User abhängig machen? Fragen über Fragen ... Danke für Tips.

von Sven B. (scummos)


Lesenswert?

Ich kenn' mich damit leider nicht aus, aber üblicherweise kommuniziert 
man mit dem Linux-Kernel (und damit mit der Hardware) entweder über die 
Linux-Kernel-API-Funktionen oder über die /dev-Schnittstelle der 
Treiber. Vielleicht hilft dir das hier in die richtige Richtung weiter: 
https://www.kernel.org/doc/Documentation/watchdog/watchdog-api.txt

Um unerwünschte Resets zu vermeiden nur weil dein Skript mal was macht 
würde ich halt mal abschätzen, wie lange das normalerweise so arbeitet, 
dann da einen Margin draufschlagen und dann den Timeout auf 2 Sekunden 
oder was auch immer konfigurieren.

: Bearbeitet durch User
von Rolf M. (rmagnus)


Lesenswert?

Frank E. schrieb:
> Nun habe ich aber eher Sorge, dass mein Python-Skript mal irgendwie
> hängenbleibt oder sich unvorhergesehen beendet, als das das gesamte
> System hängt.

Und du willst, daß das gesamte System einem harten Reset unterzogen wird 
und dann neu bootet, nur weil dein Skript hängt? Ich würde für das 
Skript eine eigene Überwachung machen, die rein in der Software läuft.

> Eine Idee wäre es, dieses "Wachhalten" des Watchdog vom ohnehin zyklisch
> laufenden Python-Skript zu leisten, statt den Daemon auf Systemebene zu
> installieren. Nur, ist dieser Fall überhaupt "vorgesehen"? Gibts einen
> passenden Befehl in Python dazu, oder funktioniert das wenigstens mit
> os.system(...)?

Schau dir einfach den Sourcecode des Daemons an.
Hier findet man auch ein bischen Info darüber:
http://www.gieseke-buch.de/raspberrypi/eingebauten-hardware-watchdog-zur-ueberwachung-nutzen

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Rolf M. schrieb:
> Frank E. schrieb:
>> Nun habe ich aber eher Sorge, dass mein Python-Skript mal irgendwie
>> hängenbleibt oder sich unvorhergesehen beendet, als das das gesamte
>> System hängt.
>
> Und du willst, daß das gesamte System einem harten Reset unterzogen wird
> und dann neu bootet, nur weil dein Skript hängt? Ich würde für das
> Skript eine eigene Überwachung machen, die rein in der Software läuft.

Ja, das ist kein Problem, das Skript abzuarbeiten ist die einzige 
Aufgabe des Raspi - und das startet automatisch.
Ausserdem bin ich in Sachen Linux und Python rel. neu und habe leider 
nicht die Zeit noch 'n halbes Jahr zu lernen, um die optimale und 
stilistisch sauberste Variante zu ermitteln - kann man später immer noch 
ändern. Zur Zeit gilt: Hauptsache es geht (irgendwie) ...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.