2336806

LED-Statusanzeige mit Raspberry Pi - so geht's

23.03.2018 | 14:12 Uhr |

Der Raspberry lässt sich mit einem einfachen Erweiterungsboard als Statusanzeige für diverse Zwecke nutzen. Damit behalten Sie etwa Ihr Postfach im Blick, doch das Board eröffnet noch zahlreiche weitere Einsatzszenarien.

Ein sehr interessantes Szenario für den Raspberry Pi ist die Nutzung als visueller Statusmonitor. Auf der Website von Pi Hut bekommen Sie für den Raspberry Pi 3 oder den Raspberry Zero das „Statusboard“ für circa elf Euro inklusive Versand . Das Board für den Raspberry Pi 3 ist mit fünf wiederbeschreibbaren Streifen ausgestattet und je einer LED, die rot oder grün leuchten kann. Das Modell für den Raspberry Zero hat lediglich drei Streifen mit den Rot-Grün-LEDs.

Dieser Artikel zeigt, wie Sie die Erweiterung mit einem Raspberry 3 verbinden und das Statusboard mit konkreten Abfragen verknüpfen. So simpel diese Hardware auch ist – unsere Beispiele können die Möglichkeiten des Statusboards nur andeuten. Dank der vorhandenen Bibliotheken und Beispiele ist es recht einfach, verschiedene Status zu ermitteln und rot oder grün zu visualisieren. Eine gewisse Vertrautheit mit Script-Logik ist Voraussetzung, konkrete Python-Kenntnisse sind aber aufgrund der Onlinebeispiele nicht erforderlich.

Tipp: Einfache Raspberry-Pi-Mini-Projekte

Installation und Inbetriebnahme

Verbunden wird das Board über die GPIO-Pins des Raspberry Pi. Trennen Sie zuerst den Raspberry Pi vom Strom und stecken Sie das Statusboard auf die GPIO-Pins. Schließen Sie den Raspberry Pi dann wieder an das Netzteil an. Nachdem das Gerät neu gebootet hat, sollten Sie die neue Erweiterungsplatine testen. Dies geschieht über die Eingabe von

python3  

und den beiden folgenden zwei Python- Befehlszeilen:

from gpiozero import StatusBoard sb = StatusBoard() 

Der zweite Befehl dient nur dazu, die späteren Eingaben zu vereinfachen, da die Variable „sb“ ab sofort als Abkürzung für „StatusBoard()“ verwendet werden kann. Geben Sie nacheinander die beiden Befehle sb.on() und sb.off() ein. Diese schalten alle fünf LEDs an und wieder aus. Im zweiten Schritt können Sie noch testen, ob sich die einzelnen LEDs individuell ansteuern lassen. Das folgende Beispiel steuert die vierte LED an und lässt diese grün aufleuchten:

sb.four.lights.green.on() 

Die Bibliothek unterstützt auch das Blinken einer LED. Dies realisieren Sie über den Befehl „blink()“:

sb.two.lights.blink()  

Diese Codezeile lässt die zweite LED regelmäßig blinken. Durch die beiden Farben und den Blinkmodus sind für jede LED vier Zustände programmierbar.

Wie Sie im letzten Beispiel gesehen haben, erfolgt die Ansteuerung einer LED über die Nummerierung mit „one“, „two“ und so fort. Dies ist zwar ein recht pragmatischer Ansatz, kann aber innerhalb eines längeren Programmcodes schnell unübersichtlich werden. Deswegen sollten Sie sprechende Namen verwenden, etwa für die fünf verschiedenen Objekte, die Sie anzeigen möchten, etwa Webserver, Posteingang, Nachrichten, Wetter, Speed. Diese können Sie bereits beim Festlegen der Variable für „StatusBoard()“ eintragen und anschließend damit ansteuern:

sb = StatusBoard('webserver', 'posteingang', 'nachrichten', 'wetter', 'speed')  

Nach dieser Definition funktioniert dann ein Einschalten der ersten LED mit ihrem Namen:

sb.webserver.lights.green.on()  

Dies funktioniert allerdings nur, wenn Sie „sb“ zuvor noch nicht definiert hatten. Erscheint eine Fehlermeldung, beenden Sie die Python-Eingabe mit exit() und starten Python einfach neu.

Tipp: Cleveres Zubehör für Raspberry Pi & Odroid

Status Ihres Webservers

Das Board wird über die GPIO-Schnittstelle mit einem Raspberry Pi 3 oder Raspberry Zero verbunden.
Vergrößern Das Board wird über die GPIO-Schnittstelle mit einem Raspberry Pi 3 oder Raspberry Zero verbunden.

