Bereits vor eingier Zeit habe ich einen Artikel verfasst wie mit Hilfe eines 433MHz Senders, eines Raspberry Pi und der Software pilight verschiedene Aufgaben in eurem Zuhause automatisiert werden können. Mittlerweile ist pilight in der Version 6 erschienen und die Installation sowie die Einrichtung hat sich geändert. In diesem Tutorial zeige ich euch die Installation der neueren pilight Versionen und die grundsätzliche Einrichtung auf einem Raspberry Pi2.
Was ist pilight?
Pilight ist eine kostenfreie Open Source Hausautomatisierung-Software die neben dem Raspberry Pi auf dem HummingBoard und dem BananaPi läuft. Es gibt mittlerweile eine Unterstützung von über 60 Geräten die auf 315, 433 oder 868MHz arbeiten. Als Oberfläche zur Bedienung der angesteuerten Geräte gibt es neben einer in der Software integrierten Weboberfläche die Möglichkeit das System via Smartphone App zu steuern.
Meine Hardware & Software
Hardware
- Raspberry Pi 2
- SanDisk Class 10 Ultra SDHC 16GB
- Samsung Netzteil mit 2A
- WLAN Adapter EW-7811UN von EDIMAX
- Raspberry Pi Gehäuse
- Sende- (FS1000A) und Empfangs-Modul (XY-MK-5V) für 433MHz
- GPIO Breakout Kit, ein Breadboard und diverse Kabel
- Intertechno IT-1500 3er Funksteckdosen Set
- Widerstände entweder 330Ohm & 470Ohm oder 2x 10kOhm o.ä., zum Spannungsteilen auf 3,3V
Software
- Raspbian in der aktuellsten Version (Tutorial zur Grundeinrichtung)
- PiLight in der aktuellsten Version
Mein Testaufbau
Als Sende Modul verwende ich momentan ein FS1000A, die Anschlüsse habe ich euch auf diesem Bild entsprechend bezeichnet. Als Antenne verwende ich ein 165mm langes Stück Klingeldraht das ich an den ANT Anschluss angelötet habe.
Das 433MHz Empfängermodul habe ich euch ebenfalls beschriftet, auch hier verwende ich wieder ein 165mm langes Stück Klingeldraht als Antenne.
Verkabelung Sender Modul FS1000A
DATA: Pin 11 auf dem Raspberry Pi (P0 auf meinem Breakout)
VCC: Pin 1 auf dem Raspberry Pi (+3,3V auf meinem Breakout)
GND: Pin 6 auf dem Raspberry (GND auf meinem Breakout)
Verkabelung Empfänger Modul XY-MK-5V
DATA: An Data wird ein 330Ω Widerstand angeschlossen, an dessen Ende eine Verbindung zu Pin 12 und einen 470Ω Widerstand mit Verbindung zu GND (Pin12 = P1 auf meinem Breakout)
VCC: Pin 2 auf dem Raspberry Pi (+5V auf meinem Breakout)
GND: Pin 6 auf dem Raspberry (GND auf meinem Breakout)
Wichtig! Der Empfänger funktioniert nur mit 5V richtig, da der Raspberry Pi aber max. 3.3V am Eingang verträgt habe ich einen einfachen Spannungsteiler erstellt. Die Formel dafür ist 5 * (470 / (330 + 470)) = 2,93. (PS: Nicht wundern, ich habe zwei 10kΩ verwendet, das sind 5 * (10000 / (10000 + 10000)) = 2,5V, der Eingang geht meines Wissens bis min. 1,5V).
Wer sich mit der Nummerierung der PINs nicht auskennt findet hier eine Übersicht für den RasPi 2 bzw. das Modell B / B+.
Pilight installieren
Die Installation von pilight ist mittlerweile zum Glück via APT möglich sodass wir lediglich das pilight Repository zu unseren Quellen hinzufügen müssen, hierzu editieren wir die Datei sources.list mit dem Editor nano
sudo nano /etc/apt/sources.list
Fügt am Ende der Datei folgende Zeile ein und Speichert die Datei mit STRG+X, Y und ENTER
deb http://apt.pilight.org/ stable main
Um das Repository verwenden zu können benötigen wir noch den Schlüssel mit welchem heruntergeladene Pakete geprüft werden und aktualisieren und unsere Paketliste mit update
sudo wget -O - http://apt.pilight.org/pilight.key | sudo apt-key add - sudo apt-get -y update
Danach können wir pilight direkt über folgenden Befehl installieren
sudo apt-get -y install pilight
Pilight Grundeinrichtung
Sobald die Installation abgeschlossen ist können wir die Grundkonfiguration vornehmen, das passiert in der Datei config.json welche wir wieder mit dem Editor Nano bearbeiten
sudo nano /etc/pilight/config.json
In meiner Konfigurationsdatei habe ich erstmal nur den “webserver-port” von 5001 auf 80 geändert. Falls ihr andere PINs zum Anschluss eurer Funkmodule verwendet müssen diese hier angepasst werden (bei den Zahlen handelt es sich um WiringX Port-Nummern), 0 entspricht Pin 11 und 1 entspricht PIN 12.
{ "devices": {}, "rules": {}, "gui": {}, "settings": { "log-level": 4, "pid-file": "/var/run/pilight.pid", "log-file": "/var/log/pilight.log", "send-repeats": 10, "receive-repeats": 1, "webserver-enable": 1, "webserver-root": "/usr/local/share/pilight/", "webserver-port": 80, "webserver-cache": 1, "firmware-update": 0 }, "hardware": { "433gpio": { "sender": 0, "receiver": 1 } }, "registry": {} }
Speichert wieder mit STRG+X, Y und Enter. Eine Anleitung zu den hier enthaltenen Parametern findet ihr im pilight wiki.
Da die Grundkonfiguration nun abgeschlossen ist können wir den Dienst starten.
sudo service pilight start
Die Webseite von Pilight ist nun via Browser erreichbar, hat allerdings, da wir noch keine Geräte definiert haben, noch nichts anzuzeigen.
- Erreichbar entweder via http://raspberrypi/
- oder via http://<ip-adresse>/
Wichtig:
Vor jeder Änderung an der Konfiguration von pilight müssen die Dienste via “sudo service pilight stop” gestoppt und danach wieder gestartet werden (sudo service pilight start).
433MHz Sender & Empfänger testen
Bevor wir weiter arbeiten könnt ihr eure Module testen, pilight hat hierfür zwei Tools die wir verwenden:
- pilight-send
Sendet Befehle zu dem pilight-daemon, der diese wiederum als Signal versendet. - pilight-receive
Gibt über den Empfänger erhaltene Signale als JSON-Objekte aus
Zum Testen reicht es irgend ein Befehl zu versenden welchen der Empfänger dann wieder empfängt und ausgeben kann. Ich öffne für den Test ZWEI SSH Verbindungen zu meinem Raspberry Pi.
Im ersten Fenster lasse ich die Empfänger Software laufen:
pilight-receive
Im zweiten Fenster schicke ich ein Kommando via 433MHz, das verwendete Protokol und die übertragenen Zeichen ist hier erst mal egal:
pilight-send -p kaku_switch -i 123456 -u 0 -t
Im ersten Fenster erhalte ich vom Empfänger, bzw. dem pilight Dienst nun folgende Ausgabe:
Somit arbeiten sowohl mein Empfänger, als auch mein Sender und die pilight Software einwandfrei. Ihr könnt mit STRG+C den Empfänger beenden und ein Fenster schließen.
Steuerung einer Funksteckdose mit pilight
Um nun Geräte via 433MHz zu steuern müssen wir diese in pilight einrichten, neben Funksteckdosen auf 433 bzw. 868Mhz Basis werden viele weitere Geräte unterstützt, zum Beispiel Wetterstationen oder einfache Temperatursensoren. Eine Liste mit unterstützten Geräten gibt es auf der pilight seite.
Für meinen Testaufbau verwende ich folgende Funksteckdosen
- Intertechno Funksteckdosen 3 fach Set IT-1500 (der Stecker ist ein ITR-1500)
Das Einrichten der Intertechno Geräte an sich ist recht einfach, steckt den Zwischenstecker (Empfänger) in die Steckdose, die LED Blinkt, haltet dann für zwei Sekunden auf der Fernbedienung den On Knopf der gewünschten Nummer. Der Empfänger schaltet zwei mal Strom an und aus um die Programmierung zu bestätigen. Das müsst ihr für alle drei Geräte ein mal durchführen.
Danach können wir die jeweiligen Schlatbefehle der Fernbedinung mit pilight ansehen um die ID der Geräte herauszufinden (haltet die Fernbedienung nahe an den Empfänger)
sudo service pilight start sudo pilight-receive
Ich habe den Code für meinen zweiten Stecker (zweite Taste auf meiner Fernbedienung) abgefangen, das Ergebnis am Ende des Posts. Bei mir ist die ID 15888386. Mit der ID können wir die Geräte nun in pilight einbinden. Wir editieren hierzu wieder die Konfiguration (Dienst vorher stoppen!):
sudo service pilight stop sudo nano /etc/pilight/config.json
Die Geräte die wir ansteuern möchten werden innerhalb dieser Konfiguration unter “Devices { }” konfiguriert, Details sind auf der pilight Seite nachzulesen. Den ersten Stecker füge ich als Gerät zwischen “devices”: { und der Klammer }, ein. Der Name ist Switch1 mit der passenden ID und UNIT 0 (Unit 0 ist Nr 1 auf der Fernbedienung, 1 ist 2 usw).
"devices": { "Switch1": { "protocol": [ "kaku_switch" ], "id": [{ "id": 15888386, "unit": 0 }], "state": "off" } },
Um das gerät später noch über die Webseite von pilight steuern zu können benötigen wir noch einen Eintrag in der “GUI” Sektion. Die Konfiguration wird wieder zwischen “gui”: { und der Klammer }, eingefügt. Wichtig ist das Switch1 mit dem Gerät von oben übereinstimmt.
"gui": { "Switch1": { "name": "Switch Nr 1", "group": [ "MeineSwitches" ], "media": [ "all" ] } },
Falls ihr alle Intertechno Stecker programmiert und die ID ausgelesen habt könnt ihr den Empfänger jetzt “abkabeln”, diesen benötigen wir nicht mehr. Eure weiteren Stecker könnt ihr natürlich auch noch hinzufügen, hierzu fügt ihr hinter die schließende Klammer des Eintrages ein Komma an, und könnt den selben Eintrag mit anderer “Unit” Nr. hinzufügen. Meine komplette Konfiguration findet ihr am Ende des Betrages.
Jetzt können wir den pilight Dienst starten
sudo service pilight start
Nun könnt ihr ohne weitere Umwege via Browser eure Funksteckdosen steuern, hierzu ruft ihr die Webseite von pilight auf. Falls ihr den Webserver-Port nicht auf 80 geändert habt müsst ihr hinten noch :<Port> anhängen (5001 ist Standard)
- http://raspberrypi/ oder
- http://<Ip-Adresse>/
Die Steuerung zwischen über zwei Räume hinweg funktioniert bei mir problemlos, einen Reichweiten Test des Senders muss ich noch durchführen um herauszufinden ob sich dieser auch für größere Reichweiten und “schwierige Umgebungen” eignet.
Viel Spaß!
Abgefangener Befehle ITR-1500 mit pilight-receive
Ich habe die On/Off Befehle für einen Stecker auf der zweiten Taste meiner Fernbedienung aufgefangen, es werden jeweils drei Protokolle erkannt da sich diese sehr ähnlich sind, artec_switch, arctec_contact und arctec_screen. Für die ITR-1500 sind logisch werweiße nur die Ausgabe für arctec_switch relevant:
Anschalten: { "message": { "id": 15888386, "unit": 1, "state": "on" }, "origin": "receiver", "protocol": "arctech_switch", "uuid": "0000-00-00-cf-7a92d4", "repeats": 1 } { "message": { "id": 15888386, "unit": 1, "state": "opened" }, "origin": "receiver", "protocol": "arctech_contact", "uuid": "0000-00-00-cf-7a92d4", "repeats": 1 } { "message": { "id": 15888386, "unit": 1, "state": "up" }, "origin": "receiver", "protocol": "arctech_screen", "uuid": "0000-00-00-cf-7a92d4", "repeats": 1 }
Abschalten: { "message": { "id": 15888386, "unit": 1, "state": "off" }, "origin": "receiver", "protocol": "arctech_switch", "uuid": "0000-00-00-cf-7a92d4", "repeats": 1 } { "message": { "id": 15888386, "unit": 1, "state": "closed" }, "origin": "receiver", "protocol": "arctech_contact", "uuid": "0000-00-00-cf-7a92d4", "repeats": 1 } { "message": { "id": 15888386, "unit": 1, "state": "down" }, "origin": "receiver", "protocol": "arctech_screen", "uuid": "0000-00-00-cf-7a92d4", "repeats": 1 }
Meine pilight config.json für Intertechni IT-1500
{ "devices": { "Switch1": { "protocol": [ "kaku_switch" ], "id": [{ "id": 15888386, "unit": 0 }], "state": "on" }, "Switch2": { "protocol": [ "kaku_switch" ], "id": [{ "id": 15888386, "unit": 1 }], "state": "on" }, "Switch3": { "protocol": [ "kaku_switch" ], "id": [{ "id": 15888386, "unit": 2 }], "state": "on" } }, "rules": {}, "gui": { "Switch1": { "name": "Switch Nr 1", "group": [ "MeineSwitches" ], "media": [ "all" ] }, "Switch2": { "name": "Switch Nr 2", "group": [ "MeineSwitches" ], "media": [ "all" ] }, "Switch3": { "name": "Switch Nr 3", "group": [ "MeineSwitches" ], "media": [ "all" ] } }, "settings": { "log-level": 4, "pid-file": "/var/run/pilight.pid", "log-file": "/var/log/pilight.log", "receive-repeats": 1, "webserver-enable": 1, "webserver-root": "/usr/local/share/pilight/", "webserver-port": 80, "webserver-cache": 1 }, "hardware": { "433gpio": { "sender": 0, "receiver": 1 } }, "registry": { "pilight": { "version": { "current": "6.0" } } } }
Weitere Raspberry Pi Projekte
- Ambi-TV – Ambilight mit dem Raspberry Pi nachrüsten
- Raspberry Pi – Steuern von Funksteckdosen und Sensoren mit pilight
- Tor Gateway – Raspberry Pi zum anonymen surfen verwenden – AnoPi
- Raspberry Pi Kernel kompilieren (Cross-Compiler)