Raspberry Pi: Funksteckdosen einrichten

Dem Thema Hausautomation kann man sich mit dem Raspberry Pi im Kleinen recht einfach nähern. So kann man mittels eines 433 MHz Funk-Sendemoduls Funksteckdosen intelligent steuern. Dies bietet nicht nur die Möglichkeit Steckdosen per Webinterface auf dem Rechner, am Smartphone oder gar aus der Ferne zu steuern, sondern auch abhängig von Zeit und anderen Faktoren zu entscheiden ob die Steckdose aktiviert oder deaktiviert werden soll. Im Folgenden erkläre ich wie man mit Hilfe eines 433 MHz Funk-Sendemoduls Funksteckdosen auf dem Raspberry Pi einrichtet, per Webinterface steuern kann und intelligente Schaltungen anlegt.

Funksteckdosen erhält man in der Regel in Elektrofachgeschäften oder in Onlineshops. Dabei ist zwischen zwei Arten dieser Geräte zu unterscheiden. Erstere haben einen DIP Schalter mit einem 1-0-Code, der es ermöglicht Ein und Aus zu steuern. Es gibt inzwischen jedoch auch selbstlernende Funksteckdosen, die eine gewisse Intelligenz mitbringen. Letztere benötigen wir nicht, da wir die Steckdosen selbst beeinflussen möchten.

Außerdem benötigen wir ein 433 MHz Funk-Sendemodul, welches meist in Kombination mit einem Empfänger zu erwerben ist. Dieses schließen wir über die GPIO-Pins am Raspberry Pi an, weshalb wir female-female Jumperwires benötigen.

  • Funksteckdosen von CSL (Amazon)
  • Aukru 433 MHz Funk-Sende- und Empfänger-Modul (Amazon)
  • Jumperwires female-female (Amazon)

Step 1Zunächst müssen wir das Sendemodul an den Raspberry Pi anschließen. Bei dem vorgeschlagenen Aukru 433 MHz Sender ist dies die quadratische Platine mit drei Pins und einem Anschluss (ANT beschriftet) oben rechts.

  • Pin 1 (links): ATAD (Daten)
  • Pin 2 (mitte): VCC (Versorgungsspannung)
  • Pin 3 (rechts): GND (Masse)
  • Anschluss: Ant (Antenne)

Der Pin 1 muss mit dem Pin 11 (GPIO-Pin 17) des Raspberry Pis verbunden werden. Der Sender benötigt eine Spannung von 3.5-12V, weshalb wir, um eine größtmögliche Sendeleistung zu erreichen, diesen an einen 5V Versorgungs-Pin des Raspberry Pis anschließen (bspw. Pin 2). Außerdem müssen wir Pin 3 mit einem GND Pin des Raspberry Pis verbinden (bspw. Pin 6).

Außerdem haben wir oben rechts einen Anschluss um eine Antenne anzubringen oder anzulöten, um die Reichweite des Sendemoduls zu erhöhen. Als Antenne genügt ein Stück gedrehter Draht mit der Länge 17,3 cm. Ohne Antenne konnte ich durch übliche Ziegelwände eine Reichweite von rund 8 Metern feststellen.

Step 2Wir brauchen zum Installieren der benötigten Software Git und Screen, welche wir über den Paketmanager installieren.

sudo apt-get install git screen

Step 3Zur Ansteuerung des 433 MHz Senders benötigen wir die Bibliothek WiringPi. Hiervon holen wir uns mittels Git den Quellcode und führen das Build-Script aus, welches einige Dateien kompiliert.

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

Step 4Außerdem installieren wir Raspberry-remote. Diese Software bietet uns eine Anwendung mit der wir einfach die benötigten Funkbefehle absetzen können und beinhaltet außerdem ein Webinterface auf dem wir später die Steckdosen steuern können.

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

Step 5Nachdem der Raspberry Pi präpariert ist, müssen wir an die Funksteckdosen. Diese können wir auf der Rückseite aufschrauben und finden darunter zehn sogenannte DIP Schalter. Diese setzen sich aus fünf Systemcode-Stellen (1-5) und fünf Unitcode-Stellen (A-E) zusammen. Man kann die einzelnen Schalter ein- (1) oder ausschalten (0). Dabei ließt man die Werte von links nach rechts einfach ab.

Der Systemcode ist sozusagen der Schlüssel um die Steckdose ansprechen zu können und sollte somit bei allen Steckdosen gleich sein. Dabei ist es empfehlenswert diesen zu verändern, damit nicht euer Nachbar versehentlich eure Steckdose übernimmt. Ich habe mir diesen Beispielsweise auf 01100 gestellt. Sofern ihr die Fernbedienung neben dem Raspberry Pi nutzen möchtet, müsst ihr dort im Batteriefach den Code in der selben Weise verändern.

