Funksteckdosen

Funksteckdosen

 27.04.2015 -  Sebastian Pech -  ~4 Minuten

In Baumärkten gibt es eine große Auswahl von Funksteckdosen. In meinem konkreten Fall habe ich mich bei Amazon für das mumbi Funksteckdosen Set entschieden. In dem Paket befinden sich insgesamt sechs Steckdosen und zwei Fernsteuerungen. Das Set kommuniziert in dem 433MHz Band für welches dann ein Sender und Empfänger benötigt wird.

Den Sender und Empfänger gibt es für kleines Geld als 433M receiver module 433MHZ Superregeneration Wireless Transmitter Module . In dem Set sind beide Platinen erhalten inklusive einer kleinen Antenne. Je nach Spannungsversorgung beträgt die Reichweite zwischen 20 und 200m. In meinen Versuchen sind mit den 3,3V des Raspberry Pi aber auch Steckdosen in Nachbarräumen problemlos zu schalten.

pilight Installation

pilight ist ein freies Open Source Projekt welches eine Reihe von Programmen zur Steuerung von unterschiedlichen (Funk)protokollen bereitstellt. Mit Hilfe der Sende- und Empfangsprogramme können die Steckdosen angesteuert werden und die Daten aus den Fernbedienungen erfasst werden. Theoretisch könnten die Fernbedienungen unabhängig von den Steckdosen zur Steuerung des Raspberry Pi oder anderer Funktionen genutzt werden. Der Kreativität sind hier keine Grenzen gesetzt.

Im Folgenden werden die benötigten Programme wie zum Beispiel git installiert. Im Anschluß kann mit git das pilight Repository ausgecheckt und das Setup durchgeführt werden. Die Voreinstellung sind dabei unverändert zu übernehmen.

UPDATE: 27.04.2015: libpcap-dev und libunwind werden nun ebenfalls benötigt. ( Quelle )

wget http://mirrordirector.raspbian.org/raspbian/pool/main/libu/libunwind/libunwind-dev_1.1-3.2_armhf.deb
wget http://mirrordirector.raspbian.org/raspbian/pool/main/libu/libunwind/libunwind8_1.1-3.2_armhf.deb
wget http://mirrordirector.raspbian.org/raspbian/pool/main/libu/libunwind/libunwind8-dev_1.1-3.2_armhf.deb
sudo dpkg -i *.deb

sudo apt-get install build-essential dialog cmake git libpcap-dev
git clone --depth 5 -b master https://github.com/pilight/pilight.git
cd pilight
chmod +x setup.sh
sudo ./setup.sh

In der Einstellungsdatei müssen die GPIO Ports für den Raspberry Pi eventuell angepasst werden.

sudo vi /etc/pilight/settings.json

Abschließend wird der Dienst gestartet und in den automatischen Start nach reboots eingetragen.

sudo pilight-daemon
sudo update-rc.d pilight defaults

Empfänger

Das Programm pilight-receive wartet auf Daten von dem Funkempfänger.

sudo pilight-receive

Wird eine Taste auf der Fernbedienung gedrückt sollte pilight-receive diese erkennen und einen entsrepchenden JSON Eintrag ausgeben.

{
        "code": {
                "systemcode": 9,
                "unitcode": 1,
                "state": "on"
        },
        "origin": "receiver",
        "protocol": "sartano",
        "repeats": 3
}
{
        "code": {
                "systemcode": 9,
                "unitcode": 1,
                "state": "off"
        },
        "origin": "receiver",
        "protocol": "sartano",
        "repeats": 2
}
{
        "code": {
                "systemcode": 9,
                "unitcode": 2,
                "state": "on"
        },
        "origin": "receiver",
        "protocol": "sartano",
        "repeats": 2
}

Dort erkennt man als systemcode den Hauscode der auf der Fernbedienung und den Steckdosen vergeben wurde nach dem Binärsystem. In meinem Fall wurden die Jumper 1 und 4 gesetzt. 1 steht dabei für die 2^1=1 und 4 für die 2^4=8. Somit ergibt sich die 9 als systemcode. Der unitcode gibt die Steckdose an und der state ob der Ein- oder Ausknopf gedrückt wurde.

1 2 3 4 5 Hauscode
1 2 4 8 16 x^2
1 0 0 1 0 = 9

Sender

Zum Senden wird das Programm pilight-send genutzt. In dem pilight-Wiki gibt es einen Eintrag zum sartano Protokoll.

-s --systemcode=systemcode     control a device with this systemcode
-u --unitcode=unitcode         control a device with this unitcode
-t --on                        send an on signal
-f --off                       send an off signal

Das sartano Protokoll wird bei pilight als elro angesprochen. Zum einschalten der ersten Steckdose (-u 1) für unseren systemcode ergibt sich daher der folgende Aufruf.

UPDATE: 27.04.2015: Das Protokoll elro heißt nun elro_800_switch.

sudo pilight-send -p elro_800_switch -s 9 -u 1 -t

FHEM Einbindung

Damit die Steckdosen künftig über FHEM gesteuert werden können muss in der fhem.cfg für jede Steckdose ein dummy angelegt werden. Mit dem dummy kann das pilight-send aufgerufen werden.

UPDATE: 27.04.2015: Die Binaries liegen nicht mehr in sbin sondern in bin.

    define Steckdose_Wohnzimmer_Schrank dummy
    attr Steckdose_Wohnzimmer_Schrank eventMap on:on off:off
    attr Steckdose_Wohnzimmer_Schrank room Wohnzimmer
    define NSteckdose_Wohnzimmer_Schrank notify Steckdose_Wohnzimmer_Schrank {\
     if ("%" ne "off") {\
      system("sudo /usr/local/bin/pilight-send -p elro_800_switch -s 9 -u 4 -t")\
     }\
     else {\
      system("sudo /usr/local/bin/pilight-send -p elro_800_switch -s 9 -u 4 -f")\
     }\
    }

Leider muss pilight-send als root aufgerufen werden. Um fhem zu ermöglichen das sudo Kommando zu nutzen muss der fhem Benutzer daher mit sudo Rechten ausgestattet werden!

    sudo visudo
    fhem ALL=(ALL) NOPASSWD: ALL

Übersicht Funkmodule und Raspberry Pi

Funkmodule 433 MHZ (rechts) und IR Emitter/Empfänger (links)