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