Der Unitcode gibt hingegen die Nummer der Funksteckdose an. Folglich sollte diese bei jeder Steckdose verschieden sein, außer man möchte mehrere Steckdosen zugleich steuern. Zu beachten ist außerdem, dass man nur einen Schalter (A, B, C, D oder F) aktiviert. In meinem Fall habe ich bei meiner ersten Steckdose den Unitcode 10000 (A aktiv) und bei der zweiten 01000 (B aktiv). Der Unitcode lässt sich in Steckdosen-Nummern übersetzen, die wir im Folgenden benötigen werden.

UNITCODE STECKDOSEN-NUMMERN
10000 1
01000 2
00100 3
00010 4
00001 5

Step 6Nachdem wir alle Informationen haben, können wir die Steckdose über den Raspberry Pi schalten. Dazu bedienen wir uns des send Kommandos von Raspberry-remote, bei dem wir den Systemcode, die Steckdosen-Nummer und den gewünschten Zustand (1 für einschalten, 0 für ausschalten) angeben müssen. Hat es funktioniert, so hören wir das Schalten der Steckdose.

sudo ~/raspberry-remote/send [Systemcode] [Steckdosen-Nummer] [Zustand]

Beispiel: Zweite Steckdose einschalten
sudo ~/raspberry-remote/send 01100 2 1

Step 7Der grundsätzliche Aufbau steht und die Steckdosen sind ansprechbar. Damit ist es an der Zeit ein Webinteface in Betrieb zu nehmen, damit wir die Steckdosen bequem steuern können. Hierzu benötigen wir den Webserver nginx mit php5-fpm.

Step 8Nun verschieben wir die Webinterface Dateien in einen Ordner namens remote-power-plugim Verzeichnis des Webservers.

sudo mkdir /usr/share/nginx/www/remote-power-plug
sudo mv ~/raspberry-remote/webinterface/* /usr/share/nginx/www/remote-power-plug

Step 9Außerdem müssen wir die Konfigurationsdatei des Webinterfaces bearbeiten. In dieser müssen wir bei $target die IP-Adresse durch 127.0.0.1 (lokal; der Raspberry Pi selbst) ersetzen. Außerdem muss der Block $config durch unsere zuvor getroffenen Einstellungen ersetzt werden. Bei jeder Steckdose, als Array geschrieben, muss zunächst der Systemcode, anschließend die Steckdosen-Nummer mit anführender Null und abschließend ein Bezeichner für die Steckdose angegeben werden. Im Folgenden habe ich dies beispielhaft für die oben eingestellte Konfiguration umgesetzt. In dem Editor nano kann man mittels STRG + XY und Enter speichern.

sudo nano /usr/share/nginx/www/remote-power-plug/config.php

ersetzen durch

und

ersetzen durch (Beispiel)

Step 10Damit das Webinterface nun Befehle senden kann, benötigen wir noch den Raspberry-remote Daemon, welchen wir zunächst kompilieren und anschließend dafür ein kleines Startscript schreiben, welchem wir die Rechte ausgeführt zu werden geben müssen.

cd ~/raspberry-remote
make daemon
nano start.sh

chmod +x start.sh

Step 11Anschließend müssen wir das Startscript ausführen und man kann unter http://IP/remote-power-plug/ (IP durch IP-Adresse des Raspberry Pis ersetzen) das Webinterface aufrufen wie auch die Funksteckdosen schalten.

./start.sh

Step 12Abschließend müssen wir den Daemon in den Autostart legen, sodass das Webinterface auch nach einem Neustart des Raspberry Pis einwandfrei funktioniert. Dazu fügen wir folgende Zeile am Ende der Crontab Datei ein.

crontab -e

Damit sind die Funksteckdosen eingerichtet und über das Webinterface ansprechbar. Für die meisten Zwecke sollte diese Art der Steuerung reichen, jedoch könnte man diese natürlich um Intelligenzen erweitern.

Allgemeine SteuerungDie Funksteckdosen lassen sich wie in Step 6 beschrieben ansprechen. Damit ist die Funktionalität der Steuerung allgemein geben – denn mehr als ein und aus geht im Grunde nicht.

ZeitsteuerungMöchte man die Steckdosen zeitlich steuern, so bietet es sich an Crontabs zu verwenden. Wer deren Syntax nicht kennt kann einfach auf einen der diversen Crontab Generatoren zurückgreifen. Diese liefern einem die Angabe wann ein Befehl ausgeführt wird. Den Befehl kann man aus Step 6 übernehmen und die daraus resultierende Zeile am Ende der Crontab Datei eintragen.

Beispiel: Zweite Steckdose wird um 23:00 Uhr aus- und um 06:00 Uhr eingeschaltet
crontab -e

Es wäre möglich abhängig von weiteren Faktoren die Schaltung der Funksteckdosen zu beeinflussen. Jedoch ist dies je nach Anwendung individuell und muss folglich mit der allgemeinen Funktion des Steuerungsbefehls zusammenspielen.

Dieser Beitrag wurde unter Allgemein veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s