Funksteckdosen gibt es mittlerweile schon für kleines Geld beim Baumarkt um die Ecke. Damit lassen sich elektrische Geräte mit Hilfe einer Fernbedienung (welche meist mitgeliefert wird) fernsteuern, besser gesagt, die Geräte lassen sich damit an- und ausschalten. Die Funktion der Fernbedienung kann mit einem passenden Modul auch vom Raspberry Pi übernommen werden.

Benötigte Komponenten

Voraussetzung ist natürlich ein bereits konfigurierter Raspberry Pi. Wie das geht, habe ich bereits hier beschrieben. Um die Funksteckdosen steuern zu können benötigen wir noch folgende Zusatzkomponenten:

  • Funksteckdosen (ich benutze hier welche der Firma “ELRO”) ca. 15€ (Amazon)
  • 433MHz Sende-Modul ca. 9€ (Amazon)
  • Jumperkabel (weiblich auf beiden Seiten) ca. 6€ (Amazon 40Stk.)

Installation der Hardware-Komponenten

Als aller erstes trennen wir sämtliche Verbindungen mit unserem Raspberry Pi, vor allem das Netzkabel! Jetzt öffnen wir den Deckel des Gehäuses, dass wir an die sog. GPIO-Anschlüsse kommen. Die GPIOs sind die 26 kleinen Pins auf dem Board des PIs. Wir nehmen jetzt drei Jumperkabel und schließen das 433MHz Sende-Modul wie folgt an.

Hier noch eine schematische Darstellung. Wichtig ist, dass die Perspektive so gewählt wurde, dass das 433MHz Sende-Modul mit der Spule auf dem Kopf liegt.

Sind alle drei Jumperkabel korrekt verbunden, so können wir die restliche Peripherie wieder an den RaspberryPi anschließen und ihn mit Strom versorgen.

Installation der Software

Um das 433MhZ Sende-Modul dazu zu bewegen, dass wir es mittels der GPIOs ansprechen können, müssen wir noch die passende Software (wiringPi und raspberry-remote) installieren. Zuerst werden die Paket-Liste..

sudo apt-get update  

.. und die Pakete aktuallisiert:

sudo apt-get upgrade  

wiringPi installieren

Da wiringPi via GitHub installiert wird, wird das Paket git benötigt, wir installieren es wie folgt:

sudo apt-get install git-core  

Danach können wir wiringPi via GitHub installieren.

git clone git://git.drogon.net/wiringPi  

Wir wechseln in das Verzeichnis von wiringPi..

cd wiringPi  

.. und installieren das Paket:

./build

wiringPi ist jetzt installiert, jetzt muss noch raspberry-remote installiert werden.

raspberry-remote installieren  

Dazu wechseln wir zuerst in das übergeordnete Verzeichnis mit ..

cd ..  

.. und installieren raspberry-remote via GitHub:

git clone git://github.com/xkonni/raspberry-remote.git  

Jetzt müssen wir nur noch das Programm kompilieren:

make send  

Die Software ist jetzt installiert und wir machen uns an das Konfigurieren der Funksteckdosen.

Konfiguration der Funksteckdose(n)

Die Funksteckdosen von ELRO haben hinten eine kleine Klappe. Schraubt man sie auf, so sieht man acht kleine Schalter.

Die ersten fünf Zahlen geben den sogenannten “Hauscode” an, auf einem “Hauscode” können vier verschiedene Geräte geschaltet werden. Die hinteren vier Buchstaben geben die Geräte an. Bei der gezeigten Steckdose ist der Hauscode folglich “11111” und die angesteuerte Steckdose heißt “A”, also “1”. Will man eine weitere Steckdose mit dem gleichen Hauscode ansteuern, so müsste man den Schalter bei “B” auf an stellen, bei A, C, D und E auf aus.

Ansteuern der Funksteckdose(n)

Um die Funksteckdose(n) jetzt anzusteuern, wechselt man in das Verzeichnis von raspberry-remote:

cd raspberry-remote  

Hier kann jetzt die Funksteckdose mittels dem Hauscode und der passenden Steckdosen-Kennung angesteuert werden. In meinem Beispiel schalte ich die oben beschrieben Steckdose mittels dem Befehl ..

sudo ./send 11111 1 1  

an. Wenn man die Steckdose wieder ausschalten möchte, so ergibt sich folgendes Befehlsmuster:

sudo ./send 11111 1 0  

Hätte man jetzt zum Beispiel noch die andere zwei Steckdosen auf den Kanal B und C gelegt, so könnte man mit den Befehlen ..

sudo ./send 11111 2 1  

.. und ..

sudo ./send 11111 3 1  

.. die Steckdosen anschalten, vertauscht man die letzten Ziffer (1) mit der 0, so schaltet man die Steckdosen wieder aus. Wichtig ist, dass man sich im Verzeichnis von raspberry-remote befinden muss, dass der Send-Befehl ausgeführt werden kann. Wenn man nicht immer extra in das Verzeichnis von raspberry-remote wechseln möchte, so kann mit folgendem Befehl die Steuerung auslöst werden, das Verzeichnis spielt dank der Pfadangabe jetzt keine Rolle mehr:

sudo /home/pi/raspberry-remote/send 11111 1 1  

Natürlich müsst ihr, wenn ihr mit einem andere User, als mit dem Standard-User pi angemeldet seid, den Pfad anpassen. Auch der Hauscode und die jeweilige Steckdose müssen natürlich angepasst werden.

Steuern der Funksteckdose(n) via AppleScript

OS X wird mit einer eigenen Script-Sprache ausgeliefert. Mit dieser lassen sich ohne weitergehende Programmierkenntnisse einfache Scripts erstellen, welche später als Programm exportiert werden können. Mit dem folgenden Script lassen sich die Steckdosen per SSH ansteuern, der Zugriff erfolgt im Hintergrund.

set sshUser to "USERNAME"  
set sshPasswd to "PASSWORT"  
set sshServer to "IPADRESSE"  
set externalCommand to "sudo /home/pi/raspberry-remote/send 11111 1 1"

set thecommand to "(echo \"spawn ssh"  
set thecommand to thecommand & " " & sshUser & "@" & sshServer  
set thecommand to thecommand & " " & externalCommand & "\" ;"  
set thecommand to thecommand & "echo \"expect {\" ;"  
set thecommand to thecommand & "echo \"\\\"password:\\\" {send \\\""  
set thecommand to thecommand & sshPasswd  
set thecommand to thecommand & "\\\\r\\\" ; exp_continue }\" ;"  
set thecommand to thecommand & "echo \"\\\"yes/no?\\\" {send \\\"yes\\\\r\\\" ; exp_continue }\" ;"  
set thecommand to thecommand & "echo \"eof\" ;"  
set thecommand to thecommand & "echo \"}\" ;"  
set thecommand to thecommand & ") | expect"

do shell script thecommand  

Die oberen vier Zeilen müssen jetzt noch mit den persönlichen Angaben zum Username, dem zugehörigen Passwort, sowie der IP des RaspberryPIs und dem jeweiligen send Befehl für die Steckdose(n) ergänzt werden.

Achtung(!): Bei dem AppleScript wird das Passwort im Klartext im Script gespeichert, solch eine Funktion ist nur dann ratsam, wenn man sich im heimischen Netzwerk befindet, da das SSH-Passwort so durch bloßes Aufrufen des Scripts ausgelesen werden kann!