Funksteckdosen (und mehr) mit dem Raspberry Pi steuern

Angeregt durch einen Bericht in der c’t, wollte ich mal sehen, was auf dem Gebiet der 433-MHz-Funkübertragung möglich ist.

Als Hardwarebasis dient eine Kombi aus dem Sendemodul FS1000A und dem Empfangsmodul XY-MK-5V. Diese Module gibt es im Doppel für unter 6 EUR beispielsweise bei Amazon oder auch bei China-Versendern.

1. Installation von Pilight

Zur Installation von Pilight werden in die Datei  /etc/apt/sources.list folgende Zeilen eingefügt:

deb https://apt.pilight.org/ nightly main
deb https://apt.pilight.org/ stable main

Außerdem benötigen wir den Schlüssel, mit dem heruntergeladene Pakete geprüft werden:

sudo wget -O - http://apt.pilight.org/pilight.key | sudo apt-key add -

Jetzt die Paketquellen aktualisieren und Pilight installieren

sudo apt-get update
sudo apt-get install pilight

Die Konfiguration von Pilight erfolgt in der Datei /etc/pilight/config.json. Derzeit haben wir noch nichts zu konfigurieren, da derzeit weder Sender noch Empfänger angeschlossen sind.

2. Empfänger anschließen

Den Empfänger habe ich an den 3.3V-Anschluss des Raspberry Pi angeschlossen, da verschiedentlich darauf hingewiesen wird, dass die ansonsten 5V, die am GPIO ankommen, Schäden verursachen könnten. Einer der beiden „Data“-Anschlüsse kommt an GPIO18 des Raspberry Pi.

Anschluss 433MHz-Empfänger XY-MK-5V an Raspberry Pi
Anschluss 433MHz-Empfänger XY-MK-5V an Raspberry Pi

Ist der Empfänger angeschlossen, kann man auf Suche gehen, welche Geräte man identifizieren kann.

Zunächst muss der Service mit

sudo service pilight start

gestartet werden. Anschließend kann man mit

pilight-receive

schauen, welche Daten empfangen werden. Dazu in der Nähe des Empfängers eine Funkfernbedienung drücken. Auf dem Bildschirm sollten dann Meldungen wie

{
        "message": {
                "systemcode": 5,
                "unitcode": 15,
                "state": "on"
        },
        "origin": "receiver",
        "protocol": "elro_400_switch",
        "uuid": "0000-74-da-38-26c3b9",
        "repeats": 2
}

erscheinen. Falls nicht, Verkabelung überprüfen.

Es lohnt sich durchaus, im Haus mal zu schauen, wer so alles per Funk Informationen versendet. Bei mir war es beispielsweise auch das 10 Jahre alte Außenthermometer am Küchenfenster.

3. Sender anschließen

Um Geräte zu steuern, wird der Sender nun ebenfalls angeschlossen. Sein Datenausgang kommt an GPIO17. Auch hier habe ich einen 3.3V-Anschluss zur Stromversorgung genutzt.

Anschluss 433MHz-Sender FS1000A an Raspberry Pi
Anschluss 433MHz-Sender FS1000A an Raspberry Pi

An der Befehlszeile kann man nun mit

 pilight-send -p elro_400_switch -s 5 -u 15 --on

versuchen, die im Beispiel oben „abgefangene“ Kommunikation mit der Steckdose zu senden und auf diese Art einzuschalten. Welche Parameter im Einzelnen zu senden sind, entnimmt man am einfachsten aus der Dokumentation von Pilight.

4. Pilight konfigurieren

Sinnvoll ist der Einsatz von Pilight nur, wenn die vorhandenen Steckdosen auch entsprechend in der Datei /etc/pilight/config.json konfiguriert sind. Achtung: in dieser Datei speichert Pilight den Zustand der Geräte selbst, weshalb sie im laufenden Betrieb ständig überschrieben wird. Ein Bearbeiten ist also nur möglich, wenn man den Service vorher mit

sudo service pilight stop

stoppt.

Wieder mit den Beispielwerten von oben sorgen die Einträge in den Abschnitten „devices“ und „gui“ dafür, in der Weboberfläche einen virtuellen Schalter für die Funksteckdose zu haben. Das entsprechende Gerät lässt sich nun sowohl mit der Funkfernbedienung als auch mit der Weboberfläche ein- und ausschalten.

{
        "devices": {
                "Lampe": {
                        "protocol": [ "elro_400_switch" ],
                        "id": [{
                                "systemcode": 5,
                                "unitcode": 15
                        }],
                        "state": "on"
                }
        },
        "rules": {},
        "gui": {
                "Lampe": {
                        "name": "Stehleuchte",
                        "group": [ "Beleuchtung" ],
                        "media": [ "all" ]
                }
        },
        "settings": {
                "log-level": 6,
                "pid-file": "/var/run/pilight.pid",
                "log-file": "/var/log/pilight.log",
                "webserver-enable": 1,
                "webserver-root": "/usr/local/share/pilight/",
                "webserver-http-port": 5001,
                "webserver-cache": 1
        },
        "hardware": {
                "433gpio": {
                        "sender": 0,
                        "receiver": 1
                }
        },
        "registry": {
                "pilight": {
                        "version": {
                                "current": "7.0"
                        }
                }
        }
}

pilight webguiEs empfiehlt sich, nach dem Neustarten des Services einen Blick in die Datei /var/log/pilight.err zu werden. Hier werden Fehlermeldungen abgeworfen, z.B. wenn die Konfigurationsdatei Fehler enthält.

5. Empfang verbessern

Während der Sender eine ausreichende Sendeleistung hat, um Geräte auch im Nachbarzimmer zu schalten, ist die Empfangsleistung des Empfängermoduls XY-MK-5V unter aller Kanone. Der maximale Abstand zwischen Empfänger und Fernbedienung darf einige cm nicht überschreiten, das ist ist eine praktische Nutzung natürlich völlig ungeeignet.

Deutlich bessere Empfangsqualitäten soll ein Modul mit dem Namen RXB12 bringen (Quelle). Ich habe mir jetzt eines bestellt, aber das Lieferdatum ist irgendwann in 2 Monaten…

Ebenso soll es helfen, eine vernünftige Antenne – entweder ein 17cm langer Draht oder besser diese hier – anzulöten. Dazu ist auf der Empfängerplatine ein (bei mir unbeschriftetes) Lötauge vorhanden.

2 Antworten auf „Funksteckdosen (und mehr) mit dem Raspberry Pi steuern“

  1. Hallo Jörg,
    danke für die tolle Anleitung.
    Leider klappt bei mir der Empfang eines gesendeten Signal wie von Dir beschrieben noch nicht.
    Kann es daran liegen, dass der XY-MK-5V doch nur an 3,3V angeschlossen wird?

    Kennst Du für den RXB12 noch Quellen, die schneller liefern können?
    Danke und viele Grüße
    Jens

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.