Nachdem nun einige Zeit vergangen ist, hat sich ergeben, dass auf meinem Raspberry das Programm rtl_433 in unregelmäßigen Abständen aufhört zu arbeiten und so nun keine Daten mehr an den MQTT Broker weitergibt. 

Dies ist die Zeile in einer Skript-Datei ~/monitor-rtl_433.sh, mit der mein RTL-SDR-Stick aufgerufen wird:

rtl_433 -R 10 -F json | mosquitto_pub -h <broker.adresse.com> -t <Datenverzeichnis auf Broker> -l

Der Einsatz von supervisord, ein Dienst, der im Hintergrund Programme auf seine Lauffähigkeit prüft und ggfls. neu startet, hat bislang nicht ausgereicht, um die beiden Programme, die mit dem Pipezeichen verbunden sind so zu behandeln, dass alles wieder frisch startet nach einem Absturz.

Warum rtl_433 abstürzt kann mehrere Gründe haben. Da wird zum einen davon berichtet, dass der Stick zu warm wird, oder die Installation falsch war. Bei mir könnte es sein, dass ein permanenter Speichermangel auf meinem Raspberry Pi 2 (!) herrscht und ein „out of memory“ dazu führt nur das rtl_433 zu beenden, nicht aber den MQTT-Befehl.

In der Datei /etc/supervisor/supervisor.conf findet man bei mir folgenden Eintrag:

[program:rtl_433]
command=/home/pi/monitor-rtl_433.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/rtl433.err.log
stdout_logfile=/var/log/rtl433.out.log

Der Vorteil ist, dass der RTL-Stick automatisch wieder gestartet wird, wenn er einmal entfernt und wieder eingesteckt wurde. Jedoch wird das Programm nach Teilabsturz nicht wieder gestartet.

Abhilfe habe ich mir geschaffen, indem ich mit sudo crontab -e ein weiteres Skript jede Stunde einmal ausführe (das reicht bei mir aus), um die gestarteten Dienste zu beenden.

In der Datei /home/pi/rtl-433-stop.sh steht dann:

killall -s 9 monitor-rtl_433.sh
killall -s 9 rtl_433
killall -s 9 mosquitto_pub

Und der Inhalt der Crondatei:

20 */1 * * * /home/pi/rtl-433-stop.sh

 

Ich weiß, das geht sicher auch anders. Mir ist dazu aber nichts besseres eingefallen. Vielleicht hat ja noch jemand eine Idee?

HAM oddities
HF-Sampler mit 40dB Abschwächung

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.