Auf Github gibt es eine Projektseite mit Beispielen rund um das Statusboard. Wir haben aus der Rubrik „Website-Monitor“ ein einfaches Beispiel für die Überwachung von Websites leicht angepasst. Ziel ist es hier, zwei Websites zu überwachen und zu prüfen, ob der Aufruf erfolgreich ist. Im Erfolgsfall wird die LED auf grün geschaltet, bei einem Fehler auf rot. Den Code zum ersten Script-Beispiel finden Sie im untenstehenden Kasten „Statusboard: Website-Monitor“. Zu Beginn des Scripts werden die notwendigen Bibliotheken importiert und die Funktion „website_ up()“ definiert. Die Funktion prüft, ob der Aufruf der übergebenen Website erfolgreich war. Im positiven Fall wird „ok“ zurückgegeben, ansonsten „false“. Anschließend werden die Zugriffsnamen festgelegt. Die „while“-Schleifen überprüfen die Websites. Ist der Aufruf erfolgreich, wird die grüne LED aktiviert und zur Sicherheit die rote deaktiviert. Im Falle eines misslungenen Aufrufs geschieht das Gegenteil. Die „sleep()“-Funktion bestimmt das Zeitintervall der Prüfung – hier eine Stunde durch den Wert „60*60“ (Sekunden).

Newsalarm auf dem Statusboard

Ein weiteres Szenario ist die inhaltliche Überwachung einer Website. Diese wird nach bestimmten Stichwörtern gefiltert: Wird eines gefunden, schaltet die jeweilige LED auf grün. Den Code finden Sie im Kasten „Statusboard: News-Alarm“.

Zu Beginn werden wieder die notwendigen Bibliotheken geladen. Für die Suche der Schlüsselbegriffe auf der Website wird die Funktion „in_the_news()“ verwendet. Diese lädt eine Website – im Programmcode die Seite von Fokus – und überprüft, ob der übergebene Begriff im Text der Website vorhanden ist.

Die drei Schlüsselbegriffe in unserem Beispiel werden nacheinander mit „in_the_ news()“ befragt, je nach Ergebnis wird dann die rote oder grüne LED aktiviert. Zur Sicherheit wird, da nicht klar ist, wie der Zustand der anderen LED ist, diese ausgeschaltet. Die Abfrage erfolgt im Beispiel stündlich.

Statusboard: Website-Monitor

from gpiozero import StatusBoard import requests from time import sleep def website_up(url):     try:         r = requests.get(url)         return r.ok     except:         return False sb = StatusBoard('raspberrypi', 'pcwelt') while True:     if website_up('https://www.raspberrypi.org/'):         sb.raspberrypi.lights.green.on()         sb.raspberrypi.lights.red.off()     else:         sb.raspberrypi.lights.red.on()         sb.raspberrypi.lights.green.off()     if website_up('https://www.pcwelt.de/'):         sb.pcwelt.lights.green.on()         sb.pcwelt.lights.red.off()     else:         sb.pcwelt.lights.red.on()         sb.pcwelt.lights.green.off() sleep(60*60)

Statusboard: Newsalarm

from gpiozero import StatusBoard import requests from time import sleep def in_the_news(text):     url = 'https://www.focus.de/'     r = requests.get(url)     return text in r.text while True:     if in_the_news('Bundesliga'):         sb.bundesliga.lights.red.off()         sb.bundesliga.lights.green.on()     else:         sb.bundesliga.lights.green.off()         sb.bundesliga.lights.red.on()     if in_the_news('Raspberry'):         sb.alphabet.lights.red.off()         sb.alphabet.lights.green.on()     else:         sb.alphabet.lights.green.off()         sb.alphabet.lights.red.on()     if in_the_news('Bitcoin'):         sb.alphabet.lights.red.off()         sb.alphabet.lights.green.on()     else:         sb.alphabet.lights.green.off()         sb.alphabet.lights.red.on() sleep(60*60)

PC-WELT Marktplatz

0 Kommentare zu diesem Artikel

PC-WELT Hacks - Technik zum Selbermachen?

Raspberry Pi erfreut sich gerade unter Bastlern einer großen Beliebtheit. Kein Wunder, denn mit der 35-Euro-Platine lassen sich viele spannende Projekte realisieren. Vom Mediacenter, Netzwerkspeicher, Fotomaschine bis hin zum Überwachungssystem ist alles möglich. Dieser Bereich ist aber nicht nur dem Raspberry Pi gewidmet, sondern bietet auch viele Tipps, Tricks und Anleitungen für andere spannende Bastelprojekte.

2336806