Raspberry Pi und USB-LED blink(1): Service-Status anzeigen

Der blink(1) eignet sich hervorragend, um einen Status oder Zustand anzuzeigen. Interessant ist zum Beispiel ein Service-Status. Also, ob Service oder Dienst gestartet oder nicht gestartet ist. Oder anders ausgedrück, ob er läuft oder nicht.

Was ist das blink(1)?

Raspberry Pi: USB-LED blink(1) von ThingM

blink(1) von ThingM ist ein USB-Stick mit einer RGB-Leuchtdiode, die man per Software steuern kann. Dabei kann blink(1) jede RGB-Farbe annehmen und benutzerdefiniert blinken, blitzen oder einfach nur dauerhaft leuchten. Interessant ist das für jede Art von Status-Anzeige, ohne Elektronik- oder andere Hardware-Basteleien.

Voraussetzungen

Damit dieses Beispiel funktioniert, wird vorausgesetzt, dass blink(1) und blink1-tool vollständig installiert und eingerichtet sind.

Funktionen im Detail

Zuerst ist zu klären, welche Informationen wir brauchen und wie wir sie bekommen. Außerdem definieren wir, wie blink(1) angesteuert werden soll. Exemplarisch testen wir die Funktionen am SSH-Server. Selbstverständlich kann auch jeder andere Service oder Daemon geprüft werden.

Wir möchten den Service-Status abfragen. Im Prinzip wollen wir wissen, läuft ein Service oder läuft er nicht. Wir brauchen also ein Kommando, mit dem wir eine einfache Frage mit Ja oder Nein beantwortet bekommen.

Den Service-Status des SSH-Servers bekommen wir über folgendes Kommando:

systemctl status ssh

Das ist uns aber zu ausführlich. Wir brauchen eine einfachere Information.

systemctl is-active ssh

Das Ergebnis kann "active", "inactive" oder "unknown" sein. Interessant ist für uns der Status "active". Wenn das der Fall ist, dann lassen wir blink(1) dauerhaft grün leuchten.

blink1-tool --green -q

Wenn der Status "inactive" ist, dann lassen wir blink(1) dauerhaft rot leuchten.

blink1-tool --red -q

Wenn der Status ein anderer sein sollte, z. B. "unknown", dann lassen wir blink(1) dauerhaft gelb leuchten.

blink1-tool --yellow -q

Und somit haben wir alle Funktionen definiert und müssen sie nur noch in ein Script gießen.

Script: Service-Status abfragen und USB-LED blink(1) ansteuern

Wir legen zuerst eine Script-Datei an. Hier wählen wir als Speicherort das Home-Verzeichnis des Benutzers "pi". Wir wählen das deshalb, weil keine der Funktionen Root-Rechte brauchen.

nano /home/pi/checkservice.sh

Dann in die noch leere Datei folgende Zeilen kopieren:

#!/bin/bash

test=$(/bin/systemctl is-active ssh)

if [ "$test" == "active" ]; then
  #echo -e "active"
  /usr/local/bin/blink1-tool --green -q
elif [ "$test" == "inactive" ]; then
  #echo -e "inactive"
  /usr/local/bin/blink1-tool --red -q
else
  #echo -e "unknown"
  /usr/local/bin/blink1-tool --yellow -q
fi

Datei speichern, schließen, ausführbar machen und anschließend testen.

chmod +x /home/pi/checkservice.sh
/home/pi/checkservice.sh

Wenn das Script funktioniert, kann man anschließend einen Cronjob zum regelmäßigen Ausführen anlegen.

Cronjob anlegen

Dann legen wir einen Cronjob in der Benutzer-Crontab an.

crontab -e

Hier tragen wir folgende Zeile ein:

*/5 * * * * /home/pi/checkservice.sh >/dev/null 2>&1

Die Datei "checkservice.sh" wird alle 5 Minuten ausgeführt. Eventuelle Script-Ausgaben werden ins Nirvana umgeleitet. Es kommt also nirgendwo eine Rückmeldung. Deshalb setzen wir voraus, dass das Script funktioniert.

Die Datei speichern, schließen, abwarten und Tee trinken. Nach ein paar Minuten sollte der blink(1) rot oder grün leuchten. Abhängig davon, ob der gewählte Service läuft oder nicht. In einem eher unwahrscheinlichen Fall würder der blink(1) gelb leuchten.

Troubleshooting

Was, wenn irgendwas nicht funktioniert? Es gibt zwei Knackpunkte. Einmal betrifft es das Script und der andere ist der Cronjob. Stellen Sie sicher, dass Sie keinen Tippfehler gemacht haben.

Stellen Sie sicher, dass sich die Programme "systemctl" und "blink1-tool" in den absoluten Pfaden befinden. Prüfen kann man das mit "which systemctl" und "which blink1-tool". Gegebenenfalls passen Sie die Pfade im Script an.

Weitere verwandte Themen:

Hardware-nahes Programmieren mit dem Raspberry Pi, Python und GPIO Zero

Elektronik-Set Raspberry Pi Edition

Das "Elektronik-Set Raspberry Pi Edition" ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit Python und GPIO Zero.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Verschiedene Zustände auswerten und anzeigen lassen
  • LED mit Taster einschalten und ausschalten
  • Relais-Board steuern
  • LED, Relais-Board und Motor über ULN2003A steuern
  • Ampel- und Lauflicht-Steuerung
  • Herunterfahren per Taster
  • Reaktionsspiel mit Tastern und LEDs
  • Eigene Steuerungen programmieren

Elektronik-Set jetzt bestellen

Frag Elektronik-Kompendium.de

Elektronik-Set Raspberry Pi Edition
Elektronik-Set Raspberry Pi Edition

Elektronik erleben mit dem Raspberry Pi mit Python und GPIO Zero

  • Leichter Einstieg ins Hardware-nahe Programmieren mit Python und GPIO Zero
  • Experimentieren und Programmieren ohne Vorkenntnisse
  • Sofort Loslegen mit All-in-one-Set

Elektronik-Set jetzt bestellen

Elektronik-Fibel

Elektronik einfach und leicht verständlich

Die Elektronik-Fibel ist ein Buch über die Grundlagen der Elektronik, Bauelemente, Schaltungstechnik und Digitaltechnik.

Das will ich haben!