Oftmals möchte man (Haushalts-)Geräte mit höherer Spannung auch mit dem Pi steuern können. Dafür eignen sich Raspberry Pi Funksteckdosen ideal, da sie sehr einfach zu steuern sind und man nicht in den Stromkreis eingreifen muss. Für solch ein und viele weitere Projekte bieten sich Funksteckdosen an, da sie sehr einfach auch über weitere Distanz im Haus mit kleinen Funksendern ferngesteuert werden können.
In diesem Tutorial zeige ich die Inbetriebnahme und Konfiguration von Raspberry Pi Funksteckdosen und wie sie mit dem Pi steuerbar sind.
Zubehör
- Funksteckdosen (Set)
- 433Mhz Sender und Empfänger (gibt es auch auf eBay)
- Jumper Kabel
- Breadboard
Bei den Funksteckdosen ist es wichtig, dass man den Code per DIP-Schalter einstellen kann. Es gibt auch Modelle mit generischem Code. Ich habe einmal ein solches Gerät ausprobiert und konnte weder den richtigen Code auslesen, noch ein richtiges Signal senden. Zwar gibt es inzwischen auch Tabellen zu den angegeben Codes, aber wer auf der sicheren Seite sein will, nehme einfach z.B. die oben verlinkten (ohne generische Codes).
Aufbau
Der Aufbau unterscheidet sich nicht wirklich, dem hier gezeigten.
Kommen wir zur Einstellung der Steckdosen und Fernbedienung:
In der Fernbedienung kann ein 5-stelliger Code durch Einstellen der DIP-Schalter eingestellt werden. Diesen Code musst du auch in den Steckdosen einstellen (Öffnung auf der Rückseite). Daneben muss noch ein Name (A-E) angegeben werden. In meinem Beispiel habe ich die 00011 also Code genommen und die Steckdose als E gekennzeichnet.
Durch die verschiedenen Codes ist es möglich quasi beliebig viele Steckdosen fernzusteuern.
Software zum Steuern der 433 Mhz Raspberry Pi Funksteckdosen
Es ist wichtig, dass du wiringPi bereits installiert hast. Falls noch nicht geschehen, steht hier beschrieben, wie es funktioniert.
Nun aktualisieren wir erst einmal alle Pakete und installieren git, falls noch nicht vorhanden:
sudo apt-get install git-core sudo apt-get update sudo apt-get upgrade
Wir holen uns nun die 433Mhz Bibliothek von Ninjablocks und kompilieren:
git clone --recursive https://github.com/ninjablocks/433Utils.git cd 433Utils/RPi_utils make all
Als erstes muss nun der Code der Fernbedienung ausgelesen werden. Falls du diesen bereits kennst, kannst du den Schritt überspringen. Ansonsten starten wir
sudo ./RFSniffer
und drücken auf der Fernbedienung die entsprechenden Tasten. Der empfangene Code wird nun angezeigt (bei mir ist es 5510417 für on und 5510420 für off). Nach Auslesen des Codes kannst du den 433Mhz Empfänger auch entfernen, falls er dich stört.
Jetzt erstellen wir eine neue C++ Datei mit folgendem Inhalt:
sudo nano steuerung.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include "../rc-switch/RCSwitch.h" #include <stdlib.h> #include <stdio.h> int main(int argc, char *argv[]) { int PIN = 0; // siehe wiring Pi Belegung int codeSocketDon = 5510417; int codeSocketDoff = 5510420; if (wiringPiSetup() == -1) return 1; RCSwitch mySwitch = RCSwitch(); mySwitch.enableTransmit(PIN); if (atoi(argv[1]) == 1) { // hier kannst du deine eigenen Bedingungen setzen mySwitch.send(codeSocketDon, 24); } else { mySwitch.send(codeSocketDoff, 24); } return 0; } |
Anschließend muss die Datei auch noch kompiliert werden:
g++ -DRPI ../rc-switch/RCSwitch.cpp steuerung.cpp -o steuerung -lwiringPi
Und mittels
sudo ./steuerung 1
kannst du die Steckdose anschalten. Natürlich kann man sich hier noch ganz weitere Dinge überlegen und die Datei z.B. per Python einbinden. Da ist deine Kreativität gefragt 🙂
235 Kommentare
Hi,
ich habe versucht, das mal nachzumachen. Allerdings:
ich empfange den code der Fernbedienung, kann ihn auch senden (zumindest sagt der Sniffer, dass der Sender gesendet hat) nur die Steckdose reagiert nicht.
Habe die Entfernung auf ein paar cm reduziert, nichts.
Was mache ich falsch?
Du benutzt Steckdosen, bei denen du den Code selbst einstellen kannst oder? Hast du den ausgelesenen Code der Fernbedienung oder den eingestellten Code gesendet?
Kann mir jemand helfen? Ich habe eine etwas andere Anleitung benutzt, wo man bei raspberry-remote die Datei send benutzt. Wenn ich das jedoch im Terminal eingebe steht dort nur command not found. Ich habe die Datei auch kompiliert. Hat jemand eine Idee woran das liegen könnte? Wäre sehr dankbar für eine Antwort.
Wahrscheinlich ist die Datei nicht dort oder in einem anderen Verzeichnis.
Hast du `send` oder `./send` eingegeben? Unter Linux ist das notwendig, da die Shell sonst nur im PATH sucht, nicht im aktuellen Verzeichnis.
Hast du eine Ahnung, ob ich irgendwie den rolling code von dem ding https://www.amazon.de/gp/product/B005JSCNQC/ref=ask_ql_qh_dp_hza hier rausbekommen kann ? Ich empfange btw nicht mal die Signale mit Sniffer, also bekomme keine Codes angezeigt. wäre cool wenn du eine Lösung hättest ^^
Antenne am Sender hat bei mir geholfen…
Intertechno Steckdosen… war das billigste 😀
Hi,
danke schonmal fürs Antworten. 😉
Ich habe die Fernbedienung ausgelesen (so als Plausibilitätscheck: 5263637=on, 5263636=off).
Vergessen zu erwähnen: hab es erst mit verschiedenen Drähten, und dann auch mit einer speziellen 433mhz Antenne getestet, und da ich dachte ich wäre einfach zu doof dazu nochmal ein sender/empfänger mit bereits vorhandener Antenne bestellt.
Keine Änderung =(
Solange die Module nicht defekt sind, sollte es auch ohne Antenne funktionieren. Du hast aber in der Fernbedienung / Steckdose auch solche DIP Schalter oder? Falls nicht ändert sich der Code jedes mal (generisch) und du solltest mal pilight probieren.
Hi,
nope, haben sie nicht. Der Code den die FB sendet ist aber immer identisch (auch stromlos machen der Funksteckdosen ändert daran nichts bzw ich muss nichts neu „anlernen“)
Das Problem bei solchen „generischen“ Steckdosen ist eben, dass du den Code nicht einfach auslesen und senden kannst. Daher habe ich extra solche mit DIP Schalter verlinkt. Je nach Modell könnten deine Steckdosen von pilight unterstützt werden.
Die hatte ich mir leider vorher schon gekauft ^^
Anyway, mit „den richtigen“ klappte es auf Anhieb.
Danke für den Tip, wäre ich neverever drauf gekommen ,)
Das Problem kenne ich 😀 Hatte mir am Anfang auch ein Produkt mit generischem Code geholt (auf der Verpackung stand kein Wort davon) und diese wurden leider nicht von pilight unterstützt.
Naja hauptsache ist ja, dass es nun bei dir klappz 🙂
@hanspeter,
kannst Du evtl. ein Link posten, mit welchen Steckdosen es schlussendlich funktioniert hat?
Hallo,
ich habe schon bei wünsch dir ein Tutorial erwähnt wie cool ich diese Seite finde! die Steuerung der Funksteckdosen sieht schonmal vielversprechend aus. Jedoch noch ein Zusatz, bzw. ein zusätliches Anliegen: Wie kann ich es realisieren, diese Steckdosen automatisch per Zeitschaltung anzusteuern? Besser wäre noch einen Dämmerungssensor mit einzubinden 🙂
Wenn du zu gewissen Uhrzeiten etwas ausführen willst, bietet sich Cron an. Bsp. schreibst du zwei Skripte (zum an/ausschalten) und rufst sie zu gewissen Uhrzeiten auf.
Leider kann man diese Steckdosen nicht zum dimmen benutzen, da sie nur an/aus gehen. Allerdings suche ich schon etwas länger nach einer dimmbaren Lösung (für Glühbirnen), aber die meisten sind entweder sehr teuer oder sind nicht über das Pi ansprechbar. Sollte ich eine gute Möglichkeit finden, wird es aber ein Tutorial dazu geben 🙂
Ist, es möglich, statt einem C++ auch ein Python Script zu verwenden, und wenn Ja, wie genau bindet man dies in sein Script ein? Ich bin noch ein Anfänger und versuche es zu lernen, Danke schon mal im Voraus!
Ich weiß nicht, ob es eine Python Bibliothek gibt, womit man Funksygnale senden/Empfangen kann. Ansonsten einfach ein C++ Skript aus Python aufrufen, dass den entsprechenden Code sendet (
os.system(..)
).Hi,
kannst du die Funktionsweise von os.system(..) näher erläutern? Im Terminal funktioniert mein Code. Wie genau nutze ich nun die os.system Funktion um es aus meinem Python Skript zu starten?
Hallo,
mir ist aufgefallen, daß in diesem Tut bei dem Sender VCC an GPIO und ATAD an 5V angeschlossen sind. Beim Empfänger ist der rechte Datenpin an GPIO angeschlossen.
Bei dem anderen Tut (Raspberry Pi’s über Funk kommunizieren lassen)
ist VCC=5V, ATAD an GIPO und beim Empfänger soll der Linke DATA genutzt werden.
Ist das so beabsichtigt?
Gruß Ingo
Dasselbe habe ich mir auch gedacht. Es wird ein Fehler sein! Das „gelbe“ muss an ATAD und rot wie rechts auch an VCC (5V).
Hey,
danke für den Hinweis, ihr habt natürlich beide Recht! Habe es nun verbessert 🙂
Hallo,
hab genau so eine Anleitung wie hier gesucht.
Nur leider funktioniert bei mir das Auslesen des Codes schon nicht. Ich hab genau die Module von deinem Bild und hab sie auch so angeschlossen, wie du es eingezeichnet hast. RFSniffer zeigt aber einfach keine empfangenen Daten an.
Das Empfangsmodul hoffe ich doch nicht, dass es defekt ist, da ich drei von denen getestet habe.
Dass man den Empfänger an GPIO27 anschließen muss, bestimmt dieses WiringPi, ist das richtig?
Hast du einen Tipp, was der Fehler sein könnte oder was ich probieren könnte, um den Fehler einzugrenzen?
MfG Danilu
Hey,
einer der häufigsten „Fehler“ ist die Benutzung von generischen Codes. Leider werden viele solcher Steckdosen verkauft, bei denen man den Code nicht selbstständig einstellen kann. Damit wird es extrem schwierig, da sich die Codes ständig ändern (generiert werden). Das wäre also die erste Frage, ob du den Code (mit Dipschaltern) einstellen kannst?
Der GPIO ist bisher so gesetzt, du kannst ihn allerdings auch ändern. Dazu schaust du dir die WiringPi Tabelle an und wählst einen anderen Pin. Die Nummer gibst du im Skript an und kompilierst erneut.
Du kannst auch noch etwas anderes testen: Entweder du nutzt eine andere Funkfermbedienung (Garagentor, etc.) oder aber du wirfst einen Blick in dieses Tutorial (gleichzeitig vom Pi senden und empfangen): Raspberry Pi’s über 433 MHz Funk kommunizieren lassen
LG Felix
Super Anleitung alles hat geklappt
Aber wenn ich RFSniffer starten will kommt immer command Not found was mache ich falsch
Kannst du den genauen Befehl kopieren, den du eingibst? Und bitte führ auch mal ein
ls
im Verzeichnis aus und kopiere auch den Inhalt hier rein.Der Beitrag ist zwar schon älter, aber habe das selbe problem. Kommando nicht gefunden.
gebe
sudo ./RFSniffer
ein.
wenn ich ls eingebe erscheint folgendes:
codesend.cpp Makefile README.md RFSniffer.cpp send.cpp
Kann mir da einer helfen?
Du musst die Dateien erst mittels make kompilieren (kompilierte Dateien scheinen nicht vorhanden zu sein).
Danke Felix !!
Eine Frage hab ich dann doch noch, wie bekomme ich das jetzt vernünftig in mein FHEM rein? Jemand ein Tip für mich!
Wie kann ich die Befehle zum einschalten einer Steckdose über einen Webserver verknüpfen?
Danke im voraus
Über PHP würde dies z.B. mit
shell_exec
funktionieren.Hi Felix,
zunächst auch von mir ein großes Danke für dieses tolle Tutorial!
Mir fehlt auch noch die Anbindung an die Web Seite.
php wäre toll.
Dafür habe ich die ’steuerung‘ Datei in den Ordner desWeb Severs gelegt und versucht sie per php aufzurufen (die beiden Parameter sind Steckdose A an):
Schalte_A_Ein.php
Die php Datei habe ich dann so in html eingebunden:
Bogenlampe An
Auf der Konsole geht der Aufruf des Sendersprima.
Per web Klick tut sich gar nichts.
Hast Du eine Idee?
Gruß
Gebhard
Hallo,
ich bekomme leider beim Kompilieren folgenden Fehler:
steuerung.cpp:2:10: error: #include expects „FILENAME“ or
#include <stdlib.h>
^
steuerung.cpp:3:10: error: #include expects „FILENAME“ or
#include <stdio.h>
^
steuerung.cpp: In function ‘int main(int, char**)’:
steuerung.cpp:15:17: error: ‘atoi’ was not declared in this scope
if (atoi(argv[1]) == 1) { // hier kannst du deine eigenen Bedingungen setzen
Auch beim Auslesen des Senders bekomme ich immer andere Werte angezeigt mal 5471 dann wieder 21855 ich dachte eigentlich diese Steckdosen (http://www.amazon.de/Elro-AB440S-3C-Funksteckdosen-Funksteckdose/dp/B002QXN7X6) wären dafür geeignet da diese ebenfalls auf der Rückseite 10 Pins haben.
Hast du für diese zwei „Probleme“ eine Idee?
Danke für jeden Tipp
Gruß
Torsten
Die Fehler liegen daran, dass WordPress aus den eckigen Klammern
<>
immer<>
macht. Ich habe das wieder gefixt. Wenn du den Code nun nimmst, klappt es, ansonsten einfach entsprechend durch eckige Klammern ersetzen.Bzgl deines zweiten Problems: Wichtig ist, dass du den Code auslesen kannst (durch einstellen der Pins). Kommen bei der selben Taste verschiedene Codes? Könnte es ggf. von anderen Geräten in der Umgebung kommen?
LG Felix
Danke für die schnelle Antwort, das erste Problem konnte ich damit auch lösen (hätte ich wohl auch selbst drauf kommen können :-))
Allerdings bekomme ich mit der Fernbedienung immer noch unterschiedliche Nummern angezeigt.
Andere Geräte habe ich eigentlich nicht in der nähe und ich erhalte mit dem Sniffer auch nur Werte (Received 4433 oder Received 5471 usw.) wenn ich die Taste an der Fernbedienung betätige.
Hast du noch eine Idee?
Gruß
Torsten
Ein noch: Wenn ich sudo ./send 11111 (Hauscode) 2 (Steckdose) 1 (on) eingebe erhalte ich Received 4433 und bei sudo ./send 11111 2 0 eingebe dann bekomme ich Received 4436
Dies sind genau die Daten die ich auch mit der Fernbedienung erhalte 4433 für On und 4436 für Off
Schalten kann ich die Steckdose aber leider auch hier nicht.
Gruß
Torsten
PS: Die Steckdose ist im gleichen Raum und ca 2. Meter entfernt.
Nachtrag: Es geht es lag wohl an der Reichweite… Ich werde mir wohl eine Antenne dran löten.
Viele Grüße
Torsten
Huhu, ich frage mich, ob ich bei dem standard 433MHz Sender die Data und VCC Leitung kombinieren kann, wenn ich den Sender an den Stromkreis einer Klingel (Batteriebetrieb) klemme. Denn der Sender soll nur Strom bekommen, wenn jemand klingelt und in diesem Moment soll der Sender auch Daten verschicken. Ich würde noch eine Schutzdiode einbauen und evtl. noch einen Kondensator, um Spikes abzufangen.
Irgendwie finde ich keine genauen Specs vom Sender und der Data Leitung.
Würde dann ein brauchbares Signal verschickt werden? Ich nehme an, dass du dann auf den Raspberry Pi komplett verzichtest (Sender)?
Hallo
Super Anleitung !
Habe nach einigen Startschwirigkeiten alles ans laufen gebracht.
Der Empfänger (am Pi) ist ohne Antenne doch etwas „schlecht“ beim Empfang
Der Sender (am Arduino) schafft auch ohne Antenne eine kurze Reichweite (ein Raum weiter)
Nun werde ich es noch in meine ioBroker – Installation einbinden müssen. Das sollte mit JS irgendwie klappen.
Danke 🙂 Liegt wahrscheinlich daran, dass die 433Mhz Module für den Arduino gedacht sind, dessen Pins mit 5V arbeiten. 3.3V des Pi’s funktionieren auch, aber lassen das Signal etwas abschwächen.
Hat jemand Erfahrung mit dem auslesen von :
http://www.elv.de/output/controller.aspx?cid=74&detail=10&detail2=41019
Sieht aus, als wird dabei ein generischer Code verwendet, was es sehr schwierig macht. Du könntest dir aber mal PiLight mal ansehen, das hat einige Codes gespeichert, vielleicht klappt es damit.
Hallo alle zusammen,
hab mal ne Frage, wenn ich den Sender Ansprechen will (sudo/raspberry-Remote / send 00100 1 1) bekomme ich eine Meldung “using pin 0” , was soll mir die Meldung sagen…….
Hier der Auszug vom Terminal
Pin 0 bezieht sich auf die WiringPi Belegung, da diese von der GPIO Pinbelegung abweicht.
Ok aber warum bekomme ich die Ausgabe und warum schalten die Funk Dosen nicht ???? Wo ist mein Fehler
Du hast bisher nicht gesagt gehabt, dass die Steckdosen nicht schalten. Versuch mal einen anderen Code in den Steckdosen einzustellen bzw. nutze mein Skript anstelle von dem send-Skript. Auch kannst du einen anderen wiringPi Pin probieren (neu kompilieren nicht vergessen).
Hi!
Ich dachte, ich würde keinen Empfänger brauchen, da ich vermutete, die Codes online zu finden. Ich habe exakt die gleichen Steckdosen wie im Tutorial, könnte jemand die Codes für A, B und C jeweils An und Aus schreiben? Würde mir sehr helfen!
Im gleichen Verzeichnis findet du das kleine Programm send.
Damit kannst du via ./send 00000 1 0 die Steckdosen schalten, ohne den Code vorher sniffen zu müssen. Das Verfahren ist ganz einfach:
Die ersten 5 Stellen sind der Code der Steckdose
Die 6. Stelle ist der Buchstabe (1=A, 2=B, 3=C, 4=D, E=E)
Die 7. Stelle ist ein/aus 1/0
Dabei sind Leerzeichen zu beachten.
sudo ./send xxxxx x x
Es reicht also für 160 Steckdosen aus 🙂
Hallo Felix,
Erstmal: super Seite! Werde versuchen einige deiner Tutorials nachzumachen. Starten möchte ich mit diesem hier.
Frage: die von dir verlinkten Steckdosen sind ziemlich „klobig“. Gibt es eigentlich keine Funksteckdosen? Man sieht immer nur diese großen. Wäre doch super wenn es richtig kleine gibt, von denen man Dan möglichst mehrere in eine Mehrfachstockdose bekommt.
Gibt’s da welche die mit deinem Tutorial hier funktionieren?
Lg
Marko
Ich meine „gibt es eigentlich keine kleinen Funksteckdosen“
(blöde autokorrektur)
Hallo Marko,
erst einmalo danke für das Lob 🙂
Alle Funksteckdosen, welche ich bisher in den Fingern hatte, waren recht groß und nicht für den Einsatz in Mehrfachsteckdosen geeignet (zumindest nicht zwei nebeneinander). Wichtig ist aber eigentlich nur, dass man den Code manuell eingeben kann. Es gibt wahrscheinlich auch kleinere, jedoch meist mit genereischem Code. Das hat den Nachteil, dass man diese Codes nur schwer auslesen und senden kann.
LG, Felix
Hallo,
leider bekomme ich den Fehler auch:
pi@raspberrypi:~/433Utils/RPi_utils $ sudo ./RFSniffer
sudo: ./RFSniffer: command not found
Im Verzeichnis /rc-switch ist nichts
pi@raspberrypi:~ $ git clone https://github.com/ninjablocks/433Utils.git && cd 433Utils/RPi_utils && make all
Cloning into ‚433Utils’…
remote: Counting objects: 191, done.
remote: Total 191 (delta 0), reused 0 (delta 0), pack-reused 191
Receiving objects: 100% (191/191), 38.54 KiB | 0 bytes/s, done.
Resolving deltas: 100% (84/84), done.
Checking connectivity… done.
make: *** No rule to make target ‚../rc-switch/RCSwitch.o‘, needed by ’send‘. Stop.
Somit schlägt auch das make all fehl.
pi@raspberrypi:~/433Utils/rc-switch $ ls
pi@raspberrypi:~/433Utils/rc-switch $
Jemand eine Idee, wäre sehr nett, danke.
Schreint als ob die rc-switch Datei geändert wurde. Du kannst sie allerdings im GitHub Versionsverlauf noch ansehen und downloaden:
https://github.com/ninjablocks/433Utils/tree/761a95414d331259a3c945673d00036f9fa8c4b0/RPi_utils
Hallo,
super danke.
git clone --recursive git://github.com/ninjablocks/433Utils.git
verwenden.Siehe https://github.com/ninjablocks/433Utils
Hi, nachdem ich nun alles durchgemacht habe und auch die Codes ausgelesen, sowie in die Steuerung.cpp eingetragen habe, würde ich es gerne kompilieren.
Mir wird leider angezeigt:
g++: error: RCSwitch.cpp: Datei oder Verzeichnis nicht gefunden
Was genau mache ich denn falsch?
LG
Nico
Hast du den
--recursive
Parameter beim Klonen mit angegeben?ja, habe ich
Du kannst die fehlende Datei auch manuell herunterladen:
https://github.com/ninjablocks/433Utils/tree/761a95414d331259a3c945673d00036f9fa8c4b0/RPi_utils
danke, das war es! 🙂
Super Blog übrigens. Gefällt mir sehr gut!
Danke sehr 🙂
Hallo,
1) in dem git clone Befehl sind falsche striche. Wenn man 1:1 kopiert kommt ein Fehler.
Richtig:
git clone --recursive https://github.com/ninjablocks/433Utils.git && cd 433Utils/RPi_utils && make all
Weiterhin habe ich beim Kompilieren ein Fehler.
Habe die Datei Steuerung 4 für die 4te Fernbedienung genannt. Das dürfte nicht der Fehler sein.
Ich vermute das hier ein Fehler bei C++ vorliegt. Habe vorher ein Update und ein Upgrade gemacht, wie beschrieben.
Weiterhin fällt mir auf das Ihr einfach immer mit SUDO im Hauptverzeichnis rummacht, aber bei mir muss ich immer in das entsprechende Verzeichnis wechseln. z.B. cd 433….
Wie kann ich hier die Locate Funktion nachinstallieren? Ich komme mit find nicht so gut klar.
Danke für den Hinweis, nun ist der richtige Bindestrich wieder drin.
In der neuen Version wird der Parameter
RPI
auf dem Raspberry Pi gesetzt. Daher lautet der neue Befehl zum kompilieren:Außerdem musst du den Pfad zur
RCSwitch.h
Header Datei im Code anpassen.Bezüglich des
cd
Befehls: Ich habe ihn davor schon ausgeführt und befinde mich anschließend im Verzeichnis (Du hast ihn ja auch korrekterweise mit kopiert). Welche Locate Funktion meinst du?Ich habe es schon anders gelöst. Ich habe es direkt manuell gesendet.
also direkt über
Man kann auch dann bei anderen Herstellern das hier vielfach beschriebene
für die Steckdosenreihe 1234 Steckdose 1 Zustand 0
Weiterhin habe ich ein Webserver installiert. Apache php usw. das kann man überall nachlesen. Mit den apt-get befehl.
Dann habe ich mir ein Script gebastelt:
Am Anfang funktioniert es nicht. Dann las ich nach.
Möglicher Fehler php und Apache SAFE Mode
Da ich aber die neueste PHP Version habe, scheint es so als wenn die Funktion abgeschafft wurde. Ich habe ja keine Rechte als Webserver die SUDO Funktion zu nutzen. Daher habe ich mir für das eine Script die Rechte beschafft:
Lösung:
Die Zeile einfügen:
zur Sicherheit habe ich dem Script mit chmod ne 777 gegeben, damit ich mich nicht mit den Rechten nicht rumärgern muss.
dann habe ich mich beim https://www.noip.com/ KOSTENLOS eine DYN DNS Adresse beschafft. Die habe ich zur Vereinfachung über mein online Server auf über auf eine sub Domain geleitet. Also z.B. subdomain.mainserver.de
hier habe ich dann in
/var/www/html/schalter41.php
die Steckdose 4 zustand 1 mit dem oberen Script bestückt.
Es klappt wunderbar. Ich konnte jetzt über das iPhone oder Samsung Galaxy auf
subdomain.mainserver.de/schalter41.php
zugreifen dann ging die Steckdose an. Das habe ich mir mit einen Symbol auf dem iPhone Desktop abgelegt. Schon kann ich mit iPhone meine Steckdosen über den Raspberry PI steuern.
Heute Nacht ging alles wunderbar. Heute morgen allerdings nicht. Ich komme nicht mehr über den link auf den Rasbperry. Ich lande im Time Out. Obwohl ich es im internen Netzwerk trotzdem über 192.168.2.78/schalter41.php ansteuern kann.
Den Fehler finde ich aber auch noch :0)
Eines ist mir aufgefallen. Entweder habe ich Eure Zeichnung falsch gedeutet oder die ist falsch. Bei meinen Raspberry PI war die Verschaltung nicht so wie hier:
Der Pin Rechts 1 und 2 sind jeweils 5 Volt Anschlüsse. Bei Dir steht hier der Pin 1 als + Anschluss. Das funktionierte bei mir ums verrecken nicht. Fragt nicht wieso. Beim Empfänger ging es. Beim sender musste ich auf den 2 Pin ausweichen. Das geht jetzt.
Für die Leute die sich so eine Anschluss Platine nicht dazu geholt haben, liest erstmal die Zahlen der Funkfernbedienung mit dem Empfänger raus (Klemmt also nur die eine direkt Platine an) und dann macht die ab und klemmt den Sender an. Dann müsst Ihr nichts notdürftiges basteln, sondern nimmt die kleinen zugekauften Kabel.
Zu meinen Locate:
Es gibt sicherlich viele Wege um Dateien im Linux System zu suchen.
eine davon ist find.
Ich bevorzuge locate. Das kann man mit apt-get nachinstallieren. Dann muss man aber den Befehl
updatedb
ausführen, dann wird eine Datenbank der Dateien auf dem Rechner erstellt. Dann kann man mit einen einfachen Befehl suchen:
locate bild.jpg
noch ein Tipp für Anfänger. Wenn Ihr nicht wisst wie man Dateien hin und her kopiert, Rechte vergibt usw. Installiert Euch den Midnigt Commander kurz mc
sudo apt-get install mc
das ist ein Dateimanager wie damals ähnlich den unter Windows 95.
Hallo Filip,
erst einmal danke für deinen ausführlichen Kommentar. Zum Aufbau („Der Pin Rechts 1 und 2 sind jeweils 5 Volt Anschlüsse.“): Du meinst Pin 2 und 4, nehme ich an? Da beide 5V liefern, sollte es keinen Unterschied machen.
LG, Felix
Zitat: „Heute Nacht ging alles wunderbar. Heute morgen allerdings nicht. Ich komme nicht mehr über den link auf den Rasbperry. Ich lande im Time Out. Obwohl ich es im internen Netzwerk trotzdem über 192.168.2.78/schalter41.php ansteuern kann.
Den Fehler finde ich aber auch noch :0)“
Falls Du den Fehler noch nicht gefunden haben solltest: DynDNS funktioniert nur bis zur Zwangstrennung durch Deinen Provider. Danach hast Du eine neue IP-Adresse (meistens jedenfalls) und die musst Du Deinem DynDNS-Anbieter erst einmal mitteilen. Geht am Einfachsten durch die passende Einstellung im Router.
Zum Autor dieses Tutorials: Schön geschrieben, nachvollziehbar. Danke dafür.
Ralph
Ralph
Hi,
klasse Tutorial gibt es eine Möglichkeit einen Bestimmten Code den der RFSniffer empfängt eine bestimmte Aktion auszuführen? Bspw. mehrere Funksteckdosen einzuschalten.
Danke im voraus
Hallo Leon,
ja, natürlich. Beispiele findest du u.a. hier: http://tutorials-raspberrypi.de/raspberry-pi-mit-433mhz-funksender-fernsteuern/
LG, Felix
Moin ihr Lieben,
habe seit gestern angefangen, mich mit dem raspberry pi zu beschäftigen. Da ich von Programmieren &Co keine Ahnung habe, hielt ich Ausschau nach einfachen Tutorials und das mit den Funksteckdosen (habe sie überall im Einsatz sehr umständlich mit 3 Fernbedienungen) wäre so mein Beginner-Projekt. Ich muss mich erstmal rantasten und checken, ob sich die Ausgaben für den Spaß lohnen, meistens scheitert es an der fehlenden Zeit, sich mit sowas intensiv zu befassen. Bis hier hin erstmal tolle Arbeit, so erscheint das Komplizierte doch auch für Einsteiger einfach.
Allerdings ist mir eines noch nicht so ganz klar, kann man einen raspberry auch für mehrere Zwecke einsetzen oder beschränkt sich das immer auf eine Sache ? (mein Plan war es sowohl die Steckdosen zu schalten als auch daran angeschlossene LED-Stripes zu steuern)
Aber das war nicht meine ursprüngliche Frage 😀 : Gibt es eine Art Webinterface fürs Tablet und Smartphone mit einfacher Erklärung ?
Viele Grüße
Tim
Achso, das Webinterface bezog sich natürlich auf die Steckdosenschaltung, ähnlich wie hier z.B: http://www.pcwelt.de/ratgeber/Funksteckdosen_mit_dem_Raspberry_Pi_einrichten-Schalten___walten-8655824.html
Hallo Tim,
zur ersten Frage: Du kannst so ziemlich alles (auch gleichzeitig) auf dem Pi laufen lassen, was du auf dieser Seite an Anleitungen findest.
Zum zweiten: Wir sind gerade dabei eine App für Android zu schreiben, womit die Funksteckdosen per Handy (über das Raspberry Pi) gesteuert werden können. Tutorial kommt vorraussichtlich nächste Woche. Wenn du magst, kannst du den Newsletter abbonieren, dann erfährst du es sofort, sobald wir damit fertig sind.
LG, Felix
Hallo,
generell erstmal danke für die echt tolle Seite und die super Tutorials die du hier vorstellst.
Leider habe ich jetzt ein Problem bei diesem Tutorial:
Wenn ich den Befehl zum kompilieren der zwei Dateien eingebe erhalte ich folgenden Error:
g++: error: ../rc-switch/RCSwitch.cpp: No such file or directory
g++: error: steuerung.cpp: No such file or directory
Was mach ich falsch?
Gruß
ok hab mein Problem gelöst bekommen…falsches verzeichnis
Günni
Hallo Felix,
habe alles so nachgebaut wie beschrieben. Ich kann auch die Funksteckdose mit dem Befehl sudo ./steuerung 1 einschalten aber nicht mehr ausschalten. Hatte eigentlich erwartet, dass ich mit dem Befehl sudo ./steuerung 0 die Steckdose wieder ausschalten kann! Geht aber nicht. Ich kann die Funksteckdose über den Handsender wieder ausschalten, aber danach mit sudo ./steuerung 1 nicht wieder einschalten. Erst nach dem Neustart des Raspi kann ich die Funksteckdose wieder genau einmal einschalten.
Woran kann das liegen?
LG Günni
Hallo,
erst mal danke für die Anleitung, war ein prima Start. Leider hatte ich lernende Steckdosen (Flamingo, elro) bekommen, obwohl in der Beschreibung stand „Sendesignal mit einstellbaren Codes“. Die Codes der Fernbedienung konnte ich mit dem Sniffer wunderbar empfangen. Das ganze wieder zu Senden hat aber zunächst nichts bewirkt. Ich habe dann ein zusätzliches Protokoll in RCSwitch.cpp eingefügt:
{ 300, { 1, 15 }, { 1, 3 }, { 3, 1 } }, // Protocol 6
Außerdem müssen 28 Bits anstatt der 24 im Code gesendet werden.
LG,
Bernd
Ich bekomme immer den Fehler „undefined reference to… „
Hallo
Danke für die super Anleitung. Alle Wegen haben geklapt. Für das erste Projekt ein echtes Erfolgserlebnis.
z.b. ./send 10101 4 0 als auch sudo ./codesend 1119505
kann man das umrechnen? Ich habe Steckdosen von Intertechno, Die haben keine Dipschalter, senden aber auf dem konstanten Code. mit sudo ./RFSniffer
kann ich die Fernbedienung einlesen und auch den Befehl wieder senden. Leider ist die Reichweite noch zu klein. Die Antenne wird in den nächsten Tagen angepasst.
Hi,
habe gerade schon in einem anderen Artikel eine Frage gestellt, und da etwas sehr sehr wichtiges vergessen:
DANKE für die super einfachen (auch für Laien verständlichen) Erläuterungen in den ganzen Artikeln!
Super Seite!
Gruß,
LarsMq
Vielen Dank 🙂
Guten Tag,
bezüglich der PIN Belegung habe ich eine Frage.
Ich habe Euer Projekt mit der IR-Diode (http://tutorials-raspberrypi.de/raspberry-pi-fernbedienung-infrarot-steuerung-lirc/) erfolgreich umgesetzt und wollte meinen Raspberry gleichzeitig als 433MHz Sender zum schalten der Funksteckdosen nutzen, wie in diesem Projekt beschrieben (ebenfalls erfolgreich umgesetzt).
Jedoch werden in beiden Projekten der GPIO PIN17 verwendet. Gibt es eine Möglichkeit in einer der beiden „Software-Pakete“ (LIRC und/oder 433Utils) den „Data-PIN“ zu wechseln?
Vielen Dank im Voraus für eine kurze Rückmeldung.
Grüße
Max
Du kannst den LIRC Pin ändern, dann musst du dies in den Einstellungen anpassen (siehe auch dieses Tutorial). Wenn du den Pin für den 433 MHz Sender/Empfänger änderst, musst du die WiringPi Belegung verwenden und den C++ Code neu kompilieren, nachdem du die Pnnummer angepasst hast.
Hi Felix,
auch von mir erst mal ein Kompliment für die tolle Seite. Jetzt habe ich soweit alles nachgemacht wie im Tutorial angegeben und den Snif Befehl ausgeführt.
Wenn ich auf meiner Fernbedienung die Taste A On drücke, kommen bei mir im Raspberry 2 verschiedene Ergebnisnummern.
Ich hab jetzt mal beide versucht in der steuerung.cpp einzubinden und mit dem ./steuerung 1 die Steckdose anzuschalten. Das klappt leider nicht.
Es könnte natürlich an der Qualität der Sender/Empfänger (FS1000A) liegen. Finde ich das wirklich nur raus wenn ich die Steckdose direkt neben den Pi stelle? Sniffen konnte ich die Befehle ja durchaus. Zwischen Pi und Steckdose liegen ca. 3 Meter. Die Fernbedienung sniffen habe ich mit ca. 1,5 Metern gemacht.
Gibts noch eine andere Idee?
Kommando zurück. Ich habe testweise die Steckdose direkt neben den Pi, da kommt das Kommando 1a an. Dann muss ich mir wohl einen qualitativ hochwertigeren Sender holen.
Ich hatte auch schon öfters, dass zwischendrin irgendwelche anderen Codes empfangen wurden. Ich denke, dass der Code einfach nur nicht richtig empfangen werden konnte. Der Code, der häufiger gleich empfangen wird, ist (meist) der richtige 🙂
Ich wollte nur kurz Danke für das Tutorial sagen. Klappt wunderbar und mit einer Modifikation des PHP Skriptes von Filip lässt es sich auch von der Hausautomation ansteuern.
moin moin
wie kann ich die dosen denn steuern wenn alles fertig ist ?
per app `?
Ich habe eine harmony elite fernbedienung… damit würde ich sie am liebsten ansteuern
Du kannst sie per Konsolenbefehl, per App oder per Fernbedienung steuern:
Raspberry Pi + Android: Funksteckdosen per App schalten
dann sciherlich auch nur mit der originalen fernbedienung von dem steckdoesen oder ?
Ja, aber es gibt auch Fernbedienungen, die den Code lernen können: http://amzn.to/2g0k6d0
Hallo,
ich möchte (weil die Funkfernbedienung nur eine begrenzte Anzahl Tasten hat) die Tasten „doppelt“ belegen, also kurz drücken soll was anderes machen als lang drücken. Wie kann ich das in einem Skript unterscheiden?
Reagiert deine Steckdose auf die verschiedenen Signale? Wenn ja, könntest du die Codes evtl. mehrfach hintereinander schicken. Müsstest du aber ausprobieren, kann dir nicht 100% sagen, ob das klappen wird.
Es wäre interessant, sofern möglich, ob man die hier verlinkten Funksteckdosen mit dem Sender per Webinterface steuern kann
Das ist durchaus möglich. Empfehlen kann ich dafür z.B. Node.JS, wozu ich erst neulich ein Tutorial gemacht habe:
Raspberry Pi Node.js Webserver installieren und GPIOs schalten
Neben GPIOs steuern kannst du natürlich auch Skripte (mit Parametern) aufrufen. Müsste zwar ein bißchen angepasst werden, aber ich denke das sollte sich in Grenzen halten.
hai felix,
dermassen eklatante sicherheitslücken schreien ja direkt nach schabernack-exploits. aus dem grossen buch des wie-kann-man-nur das kapitel: heute noch fernsteuerungen ohne jede verschlüsslung bei der kommunikation in den handel bringen.
in deinem tut vermisse ich eine entsprechende warnung, dass man solche steckdoden besser nur zum spielen verwendet, oder wenn es wirklich egal ist, ob eine an oder aus ist…
greetz, sara
Funktioniert das eigentlich auch mit Sender/Empfänger mit 315 MHz
Felix, danke für Deine sehr guten Anleitungen!
Wie löse ich denn das Reichweitenproblem? .. ich komme mit o.a. Set nur auf ca. 5 Meter Luftlinie beim Senden und Empfangen.
Danke
Hast du auch eine geringe Reichweite, wenn du den Handsender nutzt? Versuch evtl. mal eine Antenne an dem 433 MHz Sender zu montieren.
Hallo Felix,
ich nutze die Brennenstuhl Funksteckdosen und mit dem beiliegendem Handsender ist die Reichweite viel besser, als mit dem RPi. Dieser läuft mit einer 12V-Batterie und hat nur eine Leiterbahn-Antenne.
Welche Antenne empfiehlt sich denn für den RPi-Aufbau?
Diese hier eventuell?
https://www.amazon.de/Antenne-Helical-Antenne-Fernbedienung-Arduino-Raspberry/dp/B00SO651VU/ref=sr_1_2?ie=UTF8&qid=1484002166&sr=8-2&keywords=433+antenne
Kannst Du das Reichweiten-Problem und seine Lösung 🙂 ggf. in Deinen Beitrag mit aufnehmen?
Danke
Viele Grüße, Jens
Hi Jens,
ja, solche Antennen sollten passen 🙂
LG, Felix
D.h. ich löte die Antenne am verzinnten Loch oben rechts an?
Übrigens ist mir aufgefallen, dass das Set im Aufbau mit 5 V betrieben wird.. ist das nicht zuviel, kommt dann beim Empfänger nicht ein Pegel bis 5 V am GPIO an?
Ja, einfach anlöten. Da müsste auch eine Beachriftung dran sein. Die Spannung ist nicht zu viel, da sich auf dem Board Widerstände befinden (du kannst die Ausgangsspannung nachmessen).
LG, Felix
Okay.. Reichweitenproblem ist damit gelöst: habe einen Draht mit der Länge 17,325 cm an den Punkt bei „ANT“ angelötet (Lambda/4).
Danke nochmals.
Danke für das tolle Tutorial!
Funktionier alles soweit. Software läuft ohne Fehlermeldungen.
Jedoch wenn ich auf der Fernbedienung eine Taste drücke (egal ob „on“ oder „off“) empfängt der PI keinen Code. Ich nutze die Funktschaltsteckdosen von Brennenstuhl (RCS 1000SN).
Wenn ich einen beliebigen Code sende, empfängt der PI diesen. Also arbeiten Sender und Empfänger ordnungsgemäß.
Hat dazu jemand vlt. eine Idee?
Liebe Grüße
Hallo, ich habe zu dem Thema schon mehrere Artikel im Netz gesehen. In den meisten werden aber zusätzlich Widerstände mit in dem Aufbau verbaut. Hier ist das nicht der Fall. Mich würde interessieren, wieso. Die anderen machen das ja nicht aus Spaß aber hier hat sich ja auch noch keiner beschwert, dass er das nachgebaut hat und danach irgendwas kaputt gegangen sei.
Nein, das ist nicht nötig. DU kannst ja die Spannung an den Pins messen. Diese ist unter 3.3V und somit für die GPIOs ungefährlich. Wie du siehst hat sich auch noch niemand beschwert. Wenn du dem trotzdem nicht vertraust kannst du auch einen Widerstand einbauen, allerdings kann es sein, dass dann nicht mehr die richtigen Werte erkannt werden.
Hi, danke für dein Tutorial, auch wenn ich extrem umständlich finde mit dem RFSniffer und lieber direkt die enthaltenen Binary „send“ nutze, da muss ich kein Code auslesen usw, aber trotzdem sehr praktisch dieser Sniffer.
Meine Frage ist allerdings spezieller, weiß auch nicht so Recht nach was ich googeln sollte.
Also, ich habe in 2 Wohnungen jeweils eine FritzBox. Einen Raspi und mehrere RF433 Sender/Empfänger sowie einige RF433 Steckdosen in beiden Wohnungen.
Ich würde gerne mit EINEM Pi beide Wohnungen steuern, nicht wegen dem Geld sondern wegen der Idee/dem Ausprobieren.
Im Endeffekt braucht man ja nur eine Leitung, Plus/Minus kann ja überall gestellt werden. Und die Daten quasi über das LAN Kabel tunneln, hab ich mir gedacht, könnte gehen.
z.B. über VPN auf die entfernte Fritz zugreifen und über eine ungenutzte LAN Buchse das ganze weitergeben zu dem entfernten RF433 Sender.
Ist es überhaupt möglich so etwas zu tunneln bzw. sozusagen dadurch das „Datenkabel“ von GPIO 17 zum Sender, so zu verlängern?
Grüße Lars
Hallo Lars,
es gibt bestimmt eine Möglichkeit, aber soweit ich weiß, gibt es dazu nichts „out of the box“. Ich kann mir schlecht vorstellen, dass so etwas mit einer Fritbox möglich ist. Eher noch, dass du einen Arduino/ESP8266 o.ä. über das Internet anspricht, welcher dann die Steckdosen schaltet.
LG, Felix
Hi Felix, danke für deine rasche Antwort,
ja ich glaube mit nem 2. SBC, welcher auch immer, wäre es relativ easy möglich.
Hätte ja sein können, das du da ein Stichwort im Hinterkopf hast nachdem ich dann hätte googeln können.
Hallo zusammen, vielen Dank für das tolle Tutorial! Bei mir wird leider nachdem ich das Script geschrieben habe beim kompilieren angegeben das in der includeten RCSwitch.ccp > ../rc-switch/RCSwitch.h ein fatal error angegeben- die Datei WProgram.h wird nicht gefunden. Weiß jemand was es mit dem Fehler auf sich hat? Danke!
Hast du WiringPi installiert?
Ja habe ich auch festegestellt das das fehlt. Allerdings hat auch das nicht geholfen :/ Kann man das nicht auch mit make compilieren?
Hi,
Wie kann ich das über eine kleine interne Webseite steuern? Muss das in eine php Datei eingebunden werden? Wenn ja wie? Würde mich über eine Antwort freuen.
Du kannst per shell_exec in PHP auch Skripte ausführen
Hi,
Ich habe jetzt zwei Möglichkeiten ausprobiert:
Und
Allerdings funktionieren beide nicht. Wo habe ich eine Fehler gemacht? Was muss ich verändern?
Hallo,
ich habe die WiringPi nach Anleitung installiert und bekomme mit gpio readall auch die entsprechende Übersicht.
Bei den 433Utils geht es für mich leider nicht weiter. Ein make all bringt folgende Meldung:
g++ -DRPI ../rc-switch/RCSwitch.o send.o -o send -lwiringPi
/usr/lib/gcc/arm-linux-gnueabihf/4.9/../../../libwiringPi.so: undefined reference to `crypt‘
/usr/lib/gcc/arm-linux-gnueabihf/4.9/../../../libwiringPi.so: undefined reference to `maxDetectRead‘
collect2: error: ld returned 1 exit status
Makefile:8: recipe for target ’send‘ failed
make: *** [send] Error 1
Google konnte mir da leider nicht wirklich helfen.
Bin wie gesagt nach Anleitung vorgegangen.
Ideen?
Hab den Raspberry komplett neu aufgesetzt und nun hat es sofort geklappt.
Danke für die Anleitung.
Hallöchen,
viel dank für die Anleitung, läuft echt super nun hat mir aber ein infomatiker gesteckt, da ich ohne dem Breadboard arbeite ein Pegelwandler 5 -> 3V verwenden muß da ich die 5V sonst auch auf den GPIO durchlasse und dieser mit der Zeit kaputt geht.
lars
Du kannst einfach die Spannung, welche zum GPIO läuft, messen. Auf dem Modul sind Widerstände, die die Spannung verringern und somit kein Problem für die GPIOs sind.
Welches Modul meinst du?
Z.B. den 433 MHz Receiver
Tatsächlich, 3,15V gemessen.
vielen dank
Erst einmal vielen Dank für das Tutorial. Nun frage ich mich, ob es möglich ist, die Befehle über eine (z.B. mit Muse) programmierte Webseite weiterzugeben?
. Dann könnte man die Benutzoberfläche individualisieren und optimieren.
Viele Grüße.
Wenn eine Node.js Oberfläche auch in Ordnung ist, könntest du so etwas nehmen: Raspberry Pi Node.js Webserver installieren und GPIOs schalten
Wäre es denn auch möglich, z.B. mehrere Abläufe durch einen Auslöser (z.B. Schalter) zu automatisieren? Wie verbindet man die beiden Programmzeilen?
Vielen Dank für Ihre Mühe.
Na klar 🙂 Du fragst in einer Schleife die Codes ab (wie oben). Wenn dann Taste X gedrückt wurde, startest du deine Aktionen bzw. Funktionen hintereinander. Pseudocode:
Eine Frage hätte ich dann noch :).
Könnte man diesen Schalter auch über eine Funkverbindung mit dem Pi verbinden? Und wie baut man dies dann in den Code ein?
Welchen Schalter willst du per Funk verbinden?
Einen Schalter, der z.B. ein bestimmtes Ereignis auslöst (ich dachte an einen Coming-Home-Schalter, der z.B. die Heizung höherdreht und Licht einschaltet). Diesen würde ich gerne z.B. neben der Haustür montieren.
Ja das geht. Ist fast das gleiche wie hier:
Raspberry Pi mit 433Mhz Funksender fernsteuern
Hallo Felix,
zunächst vielen Dank für das super Tutorial, leider hatte ich auch keine konfigurierbaren Steckdosen zur Hand. Ich wollte allerdings aber auch keine neuen kaufen und tüftelte/suchte weiter.
Zu meinen Steckdosen: Ich hatte zwei Sets (3er und 5er) bei denen ich zwar den Code auslesen konnte und auch übertragen konnte allerdings die Steckdose darauf nicht reagierte. Mittels der folgenden Artikel und einer leicht modifizierten Software war ich in der Lage meine Steckdosen (beide Sets) zu steuern.
Ich fand zunächst einen Artikel, der beim Auslesen auch den Pulse mit ausgibt. Mittels des richtigen Pulses konnte ich dann beide Sets steuern, obwohl diese generische Codes verwenden. Hierbei wird einfach der generische Code und der der richtige Pulse verwendet und schon lassen sich die Steckdosen einwandfrei schalten.
VG
Moritz
Links:
https://www.samkear.com/hardware/control-power-outlets-wirelessly-raspberry-pi
https://timleland.com/wireless-power-outlets/
https://github.com/timleland/rfoutlet
Hallo. Funktioniert das auch mit 433,92 MhZ Funksteckdosen? Ich kenne mich mit den Frequenzen usw. nicht so aus. Danke Klaus
Wenn man 433 MHz schreibt, sind immer 433,92 MHz gemeint.
Hallo,
ich habe Funksteckdosen, ein Garagentor und eine Markise, die alle per Funk gesteuert werden. Ich kann von keinen der 3 Sendern den Code „sniffen“. Lediglich von dem am raspberry angeschlossenen Sender (der beim Empfänger dabei war) kann ich codes auslesen.
Woran kann das liegen? 🙁
Die Sender halte ich quasi direkt neben den Empfänger…
Besten Dank für Eure Hilfe!
LG Timo
Sind es generische Codes, oder solche, die du selbst eingestellt hast? Nur letztere wirst du auslesen können.
Es sind von mir eingestellte Codes bei den Funksteckdosen. Daher müsste ich den Code eigentlich gar nicht mitschneiden, oder? Allerdings klappt auch das Schalten der Dosen über den eingestellten Code nicht. Der Abstand zum Schalten ist ca. 1m. 🙁
Der Abstand zum sniffen ist quasi 0…
Ok. Mein Fehler. Ich habe das gleiche Setup noch mal probiert und erst hat es wieder nicht geklappt. Etwas verärgert habe ich mehrfach hintereinander auf „on“ gedrückt und dann hat er auch mal einen Code mitgeschnitten…. 🙂
Echt sehr gutes Tutorial. Bei mir hat es funktioniert :-)). Der nächste Schritt ist das Ansteuern über Mathematica.
Du rufst an der Switch send mit dem address code 5510417 fuer ON auf.
Die Implementierung von RCSwitch erlaubt jedoch nur ein address code von 1 – 4?!
Okay …
Mein Fehler: switchOn mit send verwechselt …
Hallo, Ich versuche den Code in Mathematica zu compilieren. Da wird der gcc statt des g++ verwendet. Daher wuerde ich gern verstehen was hier (g++ -DRPI ../rc-switch/RCSwitch.cpp steuerung.cpp -o steuerung -lwiringPi) gemacht wird. Insbesondere was das -DPRI macht habe ich nirgends gefunden. Kannst du dazu was sagen?
Ist ein Zusatzparameter für die Verwendung mit WiringPi.
Okay, Danke. Darf ich fragen woher das kommt. In den Dokumentationen von wiringPi habe ich nichts zu compiler Optionen gefunden.
Hallo Leute,
ich habe folgendes Problem. Ich lese den Code 21 für ein und 20 für aus per RCSniffer ein und möchte nun diesen auch senden. Ich verstehe noch nicht wie ich diesen mit Sudo ./send übertragen soll?? ./send xxx x x
Stehe da mächtig auf dem Schlauch
Prinzipiell ja, aber die Codes erscheinen mir zu kurz um korrekt zu sein.
Hey,
beim Ausführen von ./RFSniffer bekomme ich folgende Fehlermeldung:
./RFSniffer: symbol lookup error: /usr/local/lib/libwiringPi.so: undefined symbol: pthread_create
wiringPi und 433Utils schon mehrmals neu installiert. Hat jemand eine Idee wo der Fehler liegt? Liegt es an wiringPi oder dem RFSniffer? Ich nutze den Raspi3 mit Ubuntu Mate.
Wird wohl an Ubuntu liegen. Unter Raspbian läuft es reibungslos.
Habe es heute unter Raspbian ausprobiert. Funktioniert problemlos. Coole Sache!
Hi Felix,
super Seite hier die viel Spaß macht und Bock auf ausprobieren macht!
Ich habe die Funksteckdosen grundsätzlich am laufen. Jedoch habe ich mit dem kompilierten Programm eine Reichweite von <1m, mit dem hier in den Kommentaren schon genannten, fertigen "send 11111 1 1" funktioniert die Kommunikation auch ins Nachbarzimmer zuverlässig! Klingt komisch, ist aber so 😉
Jetzt möchte ich das ganze gerne in eine Webseite als PHP Script mit Shell Execute einbauen, aber da scheine ich einfach zu blöd zu sein, ich kann z.B. einen "ls" Befehl ganz prima ausführen und auch den Output auf der Webseite anzeigen lassen, aber den send Befehl bekomme ich einfach nicht hin.
Ich habe schon den Besitzer auf www-data geändert, ja sogar schon mit Dateirechten 777 probiert. Was kann ich falsch machen? Ich stehe wahrscheinlich gerade einfach auf dem Schlauch…
Viele Grüße
Ben
Was ist genau das Problem beim shell_exec? Bei ls bekommst du ja einen Output, den Output hiervon kannst du ja aber ignorieren.
wenn ich das wüsste 😉
das ich bei ls einen Output bekomme, ist für mich das Indiz, dass ich sowohl shell_exec korrekt benutze als auch, dass shell_exec überhaupt funktioniert. Sobald ich das ganze mit dem send Befehl machen möchte, passiert genau nix! Keine Fehlermeldung, kein Dose wird geschaltet, kein Outpu, es passiert einfach gar nix. Das error log von Apache2 bleibt auch leer. Ich hatte gehofft, dass Du vielleicht eine Idee hast wo es hacken könnte…
Versuch mal den Befehl im Hintergrund zu starten (mit einem & am Ende) und setze ein sleep dahinter (mit Semikolon getrennt)
Habe das Problem gefunden, der send Befehl braucht Schreibrechte in /dev/mem bzw. /dev/gpiomem nach einem sudo chown www-data /dev/mem -R funktioniert der Aufruf aus der Webseite! Danke für Deine Hilfe!
Super Cooles Tut!!!!
Konnte es ohne Probleme nachbauen und erweitern.
So kann man einfach Funksoden bauen, welche man über eine Webseite steuern kann.
Hallo,
gibt es eine Möglichkeit den Daemon zu loggen?
Sprich die Ausgabe von ./daemon & mitschneiden in eine log.txt Datei.
Das wäre super, so kann man nachvollziehen ob und wann eine Steckdose geschaltet wurde
Du kannst
cout
nutzen und beim Start jeglichen Output in eine Datei schreiben.Hallo, habe beim bauen leider ein Problem
„~/433Utils/RPi_utils $ make all
g++ -DRPI -c -o ../rc-switch/RCSwitch.o ../rc-switch/RCSwitch.cpp
In file included from ../rc-switch/RCSwitch.cpp:34:0:
../rc-switch/RCSwitch.h:43:26: fatal error: wiringPi.h: No such file or directory
#include
^
compilation terminated.
: recipe for target ‚../rc-switch/RCSwitch.o‘ failed
make: *** [../rc-switch/RCSwitch.o] Error 1
“
Was kann ich machen, habe es strikt nach Anleitung gemacht
Hast du WiringPi installiert?
Asche auf mein Haupt -.-
Bleibt der Anschluss identisch, ich habe den Raspberry Pi3B
Ja, der Pi3B hat einfach nur mehr GPIOs, die Belegung der alten ist aber gleich.
Ok, läuft soweit, Steckdosen haben Funktioniert, ebenso meine Deckenlampe, wo ich ein Problem habe ist meine „Vasenlampe“ Die Codes kann ich auslesen, kommen deutlich rüber, wenn ich diese Senden möchte , reagiert die Lampe leider nicht.
Received 12587521
Wenn ich den Sende, gehts nicht. Hast du da eine Idee?
Mein Deckenventilator, der ebenfalls auf 433,9Mhz empfängt , liefert zudem überhaupt keine Codes. Schade.
Hallo,
bei den von dir verlinkten Brennenstuhl-Funksteckdosen steht bei Amazon:
„Für diesen Artikel ist ein neueres Modell vorhanden:
Brennenstuhl Funkschalt-Set (4er Funksteckdosen Set, mit Handsender und Kindersicherung) RC CE1 4001 weiß
https://www.amazon.de/Brennenstuhl-Funkschalt-Set-Funksteckdosen-Handsender-Kindersicherung/dp/B073W52CS8/ref=dp_ob_title_light?pldnSite=1
Sind diese auch geeignet?
Leider Nein! Bei mir stand das leider nicht. Ich hatte die Wahl zwischen 3 oder 4 er Set und dachte mir naja bestellste mal 4: Und siehe da ich habe ein ganz anderes Modell bekommen.(hatte aber auch nicht so recht drauf geachtet, habe auf den Link vertraut und bestellt.) Zu meiner enttäuschung generischer Code. da lässt sich also garnichts Steuern
Hallo Felix,
kann ich auch als Antenne ein 433 MHZ USB CC1101 Modul nehmen?
Wie z.B. der Hier:
http://www.ebay.de/itm/NEU-HC-12-USB-CC1101-433Mhz-Serial-Port-Module-Wireless-Modul-for-Arduino-/322735283993?hash=item4b24859f19:g:5VYAAOSw9bBZk75C
Würde mir dadurch das ganze verkabeln sparen und könnte den Sender optimaler über eine UBS Kabelverlängerung platzieren.
Gruß
Chris
Mit dem Modul ist das Skript hier inkompatibel.
Hallo Felix,
super Tutorial, danke! Ich habe leider falsche Steckdosen gekauft, die man nicht einstellen kann. Ich konnte dennoch die Codes auslesen, aber jetzt hapert es am Senden. Komischerweise erhalte ich beim RFSSniffen immer drei Codes, wenn ich auf einen Button auf der Fernbedienung klicke, z.B.:
Received 40990366
Received 4276501
Received 4276501
Hast Du eine Idee, woran das liegen kann? Der erste Code (40990366) ändert sich jedes mal, wenn ich auf den Knopf drücke, der andere Code (4276501) ist immer gleich.
Danke und Gruß
Chris
Moin,
ich habe auch ein Problem, mein Aufbau ist so wie im Tutorial beschrieben. Ich kann den Code der Fernbedienung auch auslesen und beim Senden wir der Code auch vom RFSniffer angezeigt, scheint also zu senden. Meine Funksteckdosen lassen sich per DIP Schalter einstellen (Systemcode und Unicode) jedoch tut sich an den Steckdosen nichts. Woran kann es liegen? Hab zum Testen das Sendemodul direkt neben die Steckdose gelegt, also kann es nicht an der Entfernung liegen.
Schöne Grüße
Paddy
Hast du verschiedene Distanzen probiert? Ich hatte bei einigen Steckdosen das Problem, dass diese erst ab ca 50cm Abstand geschaltet haben. Ansonsten könnte natürlich auch deine Verkabelung zum Sendemodul ein Problem haben.
Hallo Felix,
vielen Dank für das tolle Tutorial und dass du schon seit über 2 Jahre tapfer die anstehenden Fragen beantwortest. Die Einrichtung hat bei mir funktioniert und ich erhalte bei meinen 3 Intertechno Devices über den ./RFSniffer unterschiedliche Codes zum ein- und ausschalten (z.B. 172558 ein / 172557 aus) und konnte diese auch mit ./codesend korrekt ansteuern. Nachdem ich den Code nur mit ./send ausgeführt hatte, funktionierten diese auch nicht mehr mit ./codesend, obwohl ich sie mit ./RFSniffer erneut ausgelesen habe und sich kein Wert geändert hat. Ich habe die Datei codesend.cpp unverändert neu kompiliert, jedoch ohne Erfolg:
sudo ./codesend 172558
sending code[172558]
==>> keine Reaktion
Ich würde mich freuen, falls du (oder jemand anderes) eine Idee oder Lösungsansatz hat.
VG
Gerd
Hallo,
Danke für diese tolle Anleitung. Ich habe einen Raspberry 3 von meinen Kindern zum Geburtstag bekommen. bis zum Sniffer hat alles super funktioniert. Ich konnte die 6 Codes der Fernbedienung auslesen.
Ich habe den c++ code kopiert und eingefügt. Ich habe dann ein 2 Fenster geöffnet um dort den code zum kompilieren einkopiert, doch dabei kommt folgende Fehlermeldung.
pi@raspberrypi:~/433Utils/RPi_utils $ g++ -DRPI ../rc-switch/RCSwitch.cpp steuerung.cpp -o steuerung -lwiringPi
steuerung.cpp: In function ‘int main(int, char**)’:
steuerung.cpp:21:1: error: expected ‘;’ before ‘}’ token
}
^
Da ich von c++ leider nichts verstehe? Lerne erst gerade ein wenig Pyhton zum programmieren. Weiß ich nicht was ich falsch gemacht habe 🙁
Gruß
Michael
Vor Zeile 21 fehlt ein Semikolon. Ist dort irgendwo ein Befehl, der nicht richtig beendet wurde?
Hallo,
ich habs gefunden, irgendwie war das ; nacht return 0; weg
Jetzt habe ich doch noch eine Frage.
Mit den Angegebenen Befehlen sudo ./steuerung 1 oder sudo ./steuerung 2 kann ich die Steckdose NICHT schalten.
mit sudo ./ codesend 13988879 und ./codesend 13988867 funktioniert es aber. Wo ist der Fehler?
So wie die PINs auf dem Bild gesteckt sind, funktioniert da der angebene C++ Code?
Du musst alle Parameter, die das Skript braucht angeben.
Hallo!
Ich hab über das LXTerminal nach der oben auf geführten Anleitung den Code meiner Steckdosenfernbedienung ausgelesen. Dann habe ich nach der Anleitung versucht (Jetzt erstellen wir eine neue C++ Datei mit folgendem Inhalt:
sudo nano steuerung.cpp) die Ansteuerung zu Programmieren, bin dabei auch in das GNU nano 2.2.6 Fenster gelangt und habe alles so eingegeben wie es das steht. Jetzt stehe ich vor dem Problem wie kann ich das Abspeichern und wie soll ich eine Datei kompilieren? Und wo soll ich diesen Befehl (g++ -DRPI ../rc-switch/RCSwitch.cpp steuerung.cpp -o steuerung -lwiringPi) eingeben?
Kann mir da jemand weiter helfen?
Speichern mit STRG+O, zurück in die Shell mit STRG+X, dort kompilieren.
Vielen dank Felix!
Das hat schon mal geklappt, aber beim kompilieren kommt jetzt die Meldung (g++: error: ../rc-switch/RCSwitch.cpp: Datei oder Verzeichnis nicht gefunden). Kannst du mir da auch weiter helfen?
MfG Christian
Ihm fehlt die Datei zum kompilieren (entweder ist sie nicht vorhanden oder in einem anderen verzeichnis etc.)
Hallo Felix!
Kannst du mir sagen wie ich das richtige Verzeichnis finde und welchen Befehl ich dann eingeben muß? Was ist eigentlich kompilieren?
MfG Christian
Also das absolute Verzeichnis, in dem du dich befindest gibt es mi „pwd“.
Kompilieren heißt, dass der lesbare Code in Maschinencode übersetzt wird.
Ich habe leider ein problem mit dem auslesen der 433 MHz Signale. Ich habe alles wie im Bild verbunden und installiert es kommt aber nichts an wenn ich auf der Fernbedienung irgendwo drauf drücke… Liegt es daran, das ich nicht die Steckdosen habe, die sie verlinkt haben? Aber normalerweise müsste ich doch trotzdem die Signale reinbekommen?
Raspberry Pi 2 Model B habe ich und den verlinkten Sender/Empfänger.
Woran kann es noch liegen? Falsch verkabelt?
Danke für jede Antwort
Mit freundlichen Grüßen
Dominik
Solltest du generische Steckdosen haben, so kann es sein, dass die Codes nicht erkannt werden. Daher empfehle ich die aus dem Link, damit geht es in jedem Fall (bei richtiger Verkabelung).
Okay dann versuch ich das mal. Dankeschön, werd mich dann nochmal melden 🙂
man könnte auch einfach pilight.org verwenden;
Hallo Felix..
Könntest Du dieses Tutorial mal etwas weiterentwickeln? In der Zwischenzeit bekommt man nirgends mehr diese tollen 433mhz Funksteckdosen mit DIP-Schaltern zu kaufen ohne Ggf. ein Vermögen dafür auszugeben…
Und mit den Günstigen „Selbstlernenden“ Schweinehunden funktioniert das nicht mehr… ?
Gruß Skipper
Die im Tutorial verlinkten Steckdosen habe ich selbst hier – diese sind mit einstellbarem Hauscode (nicht selbstlernend). Bald kommt aber auch ein Tutorial zu 2.4GHz Wifi Steckdosen.
Hallo Felix.
Wie darf ich mir das Szenario vorstellen?
Ist es möglich mit dem RPi die WiFi-Steckdosen anzusteuern?
Ich hatte mich heute eigentlich gegen diese WiFi-Steckdosen (inkl. Sprachsteuerung) entschieden, weil ich keine gescheite Rückfallebene (z.B. über eine 433MhZ Funkfernbedienung) habe, falls Alexa oder der Cloud-Server nicht verfügbar ist.
Schade ist nur, dass bei diesen 433MhZ-Geräten kein Zustand abfragbar ist. Ebenso wenig ist die Sache „sicher“.
Bald kommt ein Tutorial, in dem wir Wifi Steckdosen ohne Cloud Anbindung nutzen (dafür werden wir die Firmware selber flashen).
Hallo
Könntest du vielleicht dieses gutes Tutorial erweiteren mit einer einbindung in OpenHab um sie so über Openhab zu schalten?
Danke 🙂
Ist geplant und kommt diese oder spätestens in 2 Wochen 🙂
Hallo Felix.
Falls du dieses Tutorial mit openHAB erweiterst, dann wäre es sicherlich nicht schlecht, auch die Möglichkeit per Alexa Skill über den openHAB-Cloudservice auf die Steckdosen zuzugreifen, einzubauen.
Das hat mich mehrere Abende gekostet, bis das jetzt einwandfrei (inkl. der openHAB-App) funktioniert.
Hallo Felix, gratuliere zu den Supertutorials, selbst ich als ahnungsloser, ja betagter Rentner komme gut damit zu recht, vielen Dank dafuer.
Da ich vom Programieren keine Ahnung habe, habe ich auch das Programm „Steuerung“ nicht ans Laufen bringen koennen, habe einfach die Datei kopiert und in die SSH-Oberflaeche eingefuegt, aber wie erwartet, kompiliert habe ich es nicht bekommen. Allerdings konnte ich dank deiner Anleitung die verschiedenen Codes der Schalter auslesen und die Steckdosen mit dem Befehl „sudo sendcode xxxx..“ betaetigen (sowohl Ein als auch Aus). Das Einschalten ging ueber mehrere Meter im Haus (5-6m oder sogar mehr) das Ausschalten klappte allerdings nur ueber Strecken die weniger sind als 1 Meter. Eine Idee woran das liegen koennte?
Nochmals Danke fuer deine super Arbeit.
Teem
Das ist komisch, könnte aber an der Antenne des Senders liegen. Es gibt für ein paar Euro mehr Module mit verstärkter Antenne. Diese könntest du ausprobieren.
Update: habe eben ein Stueckchen Draht ca. 173 mm am „Loetpunkt“ ANT auf der Senderplatine geloetet und es funktioniert tadelos. Unverstaendlich trotzdem, wieso ohne Antenne EIN ok aber AUS nicht.
Hast du eine Ahnung, ob ich irgendwie den rolling code von dem ding https://www.amazon.de/gp/product/B005JSCNQC/ref=ask_ql_qh_dp_hza hier rausbekommen kann ? Ich empfange btw nicht mal die Signale mit Sniffer, also bekomme keine Codes angezeigt. wäre cool wenn du eine Lösung hättest ^^
Nicht statische Codes werden schwierig mit den 433Utils 🙁
hast du eine Empfehlung, wie man das ganze lösen könnte ? Eine Möglichkeit wäre der Eingriff in den Schaltkreislauf des Tores und einen eigenen Sender reinzusetzen, jedoch ist doch auch immer die Rede von libs, die bei rolling codes verwendet werden können. ^^
Irgendwie verzweifel ich gerade am RFSniffer. Ich versuche einen Türsensor mit RFSniffer zu überwachen. Das klappt auch prima wenn ich ./RFSniffer über die Konsole starte. Er erkennt den Code des Sensors und sendet brav ein Email wenn die Tür geöffnet wird. Aber starte ich RFSniffer über ein PHP Script, tut er nix. mit „pgrep RFSniffer“ bekomme ich zwar eine PID (das heißt wohl er läuft), aber mehr auch nicht. Hat da jemand ein Idee?
Hast du ihn mit „&“ am Ende (also im Hintergrund) gestartet?
Nur ein Hinweis: Wenn ich mich nicht sehr täusche, zeigt das Beispielfoto der Funksteckdose die Einstellung 00011 D anstatt der im Text beschriebenen 00011 E …
Hi,
vorweg ich hab noch nie was mit Python programmiert…
Ich möchte das meine Funksteckdosen angehen wenn ich nen Eingang an einem GPIO habe…
GPIO als Eingang und Ausgang einstellen hab ich hinbekommen…
Mein Problem ist, wie ruf ich in meinem Python Programm den Befehl „sudo ./ steuerung 1“ auf?
Moment hab ich stehen:
….
if GPIO.input(23)==1:
???? (was muss ich hier reintippen?) (einschalten)
time.sleep(2)
???? (ausschalten)
Hat sich erledigt
Hallo,
ist es möglich die Pin-Belegung – zumindest für die Datenverbindungen – zu ändern? Bei mir sind die Pins schon belegt.
Klar, aber du musst es im C++ Code entsprechend anpassen (WiringPi Belegung) und neu kompilieren.
Guten Morgen,
leider bekomme ich aich eine Fehlermeldung und Google konnte mir auch nicht helfen 🙁
—————————-
pi@raspberrypi:~/433Utils/RPi_utils $ make all
g++ -DRPI -c -o ../rc-switch/RCSwitch.o ../rc-switch/RCSwitch.cpp
g++ -DRPI -c -o send.o send.cpp
g++ -DRPI ../rc-switch/RCSwitch.o send.o -o send -lwiringPi
/usr/lib/gcc/arm-linux-gnueabihf/6/libgcc.a: file not recognized: File format not recognized
collect2: error: ld returned 1 exit status
Makefile:8: die Regel für Ziel „send“ scheiterte
make: *** [send] Fehler 1
————————
Jemand eine Idee?
…und habe noch ein Fehler festgestellt. Das Paket WiringPi wurde auch nicht fehlerfrei installiert:
———————————–
pi@raspberrypi:~/wiringPi $ ./build
wiringPi Build script
=====================
WiringPi Library
[UnInstall]
[Compile] wiringPi.c
[Compile] wiringSerial.c
[Compile] wiringShift.c
[Compile] piHiPri.c
[Compile] piThread.c
[Compile] wiringPiSPI.c
[Compile] wiringPiI2C.c
[Compile] softPwm.c
[Compile] softTone.c
[Compile] mcp23008.c
[Compile] mcp23016.c
wiringPi.c:1309:21: warning: ‘digitalWrite8Dummy’ defined but not used [-Wunused-function]
static void digitalWrite8Dummy (UNU struct wiringPiNodeStruct *node, UNU int pin, UNU int value) { return ; }
^~~~~~~~~~~~~~~~~~
wiringPi.c:1308:21: warning: ‘digitalRead8Dummy’ defined but not used [-Wunused-function]
static unsigned int digitalRead8Dummy (UNU struct wiringPiNodeStruct *node, UNU int UNU pin) { return 0 ; }
^~~~~~~~~~~~~~~~~
[Compile] mcp23017.c
[Compile] mcp23s08.c
[Compile] mcp23s17.c
[Compile] sr595.c
[Compile] pcf8574.c
[Compile] pcf8591.c
[Compile] mcp3002.c
[Compile] mcp3004.c
[Compile] mcp4802.c
[Compile] mcp3422.c
[Compile] max31855.c
[Compile] max5322.c
[Compile] ads1115.c
[Compile] sn3218.c
[Compile] bmp180.c
[Compile] htu21d.c
[Compile] ds18b20.c
[Compile] rht03.c
[Compile] drcSerial.c
[Compile] drcNet.c
[Compile] pseudoPins.c
[Compile] wpiExtensions.c
[Link (Dynamic)]
/usr/lib/gcc/arm-linux-gnueabihf/6/libgcc.a: file not recognized: File format not recognized
collect2: error: ld returned 1 exit status
Makefile:77: die Regel für Ziel „libwiringPi.so.2.46“ scheiterte
make: *** [libwiringPi.so.2.46] Fehler 1
————————————-
Hi zusammen,
auf vor ein paar Tagen einen Raspberry bekommen. Wollte jetzt mal nach dieser Anleitung eine Steckdose schalten.
Wenn ich den Befehl zum anschalten der Steckdose gebe , passiert gar nichts. Der Empfänger, den ich zusätzlich noch am Raspberry habe, der empfängt auch nichts. Eine Prüfung ob Sender und Empfänger funktionieren, hab ich so durchgeführt : https://tutorials-raspberrypi.de/raspberry-pis-ueber-433mhz-funk-kommunizieren-lassen/
Das funktioniert. Alle Codes die ich auf diesem Weg Sende, werden auch empfangen. (Habe die Version mit einem Raspberrry genutzt).
Ich möchte folgende Steckdose schalten : Unitec 55006×10 Funksteckdosen
Die Codes zum ausschalten bekomme ich am Empfänger angezeigt, wenn ich Aus bzw. An an der Fernbedienung drücke. Diese Codes hab ich dann in die .cpp Datei eingetragen. Und aus dem PIN = 0 hab ich den Pin von dem Sender angegeben, also 11.
Irgendwo habe ich etwas übersehen.
Der Abstand zwischen Sender und Empfänger darf nicht zu gering sein.
Hallo,
danke für die tolle Anleitung.
Ich habe alles auf einem rpi zero w installiert und es hat auch zunächst auf Anhieb prima funktioniert.
Mit einem Python Test-Script
lässt sich die Steckdose problemlos drei Mal ein- und ausschalten, wenn man von der Konsole mit
python3 /Pfad_zum_Script/test-script.py
startet.
Versuche ich dagegen, dasselbe Script von einer IDE (ich habe Idle und Thonny probiert) zu starten, läuft es zwar ohne Fehlermeldung durch, die Steckdose wird aber nicht geschaltet. (Die print-Befehle werden dagegen ausgeführt. )
Jetzt kommt das Merkwürdige:
Bei einer nachfolgenden Ausführung des Scripts über den obigen Konsolenbefehl wird die Steckdose plötzlich nicht mehr geschaltet. Auch dann nicht, wenn das Script in der IDE geschlossen ist. Die Ausführung des Scripts über die Konsole ist erst dann wieder erfolgreich, wenn die IDE komplett geschlossen wurde.
Was könnte die Ursache für dieses merkwürdige Verhalten sein? Für mich wäre es ein großer Vorteil, wenn ich bei der Programmentwicklung das Script aus der IDE heraus starten könnte.
Grüße Erich
Hallo Errich,
du nutzt eine Python Version, daher würde ich ggf. direkt bei den Entwicklern auf github o.ä. nachfragen. Das könnte nämlich an vielem liegen.
Hallo,
ich habe das ganze nicht nur für Funksteckdosen genutzt, sondern auch als Funk Rolladensteuerung mit den Intertechno ITL-500 die es bei Hornbach gibt.
Jetzt mein Problem bzw. meine Frage:
Ich kann die Module ganz normal als Schalter in HomeKit schalten, allerdings nur komplett auf oder zu.
Wie bekomme ich zum Beispiel eine Mittelstellung hin?
Hat da jemand ne Idee?
LG aus Essen
Marvin
Hallo Marvin,
hast du dein Problem bereits gelöst?
Ich habe es so realisiert, dass ich nochmal das gleiche Code sende. Leider reagieren nicht alle Module wie erwartet korrekt und ich suche noch nach bessere Lösung.
Gruß
emnit
Das Howto… Mega spitze !!
Im Grunde, hätte das komplette Setting auch direkt funktioniert, wenn da nicht eine blöde Sache gewesen wäre.
Die Wellenlänge. Codesend akzeptiert als Parameter optional die Wellenlänge. Ein schlauer Blogger hats gewußt. Einfach in 20er Schritten die Wellenlänge als Parameter durchprobieren bis codesend schaltet.
Meine intelligenten Mumbi Steckdosen wurden mit RSniffer direkt ohne Probleme ausgelesen, aber um sie mit dem Sender zu erreichen mußte ich codesend einen Wert zwischen 120 und 160 für die Wellenlänge übergeben.
./codesend
0 140
Hallo zusammen, ich bin absoluter Anfänger und wollte dieses Projekt als Einstieg nutzen, bisher hat auch alle gut geklappt nur das kompiliren
Befehl:
g++ -DRPI ../rc-switch/RCSwitch.cpp steuerung.cpp -o steuerung -lwiringPi
funktioniert bei mir nicht, er schreibt dann immer Datei oder Verzeichnis nicht gefunden..
der Dateipfad laut Dateimanager ist /home/pi/rc-switch
ich habe auch schon versucht die datei in dem Ordner „/“ direck zu speichern, mit dem selben Ergebnis.
Ich hoffe ich falle euch als absoluter Programieranfänger nicht all zu sehr auf die Nerven, ich freue mich über jede Hilfe
Ich rauf auch gerade herum und bin nicht sehr firm, aber:
stehst du im Verzeichnis /home/pi/433Utils/RPi_utils ?
Danke für das Tutorial.
Allerdings finde ich die Anleitung für die Funksteckdosen unnötig kompliziert, es geht auch ohne Empfänger, Sniffer und extra C Programm.
Im 433Utils Paket ist das Programm send enthalten, dort können die Codes direkt als Argument angegeben werden.
send [code] [Taste] [Ein/Aus]
code:
Direkt die Dipschalter
11111 (alle Schalter auf ON)
00000 (alle Schater auf Off)
Taste:
1 für A … 5 für D
Ein/Aus
1 Ein
0 Aus
Beispiel für die oben angegeben Einstellungen:
Einschalten:
./send 11100 4 1
Ausschalten:
./send 11100 4 0
Hi!
Erstmal Danke für den tollen Beitrag.
Ich empfange mit RFSniffer die Dezimalcodes (insgesamt sind es 2 verschiedene Codes die sich mit jedem Ablauf wechseln).
Jetzt versuche ich dieselben mit ./codesend über ein Sendermodul (an GPIO17 [wiringPi Pin ] – habe ich in codesend.cpp nachgeprüft) zu senden, aber es passiert nichts.
Meine Frage: kanns sein dass eine Verschlüsselung vorliegt(?), da die Dose auch verschiedene Codes annimmt. Oder übersehe ich da etwas.
Funksteckdosen von uniTEC, kein DIP-Schalter
Ich freue mich über Hilfe!
regards, Aleks
Super Tutorial. Vielen Dank. Hat auf Anhieb geklappt, obwohl ich noch nie irgendwas mit Elektronik gemacht habe. Super Sache!
Hi!
Ich habe das ganze an einem Pi ZeroW versucht. Leider ohne Erfolg. Der Sniffer zeigt einfach nichts an. Kompiliere ich Sender und Empfänger auf demselben PIN, zeigt der Sniffer die gesendete Zeichenfolge.
Hallo,
Erst mal: Hut ab zu deinen Tutorials, echt klasse wie du die Tutorials aufgebaut hast.
Nun aber zu meinem Problem, ich habe die Steckdosen von Brennenstuhl gekauft und wollte testweise die Fernbedienung auslesen, es kommt aber nichts am Sniffer an, selbst wenn ich die Fernbedienung direkt an den Empfänger halte.
Wenn ich über das codesend Programm etwas schicke, kommt das am Sniffer an, der Sender ist aber weiter weg als wenn ich die Fernbedienung direkt dran halte.
Kann mir da jemand weiterhelfen?
Hier ein Hinweis für alle 433 Mhz-Bastler:
Dieser Freuquenzbereich (ISM) ist nur eine Anwendung kein! Funkdienst. ISM-Anwendungen haben kein Schutz. 430 – 440 MHz ist dem Amateurfunkdienst primär zugewiesen (750 Watt). Achtet auf die eingekauften Funkmodule. Aus dem europäischem Ausland eingeführte Module ist der Käufer der „in Verkehr bringer“ und steht für alles gerade was schief läuft. Die Bundesnetzagentur geht gegen nicht konforme Module vor. Auch der Zoll ist mit eingebunden.
Wünsche allen ein erfolgreiches Basteln und viele gute Ideen.
Vielen Dank für das Tutorial!
Ist es irgendwie möglich per Android Widget oder App die Befehle an den Pi zu schicken und somit die Steckdosen zu schalten?
Vielen Dank im Voraus!
Habe es selbst herausgefunden.
Mit den Apps Tasker und AutoRemote gehts vom Android Smartphone aus.
Hier kann man sehen, wie man den Pi mit AutoRemote verbinden kann:
https://notenoughtech.com/tasker/tasker-raspberrypi/
Hi,
lässt sich der aktuelle Schaltzustand einer Funkdose auslesen?
Wäre ja noch wichtig dem Raspi die Information zu geben ob eine Steckdose ein oder ausgeschaltet ist.
z.Bsp nach Stromausfall oder reboot vom Raspi, somit liessen sich die Buttons in einer GUI farblich gestalten 🙂
Hi, vielen Dank erstmal für das tolle Tutorial und die prima Seite.
Ich habe auch alles so gemacht wie ich es hier verstanden habe und alle Skripte und Installs sind problemlos durchgelaufen.
Doch der Sniffer zeigt bei mir gar nichts an… Hab auch andere Fernbedienungen als die Steckdosensteuerung probiert, leider ohne Erfolg 🙁
Ich frage mich auch, woher der Pi wissen soll was er da auf welchen Ports machen soll? Denke ich jetzt zu kompliziert? Woher weiß denn der Pi, dass er da plötzlich ne Funkkombi auf irgendwelchen GPios hat?
Vielen Dank schonmal für die freundliche Hilfe.
Hab Deine Seite gebookmarkt und hoffe das Du noch weitere spannende Projekte veröffentlichst 🙂 Würde – vermutlich nicht nur mich – sehr freuen.
Hallo! Ich möchte von einem Raspi ein Signal senden wenn er ein Signal durch einen Schalter bekommt. Dieses Signal soll dann von einem anderen Raspi empfangen werden und dieser soll dadurch dann ein Relais schalten. Sozusagen ein kabelloses GPIO signal. Ist das möglich und wenn ja wie?
Hallo zusammen, tolle Anleitung, dazu hätte ich auch eine Frage. Wir haben auf dem Raspberry einen Raspbee, und auf dem Raspbee parallel auf dem Bus ein 433mhz Sendemodul. Kann es sein das dies das Gateway und den Raspbee nun stört, irgendwie kann Alexa das Licht nach Neustart des Gateway einmal schalten und danach sagt sie „das Gerät reagiert nicht“. Die Steckdosen zum Sendemodul lassen sich aber weiter gut schalten.
Wir haben schon diverse De- und Neuinstallationen von deconz versucht, aber Ihne Erfolg.
Kann es also an der Kombi Raspbee und Sendemodul liegen?
Und wenn ja, weiss jemand eine Lösung dazu?
Tausend Dank für Feedback.
Viele Grüße, Simone
Also, vielen Dank wieder einmal für die hilfreichen Anleitungen/Fragen und Kommentare…
Ich habe jetzt Stunden versucht, bei den Raspberry-kompatiblen Funksteckdosen die Codes mit RFSniffer wie beschrieben auszulesen.
Meines Erachtens stimmt die 5V – Belegung des Empfängermoduls bei VCC nicht — erst nachdem ich alle Fehlerquellen (falsche Verkablung etc.) ausgeschlossen hatte und als „Akt der Verzweiflung“ den linken Pin (von der Bestückungsseite gesehen) des Empfängermoduls von PIN 2 (phys. Nummer) auf den 3,3V – Ausgang von Pin 1 gelegt habe, hat plötzlich alles funktioniert.
Mit codesend 1234567 (es sind bei meinen Steckdosen 7 Ziffern) kann ich dann über mehrere Meter im Gebäude vom Raspberry Pi aus die Dosen ein- und ausschalten.
Bei den Brennenstuhl-Dosen scheint der Code für „Aus“ immer um 3 höher zu sein als der „Ein“ – Code, z.B. 1000541 für „Ein“ und 1000544 für „Aus“ (Dies sind übrigens natürlich nicht die Codes für meine Dosen ;-))
Vielleicht waren bei älteren Modulen vor einigen Jahren wirklich einmal 5V notwendig, bei allen Modulen, die ich erst vor einigen Tagen gekauft habe, ist 3,3 V wohl genügend und „lebenswichtig“!
VG DarthVader
Hallo. Ist die Anleitung noch aktuell. Ich habe noch einen „alten“ Raspi Modelb Rev 2 und möchte ihn dafür einsetzen. Ich habe das Buster lite image installiert und wiringpi über „sudo apt-get install wiringpi“ nachinstalliert. Vorher war nichts hierzu installiert, da mit „gpio -v“ keine Ausgabe erfolgte. Nach der Installation war das erfolgreich. Danach bin ich wie hier im Artikel vorgegangen, aber über den Sniffer kommt kein Code zurück. Egal welche 433 MHz Fernbedienung ich nutze (am liebsten wäre mir die GLOBALTRONICS GT-3000) gibt es keine Ausgabe. Die Verkabelung habe ich mehrfach getestet, die sollte passen. Auch habe ich über ein zweites bash fenster ein sendcode durchgeführt, welcher auch nichts auf dem WirePort 2 ausgibt. Ideen? Danke vorab und Gruß
Andre
ok. Ich habe die Ursache gefunden. Der Empfänger ist trotz Antenne so schlecht, dass ich ihn physikalisch berühren muß um den Code lesen zu können. Danach hat bei Auslesen alles funktioniert.
Hallo. Jetzt habe ich aber noch ein weiteres Problem 😉 Es geht um das Senden des Codes. Ich habe die ccp Datei mit vorher angepassten ON/OFF Codes geändert und kompiliert.
Wenn ich den Code „sudo ./steuerung 1“ ausführe passiert genau nichts.
Verkabelung ist richtig, jedoch benutze ich eine andere Steckdose als die hier angegebene.
Wofür steht die 24 in der Zeile „mySwitch.send(codeSocketDon, 24)“?? Was bedeutet das und muß ich das ggf anpassen?
Danke und Gruß
Andre
Hallo,
danke erst mal für das Tutorial.
Ich habe einen virtuellen RasPi 2GB mit aktuellem „Raspberry Pi OS with desktop“ mit einem angeschlossenen „nano CUL 433 mit Externer Antenne“.
(Link: https://www.smart-home-komponente.de/nano-cul/nano-cul-433-extern/)
Das Gerät an sich wird vom RasPi erkannt und auch der Adapter ermöglicht prinzipiell die Erkennung als serielles Gerät an USB.
Ich habe nun zwei Probleme:
1. Die Anleitung oben fuktioniert super (das ist nicht das Problem), ABER ich kann keine Codes auslesen.
Fehlermeldung:
pi@OpenHAB:/opt/433Utils/RPi_utils $ sudo ./RFSniffer
Oops: Unable to determine board revision from /proc/cpuinfo
-> No „Hardware“ line
-> You’d best google the error to find out why.
2. In Openhab3 gibt es wohl leider die InterTechno-Bridge nicht mehr, so das ich das Gerät dort nicht ansteuern kann.
Hat dazu jemand eine Idee?
Vielen Dank schon mal vorab.
Mit freundlichen Grüßen
Simon
Hallo,
auch ich möchte mich für das tolle und gut nachzuvollziehende Tutorial bedanken.
Leider habe auch ich einen Hänger, was die Umsetzung betrifft.
Nach dem Kompilieren ohne Fehlermeldung bekomme ich beim Start der Datei die Meldung „Speicherzugriffsfehler“.
Ich habe daraufhin den Quellcode direkt aus dieser Seite in nano kopiert, doch nach erneutem Kompilieren erscheint die selbe Meldung.
Kann mir jemand sagen, ob das Problem nur bei mir besteht und ob ich etwas falsch mache oder vergessen habe?
uname -a gibt folgendes aus:
Linux raspberrypi 5.10.36-v7l+ #1418 SMP Thu May 13 18:17:17 BST 2021 armv7l GNU/Linux
Auch ich bedanke mich im Voraus für die Hilfe.
LG
Swen
Hallo Leute, ich brauche dringend Hilfe.
Momentan versuche ich dieses Tutorial nach zu machen und habe bisher jeden Schritt identisch befolgt, jedoch stehe ich vor folgendem Problem und zwar, wenn ich versuche die Funksteckdose von meinem Raspberry Pi (natürlich mit Sender und Empfänger) anzusteuern passiert nichts. Ich sehe auf meinen separaten Bildschirm, der mit meinem Raspberry Pi verbunden ist, dass Signalcodes versendet und empfangen werden, trotzdem springt die Funksteckdose nicht an. Die Funksteckdose geht nur an, wenn ich sie über die mitgelieferte Fernbedienung anschalte. Ich habe auch schon bereits die Kommentare nach einem ähnlichen Problem durchgestöbert und habe nichts gefunden, dass meinem Problem ähnelt. Das einzige was für mich in Frage kam, war eine Antenne an dem Sender dranzulöten, jedoch bleibt mein Problem ungelöst.
Die Funksteckdose ist dieselbe von Brennstuhl, auch die DIP Einstellung ist identisch.
Ich würde mich sehr über eine Antwort freuen und danke euch schon mal im Voraus für eure Aufmerksamkeit und Hilfsbereitschaft.
Grüße
Dario
Hallo, danke für deine cooles Tutorial. Leider komm ich nicht weiter. Ich schaffes nicht mit meinem Raspberry 4b Funksteckdosen mit dem 433 MHZ sender anzuschalten.
– sender zum receiver funktioniert! da lese ich einen 4 stelligen code aus.
– senden zur Funksteckdose – 2 meter bis 2 cm alles versucht. sie geht nicht an!
„send 11111 1 1“ – geht nicht.
Und das cpp propgramm versucht. Leider kein Erfolg. Muss ich bei „send den PIN eingeben?“ oder wird der automatisch eingestellt?
Danke