Mit einem einfachen Bilderrahmen und wenigen LEDs kann man mit einem Raspberry Pi eine ganz einfache Status-Anzeige für das Smart-Home selber bauen – ganz ohne Löten oder viel Elektronik-Kenntnisse: Insgesamt belaufen sich die Kosten für die Smart Home Anzeige auf etwa 10 EUR. Die LEDs lassen sich einzeln ansprechen und können dann verschiedene Zustände anzeigen: Zum Beispiel, ob die Fenster alle geschlossen sind. Wie das aussieht, zeigen wir hier im Video.
Als Grundlage für die Anzeige haben wir einen einfachen Bilderrahmen gewählt, zum Beispiel den IKEA “Fiskbo”: Dieser kostet unter einem Euro und kann sowohl aufgestellt, als auch aufgehängt werden. Zusätzlich ist er sehr dünn und schlicht und sieht daher recht elegant aus.
In die dunkle Pappe des Bilderrahmens lassen sich mit einem spitzen Gegenstand (breite Nadel, sehr dünner Bohrer) kleine Löcher bohren, durch die die Köpfe der LEDs später gesteckt werden. Anschließend erstellt man ein Bild für die Vorderseite: So sieht man die LEDs nicht mehr, erst wenn sie angeschaltet werden, leuchten sie durch das Bild hindurch:
Das Bild erstellt man mit einem Zeichen-Programm (zum Beispiel dem kostenlosen Paint.NET), den Text platziert man an den Stellen passend zu den LEDs. Dazu druckt man das Bild am besten zweimal aus und nimmt die erste Version als Schablone zum Bohren der kleinen Löcher. Nachdem man die LEDs durch die Löcher in der Pappe des Bilderrahmens gesteckt hat, kann man sie mit Kleber oder einer Heißklebepistole fixieren.
Anschließend müssen sie noch mit dem Raspberry Pi verbunden und so mit Strom versorgt werden: Das längere “Beinchen” einer LED muss dabei mit dem Plus-Anschluss verbunden werden, dazu nehmen wir für die sechs LEDs in unserem Beispiel die GPIO Ports 29, 31, 33, 35, 37 und 40: Die längeren “Beinchen” der LEDs werden direkt mit einem (roten) Jumper-Kabel an diesen Ports angeschlossen.
Tipp: Mehr zum Anschluss einer LED an den Raspberry Pi + Software zum Ansteuern
Die kürzeren “Beinchen” kommen (in unserem Bild mit schwarzem/braunem Kabel) an die GND-Ports des Raspberry: Entweder wird jede LED an einen eigenen GND Port angeschlossen (in unserer Übersicht der GPIO-Belegung die schwarzen Punkte), oder wie in unserem Beispiel mit einem Breadboard kombiniert an die beiden Ports 34 und 39.
Wichtig ist aber, dass zwischen den Minus-Pol der LED und den Raspberry ein Widerstand eingebaut wird: Die passenden Widerstände bekommt man zusammen mit den LEDs im Elektronik-Fachgeschäft. Wir haben uns für einen 330 Ohm Widerstand und spezielle Mini-LEDs entschieden, da der Bilderrahmen nicht sehr tief ist und direkt an der Wand aufliegen soll.
Python Programm: LEDs testen
Mit einem einfachen Python-Programm lassen sich die LEDs jetzt testen: Dazu startet man zunächst einen Editor wie zum Beispiel nano und erstellt eine neue Datei – zum Beispiel:
nano bilderrahmen.py
Mit diesem Code leuchten die Lampen alle für 10 Sekunden, da die einzelnen GPIO Ports des Raspberry aktiviert werden:
import RPi.GPIO as GPIO
import time
import datetime
import os
GPIO.setmode(GPIO.BOARD)
GPIO.setup(29,GPIO.OUT)
GPIO.setup(31,GPIO.OUT)
GPIO.setup(33,GPIO.OUT)
GPIO.setup(35,GPIO.OUT)
GPIO.setup(37,GPIO.OUT)
GPIO.setup(40,GPIO.OUT)
GPIO.output(29,GPIO.HIGH)
GPIO.output(31,GPIO.HIGH)
GPIO.output(33,GPIO.HIGH)
GPIO.output(35,GPIO.HIGH)
GPIO.output(37,GPIO.HIGH)
GPIO.output(40,GPIO.HIGH)
time.sleep(10)
GPIO.output(29,GPIO.LOW)
GPIO.output(31,GPIO.LOW)
GPIO.output(33,GPIO.LOW)
GPIO.output(35,GPIO.LOW)
GPIO.output(37,GPIO.LOW)
GPIO.output(40,GPIO.LOW)
So lassen sich dann alle oder nur einzelne Lampen aktivieren und gesteuert schalten.
LEDs mit FHEM einschalten
Damit die LEDs aber auch die Ausgabe eines Smart Home Servers (in unserem Beispiel das kostenlose FHEM-Programm) anzeigen, braucht man eine aktuelle FHEM Installation (nach einem “update” Befehl sollte auch das GPIO Modul vorhanden sein) und ein installiertes WiringPi: Das nutzt das FHEM Modul, um die GPIO Ports anzusprechen.
Anschließend muss man die einzelnen Ports in FHEM als Geräte definieren (die Adressen zum Ansprechen der Ports findet man in unserer Grafik zur Belegung der Raspberry GPIO Ports). Wie man Daten (z.B. ein neuer Define, Attribute oder Änderungen) in FHEM eingibt und was man beachten muss, zeigen wir in diesem Artikel!
define RPIPin29 RPI_GPIO 05
attr RPIPin29 direction output
define RPIPin31 RPI_GPIO 06
attr RPIPin31 direction output
define RPIPin33 RPI_GPIO 13
attr RPIPin33 direction output
define RPIPin35 RPI_GPIO 19
attr RPIPin35 direction output
define RPIPin37 RPI_GPIO 26
attr RPIPin37 direction output
define RPIPin40 RPI_GPIO 21
attr RPIPin40 direction output
Möchte man jetzt eine LED leuchten lassen, hilft dieser Befehl:
set RPIPin29 on
Ein Leuchten für 30 Sekunden würde so aussehen:
set RPIPin29 on-for-timer 30
Auf FHEM Ereignisse reagieren
So kann man jetzt auf Ereignisse in FHEM reagieren: Zum Beispiel lässt sich, wenn ein Türöffnungs-Sensor das Öffnen einer Tür oder eines Fensters feststellt, darauf reagieren und die entsprechende LED einschalten: So sieht man auf einen Blick, welche Türen und Fenster geöffnet sind.
In Verbindung mit dem Tür- / Fensterkontakt HM-Sec-Sco könnte der Code zum Beispiel so aussehen:
define act_on_Haustuer notify HM_3F3733 {\
if ("$EVENT" eq "open") {\
fhem("set RPIPin29 on;;");;\
fhem("set myMPD playfile hallo.mp3;;");;\
} else {\
fhem("set RPIPin29 off;;");;\
}\
}