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

  • Schade, dass die Anleitung, nur für die 2 angegebenen Steckdosen passt. Ich benutze diverse Funksteckdosen, unterschiedlicher Hersteller, nicht alle lassen sich über Mäuseklavier einstellen. Z.B. meine REV Ritter… aber auch das ist kein Problem, denn es gibt diverse Methoden, um die Codes rauszubekommen. Ich benutze dazu den o.g. Empfänger, der an einen Buspirate angeschlossen wird und die Software OpenLogic Sniffer. Aus dem Ergebnis, kann man dann unter Zuhilfenahme des Datenblattes vom PT2260 (http://www.spelektroniikka.fi/kuvat/PT2260.pdf ) die Codes zusammenbasteln.

    • Hallo Hubert,

      danke für deien Kommentar. Diese Anleitung bezieht sich zunächst erstmal nur auf Funksteckdosen, welche über DIP Schalter konfiguriert werden können. Bei selbstlernenden Steckdosen muss der zu sendende Code natürich erst herausgefunden werden – Zum Beispiel mit deiner Variante. Das Tool Pilight für den Pi hat aber auch schon viele Protokolle von selbstlernenden Steckdosen implementiert, sodass dies ebenfalls eine gute Alternative ist.

    • Hallo Mirko,

      die Antennen sind mittlerweile nicht mehr standardmäßig beim Sender / Empfänger dabei. Zu Kaufen gibt es diese beispielsweise bei Amazon (habe ich allerdings noch nicht probiert). Ich nehme dafür immer selber Draht aus der Bastelkiste. Ich hab gute Erfahrungen gemacht mit normalem Draht (Einzelader). Wichtig ist das der Draht und damit die Antenne 17 cm lang ist für 433 MHz 🙂

    • Schick 🙂 Aber wieso unbedingt MySQL? Ich nehme an ihr nutzt MySQL zu speichern der Gerätedaten? Dann ist MySQL ein bisschen to much. Der MySQL Dienst zieht auf dem Pi relativ viele Ressourcen, dabei sollen bei eurem Projekt „nur“ ein paar Geräteadresse abgelegt werden. SQLite wäre da besser 🙂

  • Achtung auf aktuellen Rasbian-Installationen muss der Unterordner http für das Webinterface verwendet werden:
    mv ~/raspberry-remote/webinterface/* /var/www/http/send443

    Ansonsten ist die Seite nicht erreichbar.
    Danke für die tolle Anleitung.
    Viele Grüße
    Darius

    • Hallo Darius, du scheinst dich vor kurzem erst mit der Thematik auseinandergesetzt zu haben. Bei mir funktioniert das Web Interface einfach nicht. Ich habe die Anleitung schon einige Male durchgearbeitet, aber irgendwas scheint nicht zu funktionieren.
      Die Steckdose lässt sich schalten. In der Konsole kommen auch keine Fehlermeldungen, wenn ich die Befehle dort eingebe. Trotzdem öffnet sich nicht das Bild wie oben mit den Schaltern und den Roten Vierecken.
      Ich bekomme immer nur die Meldung:
      Not Found

      The requested URL /send443 was not found on this server.

      Apache/2.4.10 (Raspbian) Server at 192.168.178.57 Port 80

      wenn ich http://192.168.178.xx/send443 in Chrome eintippe.
      Deinen Hinweis, send443 noch in http umzukopieren habe ich auch befolgt. Also was mache ich verkehrt??? Bitte hilf mir jemand. Ich sitze da nicht den ersten Tag vor.
      Viele Grüsse
      Basti

  • Bei mir kommt es zu einer Fehlermeldung, wenn ich den Befehl
    „mv ~/raspberry-remote/webinterface/* /var/www/send443“. Nämlich zu:

    mv: target ‘/var/www/send44’ is not a Directory

    Was kann ich dagegen machen ?
    Danke

  • Hallo, äusserst interessant!!
    Ich bin Neuling in der Haustechnik und suche zum Probieren eine kostengünstige und einfache Lösung. Meine Frage wäre ob deine Installation (RPi + GPIO 433Mhz Antennen) auch mit FHEM betrieben werden kann? Braucht es zusätzliche SW? Möchte momentan ein paar Intertechno schalter bedienen…

    Vielen Dank für die Hilfe!!!

    • Hallo Torsten,

      mit diesen Sendemodulen kannst du auch mit FHEM arbeiten. Wie diese in FHEM eingebunden werden weiß ich leider nicht, da ich damit noch nicht groß gearbeitet habe.

  • Hallo Tony,

    super Anleitung 🙂

    Da dies mein Einstiegsprojekt in die Pi Welt ist, stellt sich mir die fragen der mehrfach Nutzungen eines Pis. Ich überlege nämlich auch einen Media Center mir einzurichten.
    Ist es möglich den 433 MHz Sender und einen Media Center auf einem Pi laufen zulassen oder überfordert das den Pi?

    Viele Grüße
    Martin

    • Hallo Martin,

      das kannst du natürlich so machen. Der Sender zieht nicht viel an Ressourcen – eigentlich gar nix. Wenn dann ist es der Apache der hier auf die Ressourcen schlägt. Aber da du ja keine Webseite mit mehreren hundert Seitenaufrufen in kurzen Zeiträumen betreibst, ist das kein Problem 🙂

    • Das Set kannst du nehmen. Ist im Grunde das gleiche, welches ich verlinkt habe. Eine Antenne brauchst du, sowhl am Sender als auch am Empfänger. Mit den dort beiliegenden Antennen hatte ich noch nicht all zu gute Erfahrungen, zumindest das eine mal wo ich diese verwendet habe. Ich fahr immer ganz gut wenn ich mir selbst einen 17,2 cm langen Draht nehme, diese wickel und anlöte 🙂

  • Hi

    Ich habe die Anleitung befolgt und alles funktioniert soweit, jedoch kann ich die Steckdose nur ansteuern, wenn das Handy und der Raspberry im gleichen WLAN sind. Ist es nicht möglich, mit dem Handy von unterwegs darauf zuzugreifen?