Programmierung Raspberry Pi

Raspberry Pi: 433 MHz Funksteckdose schalten

Raspberry Pi 2 mit 443 MHz Sender
Geschrieben von Tony

Ein großes Einsatzgebiet des Raspberry Pi ist die Realisierung einer kostengünstigen und individuellen Hausautomation. Dabei ist das Schalten von 433 MHz Funksteckdosen oder anderen kompatiblen Geräten eine beliebte Anwendung. Der Pi fungiert dabei als Sender auf einer Frequenz von 433 MHz. Im folgenden Tutorial erfährst du, wie man mit dem Raspberry Pi Funksteckdose schalten kann.

Die passende Funksteckdose

Funksteckdosen sind in der Regel bei allen Elektrofachgeschäften, als auch in diversen Onlineshops erhältlich. Funksteckdosen sind so konzipiert, dass man an der Steckdose über einen DIP Schalter einen 1-0-Code einstellt, über den diese ansprechbar ist. Funksteckdosen vom Typ Elro AB440S und viele andere gehören unteranderem dazu und sind im Zusammenhang mit dem Pi sehr beliebt. Ich verwende für dieses Tutorial die folgenden Funksteckdosen.

CSL Funksteckdosen (Amazon)

Mittlerweile gibt es bereits Funksteckdosen, welche selbstlernend sind. Das bedeutet, dass es zur Konfiguration des 1-0-Codes keine Dip-Schalter gibt. Dieses Tutorial bezieht sich auf Funksteckdosen mit Dip-Schaltern. Für selbstlernende Funksteckdosen müsste man mit dem 433 MHz Empfängermodul zunächst den Code empfangen, welches man auch von der Fernbedienung aus sendet um die Steckdose zu schalten.

433 MHz Sendemodul

Um die Funksteckdose ansteuern zu können müssen wir den Raspberry Pi mit einem 433 MHz Sendemodul ausrüsten. Solche Module gibt es meist in Kombination mit einem Empfängermodul für wenig Geld.

433 MHz Funk- Sende und Empfänger Modul (Amazon)

433 MHz Funk- Sende und Empfänger Modul

433 MHz Funk- Sende und Empfänger Modul

Im linken Teil des Bildes ist das für uns relevante Sendemodul dargestellt. Dieses verfügt über 3 bzw. 4 Anschlüsse:

  • Pin 1: ATAD (Daten)
  • Pin 2: VCC (Versorgungsspannung)
  • Pin 3: GND (Masse)
  • Pin 4: Ant (Antenne)

Pin 1, 2 und 3 verbinden wir mit dem Raspberry Pi. An Pin 4 (Ant) können wir eine Antenne anschließen bzw. anlöten um die Reichweite des Sendemoduls zu erhöhen. Für die Antenne genügt ein Stück Draht mit der Länge 17 cm. Die Pinbelegung von anderen Modulen kann abweichen, sollte aber dennoch eine ähnliche Struktur aufweisen.

Schaltungsaufbau

Üblicherweise arbeitet das 433 MHz Sendemodul mit einer Betriebsspannung von 3,3 Volt bis 5 Volt. Für das hier verwendete Sendemodul verwenden wir eine Betriebsspannung von 5 Volt. Dadurch erhöht sich die Sendeleistung und die Reichweite. Im Detail bedeutet das, dass wir den Pin 2 (VCC) des Moduls mit Pin 2 oder 4 (5V) am Raspberry Pi verbinden. Weiterhin verbinden wir Pin 3 GND mit einem Ground-Pin vom Pi. Für dieses Tutorial verwenden wir Pin 6 des Raspberry Pi. Zuletzt schließt man die Datenleitung des 433 MHz Sendemoduls (Pin 1 ATAD) an Pin 11 (GPIO-Pin 17) am Pi an.

Raspberry Pi 433 MHz Sendemodul Schaltung (Bild: Eagle)

Raspberry Pi 433 MHz Sendemodul Schaltung (Bild: Eagle)

Software: Vorbereitung

Zum Schalten der Funksteckdose(n) bedarf es der Installation einiger Tools. Im ersten Schritt bringen wir unser System auf den neusten Stand und installieren falls notwendig den Git-Core.

sudo apt-get update
sudo apt-get install git-core

Software: WiringPi installieren

Zur Ansteuerung des 433 MHz Senders über die GPIO-Pins benötigen wir das Tool bzw. die Programmbibliothek WiringPi. Mit folgendem Befehl laden wir WiringPi herunter.

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

Anschließend wechseln wir in das Verzeichnis von WiringPi und führen den Buid-Skript aus, um das Tool zu installieren. Die Installation nimmt einen kurzen Augenblick in Anspruch.

cd wiringPi
./build

Nach der Installation von WiringPi wechseln wir in das Ursprungsverzeichnis zurück.

cd

Software: Raspberry-Remote installieren

Zum Steuern unserer Funksteckdosen verwenden wir das Tool Raspberry-Remote von xkonni. Dieses laden wir uns von Github herunter, wechseln in das entsprechende Verzeichnis und installieren bzw. kompilieren es.

git clone git://github.com/xkonni/raspberry-remote.git
cd raspberry-remote
make send

Das wars auch schon! Der Raspberry Pi kann jetzt mit der installierten Software und der wie beschrieben verbundenen Hardware Funksteckdosen steuern. Zum Steuern einer Steckdose müssen wir einen entsprechenden 1-0-Code heraussenden. Dieser Code ist an jeder Funksteckdose (z.B. Typ Elro AB440S und einigen anderen Modellen) prinzipiell über Dip-Schalter konfigurierbar. Der Key setzt sich folgendermaßen zusammen:

