Steuerung für Funksteckdosen und Relais

Die Steuerung von Funksteckdosen und Relais ist eine oft hilfreiche Möglichkeit um externe Geräte zu schalten.

Relaismodule sind in vielen verschiedenen Ausführungen von einem bis zu 8 Relais pro Modul erhältlich

Wer Relaismodule einsetzen will oder muss um 230V Geräte zu schalten sollte über die nötigen Kenntnisse im Umgang mit Starkstrom verfügen !!!!

Zwingend ist dann auch die Montage in einem passenden Gehäuse bzw. im Schaltschrank nötig

 

Relaismodul
Relaismodul

 

Um Funksteckdosen zu schalten ist nur das linke Modul (der Sender) nötig

 

 

Sende und Empfangsmodul für 433MHz Funksignale

 

Um die Reichweite des Senders zu erhöhen setzt man eine speziell angepasste Antenne ein

Antennen

 

Funksteckdosen sind in verschiedenen Preislagen erhältlich

 

 

Funksteckdosen
Funksteckdosen

 

Die Steuerung der Funksteckdosen bzw.  Relais ist auf verschiedene Weise möglich

Sowohl über den Webbrowser auf jeden beliebigen Gerät als auch über spezielle Apps auf dem Handy/Tablet.

Nun aber zur Softwarekonfiguration

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). Diejenigen, die sich noch nicht mit GPIO auskennen, können die Belegungen und den Aufbau der GPIO-Schnittstelle in dem Artikel GPIO-Schnittstelle erklärt nachlesen.

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 2

Wir 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. Wie man diese Software installiert erklärte ich in dem Artikel Webserver Nginx installieren.

Step 8Nun verschieben wir die Webinterface Dateien in einen Ordner namens remote-power-plug im 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 + X, Y und Enter speichern.

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

$target = ‚192.168.11.124‘;
ersetzen durch
$target = ‚127.0.0.1‘;
und
1
2
3
4
5
6
7
8
9
10
$config=array(
  array(„00010“, „01“, „Schreibtisch“),
  array(„00010“, „02“, „Laptop“),
  „“,
  „“,
  array(„00001“, „01“, „Sofa Lampe“),
  array(„00001“, „02“, „Sofa Steckdose“),
  array(„00001“, „03“, „TV“),
  array(„00001“, „04“, „Verstaerker“),
)
ersetzen durch (Beispiel)
1
2
3
4
$config=array(
  array(„11111“, „01“, „Computer“),
  array(„11111“, „02“, „Nachttischlampe“),
)

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

1
2
0 23 * * * ~/raspberryremote/send 01100 2 0 >/dev/null 2>&1
0 6 * * * ~/raspberryremote/send 01100 2 1 >/dev/null 2>&1
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.

Die Quelle für individuelle Lösungen