Raspberry Pi und USB-LED blink(1): User-Login-Status anzeigen
Der blink(1) eignet sich hervorragend, um einen Status oder Zustand anzuzeigen. Interessant ist zum Beispiel der Login-Status eines Benutzers. Also, ob er eingeloggt bzw. angemeldet oder ob er ausgeloggt bzw. abgemeldet ist.
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 Login-Zustand des Benutzers "pi". Selbstverständlich kann auch jeder andere Benutzer geprüft werden.
Im Prinzip wollen wir wissen, ist ein Benutzer eingeloggt ist, oder nicht. Hierfür brauchen wir also ein Kommando, mit dem wir eine einfache Frage mit Ja oder Nein beantwortet bekommen.
Ob ein Benutzer eingeloggt ist, können wir mit folgenden Kommandos prüfen:
w who -a users
Am ehesten kommt das Kommando "users" in Frage. Es ist eine String mit allen angemeldeten Benutzernamen.
Interessant ist für uns, ob der Benutzer eingeloggt ist. Wenn das der Fall ist, dann lassen wir blink(1) dauerhaft grün leuchten.
blink1-tool --green -q
Wenn der Benutzer nicht eingeloggt ist, dann lassen wir blink(1) dauerhaft rot leuchten.
blink1-tool --red -q
Script: Eingeloggte User 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/checkuser.sh
Dann in die noch leere Datei folgende Zeilen kopieren:
#!/bin/bash userlist=$(/usr/bin/users) for u in $userlist; do if [ "$u" == "pi" ]; then #echo -e "login" /usr/local/bin/blink1-tool --green -q exit 0 fi done #echo -e "logout" /usr/local/bin/blink1-tool --red -q
Datei speichern, schließen, ausführbar machen und anschließend testen.
chmod +x /home/pi/checkuser.sh /home/pi/checkuser.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/checkuser.sh >/dev/null 2>&1
Die Datei "checkuser.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 leuchten. Nachdem der Benutzer "pi" eingeloggt wurde, sollte nach ein paar Minuten der blink(1) grün 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 "users" und "blink1-tool" in den absoluten Pfaden befinden. Prüfen kann man das mit "which users" 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): Service-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.