Selbstlernende Funksteckdosen (ohne DIP-Schalter) mit dem Raspberry Pi steuern

Schon länger wollte ich einmal Funksteckdosen mit einem Raspberry Pi steuern.  Also ein & ausschalten!

Und da ich mich in letzter Zeit sehr Intensiv mit meinem neuem 3D Drucker dem Creality Ender 3 Pro (*Amazon Link) beschäftige, musste ich mir die Zeit einfach einmal nehmen 😉

Da ich den 3D Drucker über den Raspberry Pi steuern & überwachen, sowie den Drucker & dessen Beleuchtung ein / ausschalten wollte, habe ich auf dem Raspberry Pi „Octoprint“ installiert.
Was im Prinzip ja nicht anderes ist als Raspbian Linux, nur eben mit der Steuerungssoftware „Octoprint“ bereits vorinstalliert 😉 

Es gibt zwar eine Menge an Tutorials dafür, die meisten davon verwenden aber noch alle „alte“ Funksteckdosen mit DIP-Schaltern.

Da ich aber solche Funksteckdosen kaum mehr zu bekommen sind, brauchte ich eine Lösung die auch mit den „neueren“ sogenannten selbstlernenden Funksteckdosen funktioniert 😎 

Daher möchte ich hier eine kleine Anleitung schreiben, wie das funktioniert & welche Teile / Hardware ich hierfür verwendet habe 😉

 

Folgende Hardware habe ich für meinen Testaufbau verwendet bzw. wird benötigt:

Software:

  • Win32DiskImager (um das Image auf die SD Karte zu schreiben)
  • Putty oder anderer SSH Client

Optional noch:

 

Hat man alles nötige beisammen, kann es auch schon losgehen 😉

In dieser Anleitung gehe ich übrigens davon aus, dass Raspbian oder Octoprint oder ein anderes Linux schon auf der SD-Karte installiert ist, bzw. auf dem Raspberry Pi läuft!
Auch gehe ich davon aus, dass jeder weiß wie man sich auf dem Pi verbindet & anmeldet 😉
Außerdem setzte ich hier auch grundlegende Linux & Raspberry Pi Kenntnisse voraus
😆
Falls das noch nicht der Fall ist, gibt es im Netz ja genügend gute Anleitungen.

(Sollte aber dennoch jemand Hilfe etc. brauchen, so kann er sich aber gerne an mich wenden!)

 

