{"id":156,"date":"2014-09-09T19:48:44","date_gmt":"2014-09-09T17:48:44","guid":{"rendered":"http:\/\/chriskrz.selfhost.bz\/?p=156"},"modified":"2025-03-03T10:39:24","modified_gmt":"2025-03-03T09:39:24","slug":"433mhz-schalt-steckdosen-fernsteuern","status":"publish","type":"post","link":"https:\/\/www.rustimation.eu\/index.php\/433mhz-schalt-steckdosen-fernsteuern\/","title":{"rendered":"433MHz Schalt-Steckdosen fernsteuern"},"content":{"rendered":"<p>Nat\u00fcrlich kann der Raspberry Pi als Universalgenie auch drahtlose Aktoren (Funk Schalt-Steckdosen und anderes) fernsteuern. Gerade in der Home Automation bieten sich hier schier unbegrenzte M\u00f6glichkeiten. Das geht auch recht einfach. Wie man mit dem Pi handels\u00fcbliche 433MHz Funk Schalt-Steckdosen fernsteuern kann,\u00a0 steht in nachfolgender Anleitung.<!--more--><\/p>\n<h6>Update November 2023<\/h6>\n<p>Der hier stehende Beitrag ist nun \u00fcber 9 Jahre alt. Einiges hat sich ge\u00e4ndert, so dass Manches von dem hier Beschriebenen nicht mehr ganz auf der H\u00f6he der Zeit ist. So gibt es zum Beispiel inzwischen ganz andere Raspberry Pi Modelle. Auch w\u00fcrde ich anstatt der 433Mhz Schalter eher einen Shelly Switch oder einen Shelly Plug verwenden, der sehr viel betriebssicherer \u00fcber WiFi angesteuert wird.<\/p>\n<p>Anhand der immer noch erfolgenden, zahlreichen Aufrufe dieses Beitrags sehe ich, dass es wohl noch genug Personen gibt, die mit einem 433MHz Anwendungsfall arbeiten. Also ans Werk!<\/p>\n<p><strong>Achtung<\/strong>: Der hier verwendete Code ist f\u00fcr Python 2.7 geschrieben worden. Er d\u00fcrfte aber auch mit kleineren \u00c4nderungen mit Python 3.x laufen. <strong>Print<\/strong> Statements m\u00fcssen den anzuzeigenden Inhalt jetzt in Klammern fassen: <span class=\"lang:default decode:true crayon-inline \">print(\"das ist der Text\")<\/span><\/p>\n<h3>Rahmenbedingungen \/ Voraussetzungen<\/h3>\n<p>Um mit dem Pi eine oder mehrere 433 MHz Schaltsteckdosen fernzusteuern brauchst du:<\/p>\n<ul>\n<li>Grundkenntnisse im Handling des Raspberry Pi: wie man eine Datei erzeugt, sie z.B. mit Nano editiert, Owner und Dateimodus \u00e4ndert und all so was.<\/li>\n<li>Einen Raspberry Pi: ob Modell A oder B ist egal, das Modell B ist im headless Betrieb (also ohne angeschlossenen Monitor) einfacher zu konfigurieren und kostet nur marginal mehr.<\/li>\n<li>Einen 433 MHz Sender: gibts bei <a href=\"http:\/\/www.amazon.de\/gp\/product\/B007XEXICS\/ref=oh_details_o02_s00_i00?ie=UTF8&amp;psc=1\" target=\"_blank\" rel=\"noopener\">Amazon <\/a>oder g\u00fcnstiger und schneller bei <a href=\"http:\/\/www.watterott.com\/de\/RF-Link-Sender-434MHz\" target=\"_blank\" rel=\"noopener\">Watterott electronic<\/a> &#8211; die haben auch Datenbl\u00e4tter dazu.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"wp-image-679 size-thumbnail aligncenter\" src=\"https:\/\/www.rustimation.eu\/wordpress\/wp-content\/uploads\/433MHz_Sender-2-150x150.jpg\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/www.rustimation.eu\/wordpress\/wp-content\/uploads\/433MHz_Sender-2-150x150.jpg 150w, https:\/\/www.rustimation.eu\/wordpress\/wp-content\/uploads\/433MHz_Sender-2-300x300.jpg 300w, https:\/\/www.rustimation.eu\/wordpress\/wp-content\/uploads\/433MHz_Sender-2.jpg 385w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/li>\n<li>Ferner noch eine oder mehrere 433MHz Funkschaltdosen. Hier gibt es ein gro\u00dfes Angebot, ich habe ein 2er Set inkl. Fernbedienung von Elro genommen, die gibts auch bei <a href=\"http:\/\/www.amazon.de\/gp\/product\/B009A7E7NA\/ref=oh_details_o01_s00_i00?ie=UTF8&amp;psc=1\" target=\"_blank\" rel=\"noopener\">Amazon <\/a>oder im Baumarkt. Ich kann leider nicht garantieren, dass diese Anleitung mit Schaltdosen von anderen Herstellern funktioniert &#8211; mit Produkten von Elro seid ihr jedenfalls auf der sicheren Seite.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-678 aligncenter\" src=\"https:\/\/www.rustimation.eu\/wordpress\/wp-content\/uploads\/elro.jpg\" alt=\"\" width=\"225\" height=\"133\" \/><\/p>\n<ul>\n<li>Ein genialisches Python Programm zum Schalten der Steckdosen \u00fcber den mit dem Pi verbundenen 433MHz Sender &#8211; geschrieben von HeikoHeiko. Gibt es bei <a href=\"http:\/\/pastebin.com\/aRipYrZ6\" target=\"_blank\" rel=\"noopener\">http:\/\/pastebin.com\/aRipYrZ6<\/a>. Einfach das dort abgebildete Programm in eine auf dem Pi zu erzeugende Datei namens elropi.py pasten.<\/li>\n<li>Au\u00dferdem muss noch die <code>rpi.gpio<\/code> Python Library installiert werden. Wie das geht steht <a href=\"http:\/\/www.raspberrypi-spy.co.uk\/2012\/05\/install-rpi-gpio-python-library\/\" target=\"_blank\" rel=\"noopener\">hier.<\/a><\/li>\n<li>Im Folgenden gehe ich davon aus, dass der User Pi hei\u00dft und dass die hier erw\u00e4hnten Routinen im Verzeichnis <code>\/home\/pi\/433mhz<\/code> liegen<\/li>\n<li>WiringPi braucht ihr <strong>nicht<\/strong>. Imho nur \u00fcberfl\u00fcssiger Ballast. Im Internet findet ihr aber sicher auch jede Menge anderer Anleitungen, die auf WiringPi basieren.<\/li>\n<\/ul>\n<h3>Anschluss des Senders<\/h3>\n<p>Der Sender hat 4 Pins. Einer davon ist die Antenne [ANT], an welchem wir einen 17cm langen Draht befestigen. Ob ihr das mit dem L\u00f6tkolben macht oder den Buchse-Buchse Bastelkabeln vom Pi, bleibt euch \u00fcberlassen.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-675\" src=\"https:\/\/www.rustimation.eu\/wordpress\/wp-content\/uploads\/IMG_20140415_210700017-1-1024x575.jpg\" alt=\"\" width=\"604\" height=\"339\" srcset=\"https:\/\/www.rustimation.eu\/wordpress\/wp-content\/uploads\/IMG_20140415_210700017-1-1024x575.jpg 1024w, https:\/\/www.rustimation.eu\/wordpress\/wp-content\/uploads\/IMG_20140415_210700017-1-300x169.jpg 300w, https:\/\/www.rustimation.eu\/wordpress\/wp-content\/uploads\/IMG_20140415_210700017-1-768x431.jpg 768w\" sizes=\"auto, (max-width: 604px) 100vw, 604px\" \/><\/p>\n<p>Ich habe mich f\u00fcr die Steckervariante entschieden und nach dem Test des Aufbaus die Stecker mit etwas Hei\u00dfkleber fixiert.<\/p>\n<p>Jetzt wirds leider etwas tricky! Es gibt viele Varianten des Senders und ich garantiere nicht, dass die Pinbelegung immer dieselbe ist. In meinem Fall ist die Belegung wie folgt:<\/p>\n<p>1 &#8211; Ground (Masse) geht an Pin 6 oder 25 des Pi<br \/>\n2 &#8211; Data In wird mit einem freien GPIO Pin des Pi verbunden &#8211;<br \/>\nbei mir ist das Pin 26 f\u00fcr GPIO#7<br \/>\n3 &#8211; Schlie\u00dflich noch die Stromversorgung 3,3 Volt an Pin 1 oder Pin 17 des Pi<br \/>\n4 &#8211; Die Antenne wie oben beschrieben. \u00dcber kurze Entfernungen von 1-2 Metern braucht man die Antenne nicht unbedingt.<\/p>\n<p>Wer sich mit den Paspberry Pi Kontakten nicht so richtig auskennt, dem empfehle ich die Lekt\u00fcre von <a href=\"http:\/\/elinux.org\/RPi_Low-level_peripherals#Introduction\" target=\"_blank\" rel=\"noopener\">Elinux Org &#8211; RPi Low Level Peripherals.<\/a><\/p>\n<p>Ob und wie ihr das in ein Geh\u00e4use einbaut, bleibt euch \u00fcberlassen. F\u00fcr diesen Anwendungsfall habe ich dieses <a title=\"Polystyrol Geh\u00e4use\" href=\"http:\/\/www.conrad.de\/ce\/de\/product\/523178\/Universal-Gehaeuse-Polystyrol-EPS-Schwarz-146-x-150-x-60-1-St\" target=\"_blank\" rel=\"noopener\">Geh\u00e4use <\/a>hier verwandt . Ist der USB Stecker vom Stromanschluss &#8211; wie meist &#8211; gerade ausgef\u00fchrt, muss man an der passenden Stelle eine Aussparung in die Frontplatte f\u00fcr den Micro-USB Stecker bohren. Die SD Speicherkarte steckt bei meiner eigenen L\u00f6sung in einem Micro SD Adaper, also steht sie nicht \u00fcber. ggf. also auch hier noch bohren und feilen. Alternativ gehen auch Gefrierdosen zum Verpacken der Elektronik.<br \/>\nIn H\u00f6he der Befestigungsbohrungen des Pi habe ich mit Hei\u00dfkleber zwei Holzkl\u00f6tzchen in das Geh\u00e4use geklebt, um den Pi darauf festzuschrauben. Den Sender habe ich direkt mit dem Geh\u00e4use verklebt. Generell finde ich die Geh\u00e4usesituation f\u00fcr den permanenten Verbau des Pi mit angeschlossener Peripherie eher unbefriedigend.<\/p>\n<h3>Einrichten der Funksteckdose<\/h3>\n<p>Die Funktsteckdose muss erst einmal codiert werden. Dazu hat sie i.d.R. eine kleine mit einem Deckel versehene \u00d6ffnung unter der sich ein 10-fach DIP Schalter befindet. Schalterchen 1 bis 5 sind f\u00fcr den Systemcode da.<br \/>\nWir k\u00f6nnen eine beliebige Kombination w\u00e4hlen z.b 1-0-1-0-1 und merken uns diese. Ebenso k\u00f6nnen wir nun die Fernbedienung codieren. Die Fernbedienung wird eigentlich nicht ben\u00f6tigt, ist aber ganz praktisch zum Testen.<\/p>\n<p>Die Schalterchen 6 bis 10 legen fest, welche Taste der Fernbedienung gedr\u00fcckt werden muss um die Dose zu schalten. Der erste Schalter (= Nr. 6) auf ON bedeutet, dass Taste A der Fernsteuerung die Dose schaltet. Schalterchen 7 bis 10 bleiben auf OFF.<\/p>\n<p>Im Weiteren gehe ich davon aus, dass die Dose genauso konfiguriert ist, d.h. auf Taste A liegt. Jetzt k\u00f6nnt ihr schon einmal mit der Fernbedienung ausprobieren, ob das funktioniert &#8211; vorausgesetzt, ihr habt eine solche.<\/p>\n<h3>Programm einrichten<\/h3>\n<p>Das Programm elropi.py haben wir schon auf den Pi kopiert und wir machen es im Editor auf.<\/p>\n<pre class=\"lang:python decode:true \">nano elropi.py<\/pre>\n<p>Fast am Ende der Datei (ca. Zeile 91) finden sich zwei Zeilen<\/p>\n<pre class=\"nums:false nums-toggle:false expand:true lang:python mark:2,4 decode:true\"># Change the default_key[ ] variable below according to the dipswitches on your Elro receivers.\r\ndefault_key = [1,0,0,0,1] \r\n# change the pin accpording to your wiring\r\ndefault_pin = 7<\/pre>\n<p>Die Werte in den eckigen Klammern der Zeile <em>default_key<\/em> \u00e4ndern wir so ab, dass sie dem oben eingestellten Systemcode entsprechen. Den <em>default_pin<\/em> \u00e4ndern wir auf den von uns gew\u00e4hlten GPIO Pin unseres Raspberry Pi. Der hier verwendete GPIO Pin #7 entspricht dem physischen Pin #26.<\/p>\n<p style=\"padding-left: 30px;\"><strong>Achtung:<\/strong> Bitte beachtet, dass die GPIO Pin Nummerierung etwas inkonsistent gehandhabt wird. GPIO Pin #7 ist nicht mit dem physikalischen Pin #7 zu verwechseln! Zu allem \u00dcberfluss gibt es noch Unterschiede in der Pinbelegung zwischen den ersten Rev. 1 Boards und den aktuelleren Rev. 2 Boards. Am besten ihr schaut euch die oben erw\u00e4hnte Seite bei <a href=\"http:\/\/elinux.org\/RPi_Low-level_peripherals#Introduction\">elinux.org<\/a> an oder nutzt diese sehr hilfreiche <a href=\"http:\/\/www.digitaloffensive.com\/wp-content\/uploads\/2013\/05\/Raspberry-Pi-GPIO-Layout-Revision-2-e1347664831557.png\">Grafik<\/a> hier und druckt sie euch als Referenz aus.<\/p>\n<p>Die oben erw\u00e4hnten \u00c4nderungen werden eigentlich nur ben\u00f6tigt, wenn man elropi.py direkt anspricht, um die Dose zu schalten. Das k\u00f6nnen wir jetzt schon mal testen<\/p>\n<pre class=\"lang:default decode:true\">sudo python elropi.py 1 0<\/pre>\n<p>schaltet die Dose Nummer 1 aus,<\/p>\n<pre class=\"lang:default decode:true\">sudo python elropi.py 1 1<\/pre>\n<p>schaltet sie ein. Der erste Parameter ist also die Dosennummer (hier A), der zweite der gew\u00fcnschte Zustand. Weil wir hier direkt mit der Maschine reden, kann das nur als superuser ausgef\u00fchrt werden, deshalb der <code>sudo <\/code>vornedran.<\/p>\n<p>F\u00fcr den Fall, dass ihr mehr als eine Schaltsteckdose anschlie\u00dfen wollt: Die Dosennummer wird in 2er Potenzen hochgez\u00e4hlt: Dose A =1, Dose B =2, Dose C = 4, Dose D = 8)<\/p>\n<h3>In eigene Programme einbinden<\/h3>\n<p>F\u00fcr eigene Shell Programme (Bash Skript) k\u00f6nnt ihr den Programmaufruf wie oben direkt in das Skript einbinden.<\/p>\n<p>Bei <strong>Python<\/strong> geht man wie folgt vor:<\/p>\n<p>Am Anfang des Python Skripts einfach die Zeile<\/p>\n<pre class=\"lang:python decode:true \">from elropi import RemoteSwitch<\/pre>\n<p>einf\u00fcgen. Das vorhin erstellte Programm <code>elropi.py<\/code> sollte im selben Verzeichnis liegen, wie euer Python Programm. Wer Python besser beherrscht als ich, wird sicher auch eine elegantere L\u00f6sung finden, bei der <code>elropi.py<\/code> in einem zentralen Library Verzeichnis abgelegt und von dort aus aufgerufen werden.<\/p>\n<p>Die weiter oben vorgenommenen Einstellungen im Programm elropi.py n\u00fctzen uns hier nichts. Bei Verwendung der importierten Klasse m\u00fcssen die die Steuerungsparameter deshalb im aufrufenden Programm wie folgt eingestellt werden<\/p>\n<pre class=\"lang:python decode:true \"># change device number according to your requirements\r\ndeviceno=1\r\n# Change the key[] variable below according to the dipswitches on your Elro receivers.\r\ndefault_key = [1,0,1,0,1]\r\n# change the GPIO pin according to your wiring\r\ndefault_pin =7<\/pre>\n<p>und mit<\/p>\n<pre class=\"expand:true lang:python decode:true\"># set parameters for class elropi.py\r\ndevice = RemoteSwitch(device=deviceno,key=default_key,pin=default_pin)<\/pre>\n<p>in das Device Objekt hineingeschrieben. Eingeschaltet wird die Dose dann mit<\/p>\n<pre class=\"lang:python decode:true\">device.switchOn()<\/pre>\n<p>Ausgeschaltet mit<\/p>\n<pre class=\"lang:python decode:true\">device.switchOff()<\/pre>\n<p>Dabei die Gro\u00df\/Kleinschreibung beachten&#8230;<\/p>\n<p>Hier zwei Anwendungsbeispiele: <a href=\"http:\/\/www.rustimation.eu\/index.php\/haengenden-router-automatisch-rebooten\/\">H\u00e4ngenden Router automatisch rebooten<\/a> und<a href=\"http:\/\/www.rustimation.eu\/index.php\/iot-heizungssteuerung-1-lcd-panel\/\"> IoT Heizungssteuerung<\/a>. Viel Spa\u00df!<\/p>\n<p>Kommentare jederzeit willkommen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nat\u00fcrlich kann der Raspberry Pi als Universalgenie auch drahtlose Aktoren (Funk Schalt-Steckdosen und anderes) fernsteuern. Gerade in der Home Automation bieten sich hier schier unbegrenzte M\u00f6glichkeiten. Das geht auch recht einfach. Wie man mit dem Pi handels\u00fcbliche 433MHz Funk Schalt-Steckdosen fernsteuern kann,\u00a0 steht in nachfolgender Anleitung.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[54,3,9,10],"tags":[13,20,34,36],"class_list":["post-156","post","type-post","status-publish","format-standard","hentry","category-433mhz","category-fernsteuern","category-python","category-raspberry-pi","tag-433mhz","tag-elro","tag-python-2","tag-raspberry-pi"],"_links":{"self":[{"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/posts\/156","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/comments?post=156"}],"version-history":[{"count":1,"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/posts\/156\/revisions"}],"predecessor-version":[{"id":3369,"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/posts\/156\/revisions\/3369"}],"wp:attachment":[{"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/media?parent=156"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/categories?post=156"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/tags?post=156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}