Das Schalten von 433 MHz Funksteckdosen ist eine beliebte Aufgabe für den Raspberry Pi aus dem Bereich der Hausautomation. Eine eigene Hausautomatisierung mit dem Pi ist gegenüber einer fertigen Lösung aus dem Handel kostengünstiger und bietet mehr Raum für Individualität. Im Artikel Raspberry Pi: 433 MHz Funksteckdosen schalten wurde bereits gezeigt wie man mit dem Tool raspberrypi-remote einen 433 MHz Sender ansteuert und kompatible Geräte schaltet. Raspberrypi-remote basiert auf dem Programm RC-Switch: Die Installation von RC-Switch wird im Folgenden vorgestellt.
Kompatible Funksteckdosen
Funksteckdosen, welche auf der Frequenz 433 Mhz arbeiten, gibt es in diversen Ausführungen im Handel. Überlicherweise sind Funksteckdosen dahingehend konzipiert, dass man einen 1-0-Code über einen DIP-Schalter einstellen kann. Mit Hilfe von diesem kann dann die Steckdose angesprochen werden. Funksteckdosen vom Typ Elro AB440S sind für die Arbeit mit dem Raspberry Pi sehr beliebt und kompatibel. Konkret verwende ich für dieses Tutorial CSL Funksteckdosen von Amazon.
Neben Funksteckdosen mit konfigurierbarem DIP-Schalter sind einige neuere Modelle selbstlernend. Dabei ist kein DIP-Schalter an den Geräten vorhanden, sondern die Steckdose besitzt einen Lernmodus. Während des Lernmodus übernimmt diese das erste gültige Signal und ist anschließend immer darüber ansprechbar. 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. Ein Problem können dabei auch die abweichenden und herstellerspezifischen Protokolle sein.
433 MHz Funkmodul
Zum Schalten von Funksteckdosen benötigt man zunächst einen 433 MHz Sender. Dieses gibt es oftmals in Kombination mit einem Empfängermodul für wenig Geld.
433 MHz Sende- und Empängermodul
Links im Bild ist das für uns relevante 433 MHz 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
Versprgt wird der Sender mit einer Betriebsspannung von 3,3 Volt bis 5 Volt. Wir verwenden hier eine Betriebsspannung von 5Volt um eine größere Sendeleistung und damit auch eine größere Reichweite zu schaffen. 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.
WiringPi installieren
Auf dem Raspberry Pi benötigen wir zunächst die Programmbibliothek wiringPi zum ansteuern der GPIO-Pins. Dazu laden wir uns WiringPi von Guthub herunter:
git clone git://git.drogon.net/wiringPi
Nachdem das Tool heruntergeladen wurde wechseln wir in das neue Verzeichnis und führen zur Instalaltion von WiringPi den Build-Skript aus.
cd wiringPi
./build
Ist die Installation abgeschlossen, welchseln wir zurück in das Homeverzeichnis.
cd
RC-Switch installieren
Nachdem das Sendemodul angeschlossen und WiringPi heruntergeladen wurde, kann das Tool RC-Switch zum Ansteuern des Sendemoduls bzw. zum Schalten der Funksteckdosen installiert werden. RC-Switch laden wir uns ebenfalls von Github herunter.
git clone https://github.com/r10r/rcswitch-pi.git
Anschließend wechseln wir in das neue Verzeichnis und führen zum installieren das Makefile aus.
cd rcswitch-pi
make
Fertig! Jetzt können wir mit RC-Switch unsere Funksteckdosen schalten. Dazu muss der konfigurierte 1-0-Code über das Funkmodul gesendet werden. Der einzustellende Code setzt sich wie folgt zusammen:
(Systemcode, 5 Stellen)(Unitcode, 5 Stellen)
Der Systemcode, oder auch Hausecode genannt, sollte einheitlich sein. Weiterhin empfiehlt es sich den Hauscode entwas abzuändern, damit nicht zufällig der Nachbar den gleichen verwendet und eure Geräte schaltet – oder umgekehrt. Der Unitcode spiegelt die Steckdosennummer wieder und sollte bei jeder Steckdose unterscheidlich sein, es sei denn, mann will 2 Steckdosen gleichzeitig senden. Der Unitcode ist wie folgt zu übersetzen:
(Unitcode) = 01000 bedeutet Steckdosennummer:2
(Unitcode) = 00001 bedeutet Steckdosennummer:5
Mehr Informationen zur Zusammensetzung und Bedeutung des 1-0-Codes sind im Artikel zu raspberrypi-remote nachzulesen.
Zum Senden des 1-0-Codes an die Steckdose führen wir den Send-Skript von RC-Switch mit entsprechenden Parametern aus.
sudo ./send (Systemcode)(Steckdosennummer)(Zustand 1 An, 0 Aus)
Der Systemcode wird dabei als 1-0-Code eingegeben, die Steckdosennummer jedoch als Übersetzung. Mit dem folgenden Befehl schalten wir zum Beispiel die Steckdose mit der Nummer 2 und dem Systemcode 11101 auf An (1):
sudo ./send 11101 2 1
Die hier vorgestellte Funktionsweise und Handhabung der Send-Funktion ist auf andere Funksteckdosen mit DIP-Konfiguration übertragbar.
Quelle (Stand 08.06.2015): raspberrypi.org
HI Tony
Ich hab deine Konfig für das Schalten von Funksteckdosen übernommen, funktioniert super :)
vielen Dank dafür …
Nun hab ich noch ein Empfängermodul eingebaut, und möchte damit auch noch codes von Intertechno Funksendern auffangen, um meine Anlage ein wenig zu erweitern.
Da ich leider nicht so der Rpi guru bin, wollt ich fragen, ob du nicht auch eine Anleitung dazu hättest :)
ich hab im Netz noch nix gefunden, mit dem ich klar komme. :(
vielen Dank schonmal
grüße
Chris
Hi Tony, prima Artikel, danke! Sehr knackig auf das Wesentliche gebracht. Ich habe damit meine Funksteckdosen in mein Smarthome integriert.
Freut mich das dir der Artikel weitergeholfen hat :)
Wenn ich “git clone git://git.drogon.net/wiringPi” bekomme ich als Antwort:
-bash: git: Kommando nicht gefunden. Woran liegts?
Hallo,
auf dem Raspberry Pi ist nicht git installiert. Dazu einfach: sudo apt-get install git
Hallo ich wollte meine Rolladen damit steuern ich habe Funkempfänger von Jarolift 433 MHz lassen sich diese damit auch steuern?
Wenn diese über einen 433 MHz Funkempfänger ansprechbar sind, dann ja. Aber ohne das Datenblatt jetzt zu lesen, wird das Protokoll anders aussehen und nicht mit den Funksteckdosen übereinstimmen.
Servus, leider geht’s bei mir gar nicht. Habe alle Schritte erfolgreich ohne Fehlermeldung durchgeführt, Steckdose ist auch in Ordnung. Wie kann ich debuggen, ob meine GPIO-Pins bspw funktionieren oder die Antenne geht?
Danke für jede Hilfe
Hallo Georg,
du kannst zunächst mal eine LED mit Vorwiderstand an den GPIO Pin gegen Masse hängen um zu schauen ob sich da was tut. Welche Antenne verwendest du?
Hi Tony,
tolle Beschreibung! Ich habe eine Frage an dich. Ist es mit möglich dieses Sende Modul ohne Raspberry zu verwenden sodass wenn eine Spannung an das Sende Modul kommt sendet es eine bestimmte Frequenz/Signal an einen Raspberry mit Empfänger.
LG Roland
Leider nein, mit diesem Modul nicht, da es im Grunde ein einfacher Schwingkreis ist.
Hallo Ronald,
falls das Thema noch aktuell ist, wäre vielleicht ein Arduino Nano oder Ähnliches interessant für Dich! :)
LG Silvano
Hallo Tony,
Ich wollte eben die Anleitung befolgen um den Raspberry mit dem Sender zu verwenden. Jedoch scheint es, als wäre wiringPi nicht mehr verfügbar, hast du praktikable Alternativen
Viele Grüße
Fabian
Hallo Fabian,
wiringPi kann mittlerweile via Repo installiert werden: sudo apt-get install wiringpi
Hallo Tony,
Vielen Dank für deine Anleitung.
Würde das steuern der Steckdosen dann auch über Node Red “funk”-tionieren?
Gruß und danke
Nach dem Wechsel in das Verzeichnis rcswitch-pi und dem Befehl make erhalte ich immer allerhand Warnungen und Fehlermeldungen, bis dann der Befehl mit der Meldung Fehler 1 abgebrochen wird. Komme an der Stelle nicht weiter.
+1