Nun kann es los gehen 😉

  1. Zuerst verbindet man sich mit Putty oder einem anderen SSH Client auf den Raspberry Pi, und loggt sich dort ein.
  2. Als nächstes aktualisieren wir den Pi nochmals, bevor wir die benötigten Programme installieren mit:
    apt-get update
    apt-get upgrade
  3. Danach installieren wir „GIT“ und „WiringPi„:
    apt-get install git
    git clone git://git.drogon.net/wiringPigit
    cd wiringPi
    ./build
  4. Als nächstes müssen wir das Empfangsmodul & das Sendemodul am RPi bzw. dessen GPIO Pin’s anschließen:Für das Sendemodul verbinden wir nun folgende Pin’s mit dem Pi:

    Raspberry Pi GPIO 17 -> DATA 433Mhz Sendemodul
    Raspberry Pi GND -> GND 433Mhz Sendemodul
    Raspberry Pi 5V -> VCC 433Mhz Sendemodul

    Für das Empfangsmodul verbinden wir die folgenden Pin’s mit dem Pi:
    (hier sieht man übrigens auch gleich nochmal das vorhin angeschlossene Sendemodul 😉 )Raspberry Pi GPIO 27 -> DATA 433Mhz Sendemodul
    Raspberry Pi GND -> GND 433Mhz Sendemodul
    Raspberry Pi 5V -> VCC 433Mhz Sendemodul

    Und hier auch noch (falls es jemand braucht) die Belegung der GPIO Pin’s auf dem Raspberry Pi selbst:


    ➡  Falls auch noch jemand sehen möchte wie es bei mir im angeschlossenen Zustand ausgesehen hat….. 😎

  5. Um den 433 MHz Sender & den 433Mhz Empänger nun ansprechen zu können, benötigen wir noch die Bibliothek „433UtilsVorher müssen wir aber noch „Git-Core“ installieren mit:
    apt-get install git-core
    apt-get update
    apt-get upgrade

    Danach installieren wir die „433Utils“:
    git clone --recursive https://github.com/ninjablocks/433Utils.git
    cd 433Utils/RPi_utils
    make all
  6. Im nächsten Schritt lesen wir den Code für jede Taste der Fernbedienung aus.
    Sprich für die erste Steckdose Taste EIN & Taste AUS, gibt es jeweils einen eigenen Code!Hierfür welchen wir in nun in den Unterordner „. /RFSniffer„, und starten das gleichnamige Programm „RFSniffer
    cd RFSniffer
    ./RFSniffer
  7. Jetzt halten wir die Fernbedienung zum Empängermodul, und drücken dort z.B. für die erste Steckdose die Taste EIN.
    In Putty bekommen wir danach eine Meldung die uns den CODE der jeweiligen Taste mitteilt:
    ➡  Recieved XXXXXXX (wobei die X hier für die Zahlenkombination der jeweiligen Taste steht!)Das ganze wiederholt Ihr nun mit jeder Taste, und das jeweils für EIN & AUS!

    Notiert auch diese Codes, penibel!
    Also welcher Code für welche Taste ist, und auch ob dieser für EIN oder für AUS ist!
    😉
    💡  Achja, am besten steckt Ihr bevor Ihr das macht, die Funksteckdosen auch noch in eine richtige Steckdose, mit einem kleinem Verbraucher wie einer Lampe… 😉
  8. Hat man alle Codes ausgelesen & notiert, beenden wir das Programm „RFSNiffer“ , indem wir „STRG+Cdrücken.
  9. Jetzt kommen wir zu dem Teil des ganzen hier, der richtig Spaß macht!
    Wir steuern erstmals die Funksteckdosen über den Raspberry Pi bzw. eben über SSH….Dafür nutzen wir das Programm „codesend„, dass ebenfalls im Ordner „RPI_utils“ liegt 😉
    Steckdose 1 einschalten:
    codesend XXXXXXX (hier wieder die XXX durch die vorhin notierte Zahlenkombination von Steckdose 1 für EIN ersetzen!)

    Als reines Beispiel:
    codesend 1234567
    Natürlich muss dafür die Steckdose 1 auch in einer richtigen Steckdose stecken, und natürlich sollte auch ein Verbraucher wir z.B. eine Lampe angeschlossen sein, um zu sehen ob auch alles funktioniert hat 😉

    Steckdose 1 ausschalten:
    codesend XXXXXXX (hier wieder die XXX durch die vorhin notierte Zahlenkombination von Steckdose 1 für AUS ersetzen!)Als reines Beispiel:
    codesend 0234567

     

  10. Hat man alles richtig gemacht, haben wir gerade erfolgreich einen Verbraucher auf Funksteckdose 1 ein & wieder aus geschaltet 😉
    Das ganze lässt sich nun mit den vorhin notierten Codes, auch für die anderen Funksteckdosen wiederholen!
    Auch kann man diesen Befehl zum ein & ausschalten nun in seinen eigenen Skripts / Webseiten etc. einbinden.:arrow:  Ich z.B: habe bei mir in Octoprint 4x Buttons hinzugefügt, mit denen ich jeweils einmal den 3D Drucker und die Beleuchtung dafür  ein & ausschalten kann :mrgreen:

 

Ich hoffe ich konnte mit dieser kleinen überschaubaren Anleitung dem ein oder anderen ein bisschen weiterhelfen.
Natürlich gäbe es noch 10000 weitere Möglichkeiten, das ganze zu optimieren bzw. das ganze auf die „Spitze“ zu treiben…. 😆

Das würde hier aber den Rahmen sprengen 😆

 

Permanentlink zu diesem Beitrag: https://blog.adminweb.at/selbstlernende-funksteckdosen-ohne-dip-schalter-mit-dem-raspberry-pi-steuern/

