Raspberry Pi – Pilight mit 433MHz Modulen zur Hausautomatisierung

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

Software

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.

sender

Das 433MHz Empfängermodul habe ich euch ebenfalls beschriftet, auch hier verwende ich wieder ein 165mm langes Stück Klingeldraht als Antenne.

empfaenger

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)

gesamter-aufbau

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).

empfänger

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>/

webgui

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:

pilight-empfangen

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

Sender-Intertechno   Stecker-intertechno

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>/

pilight-webgui

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üstenAmbi-TV – Ambilight mit dem Raspberry Pi nachrüsten
  • Raspberry Pi – Steuern von Funksteckdosen und Sensoren mit pilightRaspberry Pi – Steuern von Funksteckdosen und Sensoren mit pilight
  • Tor Gateway – Raspberry Pi zum anonymen surfen verwenden – AnoPiTor Gateway – Raspberry Pi zum anonymen surfen verwenden – AnoPi
  • Raspberry Pi Kernel kompilieren (Cross-Compiler)Raspberry Pi Kernel kompilieren (Cross-Compiler)

wallpaper-1019588
Winter Tollwood 2024
wallpaper-1019588
TOKYOPOP: Das sind die Boys Love- und Girls-Love-Lizenzen
wallpaper-1019588
Clevatess: Neuigkeiten zum Anime + Visual
wallpaper-1019588
The Dark History of the Reincarnated Villainess: Neuigkeiten zum Anime bekannt gegeben