(Systemcode, 5 Stellen)(Unitcode, 5 Stellen)

Der meist dazugehörige Handsender verfügt ebenfalls über einen 5-stelligen Dip-Schalter. Dort wird der Systemcode (oder auch Hauscode) konfiguriert, mit welchem die Steckdosen arbeiten. Dies ist in unserem Fall aber nicht zwingend notwendig, da wir die Funksteckdosen ja mit dem Raspberry Pi und nicht mit dem Handsender schalten wollen. Es empfiehlt sich aber den einheitlichen Hauscode an den Steckdosen etwas zu verändern, sodass nicht zufällig der Nachbar eure Steckdosen schaltet und umgekehrt. Prinzipiell sollte der Hauscode an allen Steckdosen gleich sein, jediglich die Dip-Konfiguartion sollte sich immer unterscheiden. Es sei denn, es sollen mehrere Steckdosen gleichzeitig geschalten werden. Für die Einstellung des Unitcodes, also der 5-stelligen Steckdosennummer an der Funksteckdose ergibt sich folgende Übersetzung (Beispiele):

(Unitcode) = 01000 bedeutet Steckdosennummer:2
(Unitcode) = 00001 bedeutet Steckdosennummer:5

Jetzt haben wir alle nötigen Informationen um eine Steckdose konkret zu schalten. Im Terminal geben wir dazu folgenden Befehl ein:

sudo ./send (Systemcode)(Steckdosennummer)(Zustand 1 An, 0 Aus)

Für die Steckdosennummer verwenden wir nicht den eingestellten 1-0-Code, sondern dessen Übersetzung. Im nachfolgenden Beispiel wollen wir die Funksteckdose mit dem Hauscode 11101, der Steckdosennummer 2 auf An schalten:

sudo ./send 11101 2 1

Raspberry Remote (Screenshot Raspbian)

Raspberry Remote (Screenshot Raspbian)

Theoretisch sollte die Funksteckdose nun einschalten.

Steuerung über Webinterface

Zur Steuerung der Steckdosen mit Raspberry-Remote bietet sich ein Webinterface an, da sonst jedes mal ein Login via SSH oder Remotedesktop notwendig wäre. Raspberry-Remote bringt dazu ein eigenes simples Webinterface mit. Um dieses zu verwenden benötigen wir zunächst einen Webserver. Ich verwende in diesem Fall den Apache Webserver 2 und PHP5.

sudo apt-get install apache2
sudo apt-get install php5

Mehr Informationen zur Instalaltion eines Apache Webservers findet ihr hier. Ist der Webserver eingerichtet können wir das bereits bei Raspberry-Remote mitgelieferte Webinterface in den Anzeigeordner (Public-Ordner) des Webservers verschieben. Wir verwenden hier noch den Unterordner send443.

mv ~/raspberry-remote/webinterface/* /var/www/send443

Damit der PHP-Skript ordnungsgemäßg funktioniert müssen wir die Datei config.php bearbeiten.

cd /var/www/send443
nano config.php

Im Quellcode ändern wir den Inhalt der Variable $target auf die IP-Adresse unseres Pi´s. Gleichzeitig können wir im unteren Bereich der Konfigurationsdatei die Hauscodes und Funksteckdosennummern, sowie deren Bezeichnung im Webinterface festlegen. Anschließend kann die Datei geschlossen und gespeichert werden. Schalten wir später über das Webinterface unsere Funksteckdosen, dann greift der Webskript auf den Raspberry-Remote Daemon zurück. Damit wir diesen nutzen können, muss dieser erstmal installiert bzw. kompiliert werden.

cd raspberry-remote
make daemon

Ist der Daemon installiert können wir ihn mit folgendem Befehl starten. Das & im in der folgenden Zeile bewirkt, dass der Prozess im Hintergrund ausgeführt wird.

sudo ./daemon &

Öffnen wir im Webinterface nun Raspberry-Remote sollte sich das folgende Bild zeigen. Zum Öffnen geben wir die IP-Adresse des Raspberry Pi in die Browserzeile ein und navigieren zum entsprechendem Unterordner: http://IP/send443

Screenshot Raspberry Remote

Screenshot Raspberry Remote

Damit der Daemon bei jedem Systemstart automatisch startet, schreiben wir einen kleinen Skript:

sudo nano /home/pi/raspberry-remote/send443.sh

Die die Datei fügen wir folgenden Inhalt ein.

#!/bin/bash
cd /home/pi/raspberry-remote/
sudo ./daemon &
exit 0

Abschließend setzen wir noch die entsprechenden Rechte.

sudo chmod 755 /home/pi/raspberry-remote/send443.sh

Damit der gerade geschriebene Skript unseren Daemon bei jedem Start ausführt, fügen wir die send443.sh in die rc.local ein.

sudo nano /etc/rc.local

Dort fügen wir folgende Zeile ein und speichern die Datei.

/home/pi/raspberry-remote/send443.sh

Geschafft! Jetzt können wir sowohl über die Konsole, als auch bequem über ein Webinterface unsere Funksteckdosen steuern.

Quellen: gtkdb.de

Über den Autor

Tony

Ich bin Tony, begeistert von Einplatinencomputer und berichte über meine Erfahrungen und Projekte mit dem Raspberry Pi, Banana Pi und anderen Minicomputern.

Hinterlasse eine Antwort

Kommentare