14 Kommentare

Zum Kommentar-Formular springen

  1. Achtung: Der receiver darf beim raspberry nicht an 5V angeschlossen werden, da die GPIO-pins des pi nur für 3,3V ausgelegt sind!!!

    • Benjamin auf 13. März 2021 bei 12:54
    • Antworten

    Hallo
    hat schon jemand geschafft die aktuellen Modelle zu Schalten?
    Fa. Brennenstuhl schreibt auf seiner Hompage selbst, dass deren aktuelle Serie nicht mehr auf diese Weise zu schalten seinen und sie deshalb noch für die Raspi Gemeinschaft die alten noch weiter vertreiben. Die kosten dann aber inzwischen das doppelte.
    Jetzt habe ich nochmal welche von einem anderen Hersteller gekauft und auch da funktioniert es nicht.
    der Sniffer wirft immer vier verschiedene Codes pro Taste aus, immer in der gleichen Reihenfolge. Das gleiche auch die von Brennenstuhl. Wenn ich die codes nach und nach raus sende, passiert leider nichts. Meine (Ur)alten Funkschalter funktionieren im Übrigen. Somit schließe ich einen Fehler meinerseits erstmal aus.

    Im Netz habe ich leider noch nichts dazu gefunden

    1. Ich hab genau das selbe Problem, auch mit einem Brennenstuhl set.
      Versuche aktuell das Signal irgendwie Aufzunehmen, und dann wieder zu senden…

      Mal schauen wo die Reise hin geht, wäre super wenn jemand seine Erfahrungen auch teilen könnte.

        • Ha Son Nguyen auf 8. Dezember 2022 bei 20:04
        • Antworten

        Das Problem hatte ich auch. Ich habe raus gefunden, dass es an der verwendeten Puls-Länge liegt. Es funktioniert nur wenn die Puls-Länge im Bereich von 220-320 Mikrosekunden liegt. Die Lösung ist, die Puls-Länge auf 270 Mikrosekunden im Code oder per Parameter explizit anpassen, weil Default Puls-Länge von RCSwitch außerhalb dieses Bereiches liegt.
        Gruß
        Ha Son Nguyen

    • Ernst auf 16. Oktober 2020 bei 18:44
    • Antworten

    Hallo Daniel,

    Danke für Deine Anleitung.
    Ich verwende die 12-Kanal Funksteckdosen von Lunvon. Wenn ich mit dem C++ Script und dem RFSniffer arbeite, bekomme ich negative Ergebnisse. Beim Senden der Codes habe ich kein Erfolg (und ja, ich habe auch die Vorzeichen mal weggelassen).
    Dann habe ich ein python3-Script ausprobiert. Das wiederum lieferte positive (andere) Zahlen (auch ein Delay und Protokoll wird hier angezeigt) – aber auch hier reagiert die Steckdose nicht!
    Das der Sender arbeitet, konnte ich schließlich dadurch prüfen, dass ich beide python-Scripte von verschiedenen Terminals laufen ließ! Wenn ich den Handsender betätigt habe, wurden die selben Parameter angezeigt, wie beim starten des sende-Scripts . Handsender schaltet, mit den Pi3 und 4 „geht’s“ nicht!

    Über einen Tip, würde ich mich sehr freuen.

    Viele Grüße
    und bleib Gesund!

    1. Du must das Protokal auf 2 setzen z.B
      codesend -2110168064 2
      und das die korrespondierende binär Zahl ja mehr als 24 Bit hat muss du das entsprechend anpassen.
      mySwitch.send(code, 32);
      in codesend.cpp

      Viele Grüße
      Ralf

    • Bastian Schremmer auf 3. Juni 2020 bei 4:10
    • Antworten

    Hi Daniel!
    Ich habe es erfolgreich geschafft mit dem obigen Aufbau Funksteckdosen mit dip-schaltern zu steuern.
    Jetzt habe ich zudem Funksteckdosen von „dewenwils“

    https://www.amazon.de/dp/B07VKNXGKW/ref=sr_1_1?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&dchild=1&keywords=dewenwils&qid=1591149976&sr=8-1

    und habe auch den Code meiner ersten Steckdose per Fernbedienung, so wie du es beschrieben hast, ausgelesen. Zuvor habe ich sie natürlich erst angelernt.
    Jedoch wenn ich für Steckdose EIN diesen Code jetzt mit ./codesend 12720076 sende, passiert gar nichts auch wenn ich den Sender direkt neben die Steckdose halte.
    Hast du eine Idee, wie man das dennoch hinbekommen könnte?
    Bzw. brauch man vielleicht ein anderes Protokoll?
    Musste die Fernbedienung beim Auslesen auch ganz nah an den Empfänger halten damit es funktionierte.

    LG Bastian

    1. Hallo!
      und du hast den Sender auch richtig angeschlossen?
      was passiert wenn du die Steckdose ganz nahe zum Sender hältst?
      Bzw. kommt eine Fehlermeldung?

      Stimmt der Code auch wirklich?
      Ich hab auch schon Funksteckdosen gesehen die vorher ein Sonderzeichen zb benötigen.
      Aber wenn das alles nicht geht, hilft da nur googlen. Bei einer brauchte ich mal ein # vorher was ich auch erst durch google gefunden hatte 😉

      LG
      Daniel

    2. Hallo,

      ich habe leider das gleiche Problem mit einer dewenwils Steckdose.
      Gibt es inzwischen eine Lösung?

      Viele Grüße
      Joans

  2. Hab mir mal ein nettes Wardriving-Script geschrieben, das alle Codes rund um meine Codes ausprobiert hat – meine 433MHz-Steckdosen von Aldi haben vielleicht verrückt gespielt – hahaha, das war mal ein Feuerwerk. Dabei habe ich übrigens noch sehr mehr Codes entdeckt, die funktionieren, als solche die von der Fernbedienung rausgesendet wurden. Daraus lässt sich vielleicht sogar ein Algorithmus reverse-engineeren. Ich hoffe, die Nachbarn haben keine solche Sets. 😉

    • Hartmut auf 21. April 2020 bei 18:47
    • Antworten

    Hallo Daniel,
    prinzipiell eine gute Anleitung, alle Achtung!
    Dumm nur, dass meine Steckdosen mit 10-stelligen Codes funktionieren und bei mehr als 8 Stellen macht „codesend“ totalen Mist. Es sendet einen völlig anderen Code als den, den ich eigegeben habe.
    Hast Du dafür vielleicht auch eine Lösung?

    LG
    Hartmut

    1. Hallo Hartmut!

      Da ich leider gerade keine anderen Dosen mit einem 10-stelligen Code hier habe , kann ich dir da leider nicht weiterhelfen.
      Ehrlich gesagt wusste ich gar nicht das es auch 10-stellige gibt.

      Ich mach mich mal im Internet schlau, und sollte ich fündig werden, melde ich mich hier nochmal 😉

      LG
      Daniel

    • Friedrich auf 20. Oktober 2019 bei 14:34
    • Antworten

    Hallo Daniel,

    ich habe leider das Problem, dass meine Fernbedienung bei jedem Betätigen einen anderen Code sendet. Selbst, wenn ich mir einen davon aussuche, reagiert die Steckdose leider nicht. Kannst du mir dabei weiterhelfen?
    Ansonsten gut geschriebene Anleitung 🙂

    1. Hallo Friedrich!

      Und das obwohl du immer die gleiche Taste nimmst?
      Sprich immer für z.B. die erste Steckdose die TASTE EIN?

      Welches Steckdosen Set hast du den?

      Leider kann ich dir dies aber auch zurzeit nicht beantworten, da ich selbst ja nur ein solches SET habe und lange an dieser funktionierenden Lösung gebastelt & getüftelt habe 😉

      Hier, dieses Set habe ich:
      https://amzn.to/35SGjl1

      LG
      Daniel

Schreibe einen Kommentar

Deine Email-Adresse wird nicht veröffentlicht.