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)?
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:
- Raspberry Pi: USB-LED blink(1) von ThingM
- Raspberry Pi und USB-LED blink(1): Blink- und Blitz-Licht
- Raspberry Pi und USB-LED blink(1): RGB-Farben
- Raspberry Pi und USB-LED blink(1): User-Login-Status anzeigen
Hardware-nahes Programmieren mit dem Raspberry Pi, Python und GPIO Zero
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
Teilen:
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-Fibel
Elektronik einfach und leicht verständlich
Die Elektronik-Fibel ist ein Buch über die Grundlagen der Elektronik, Bauelemente, Schaltungstechnik und Digitaltechnik.