Wer eine Hausautomatisierung o.ä. anstrebt, wird sich früher oder später bestimmt auch Gedanken über eine kabellose Bedienung machen. Dazu bietet sich die 433Mhz Frequenz an, denn es gibt viele günstige Sender und Empfänger sowie eine breite Masse an verfügbaren Bibliotheken und Skripten.
In diesem Tutorial möchte ich zeigen, wie man mittels einem kleinen Handsender und einem Empfänger GPIOs auf dem Pi (de)aktivieren kann.
Zubehör
Um eine kleine Testschaltung zu bauen, habe ich folgende Komponenten benutzt:
- Funk Fernbedienung Clone (oder mit Empfänger)
- 433Mhz Empfänger-Modul
- TransistorenLEDs
- 3x 330Ω sowie 3x 10kΩ Widerstände
- Jumper Kabel
Falls du eine Funkfernbedienung hast, kannst du auch diese benutzen, allerdings wird dann wohl das ursprünglich gedachte Objekt auch aktiviert 😉
Bei den Clones sollte man noch beachten, dass sie oftmals (nicht alle Modelle) erst ein Signal kopieren müssen, um eines zu senden.
Aufbau
Die Widerstände vor den Transistor Basen sind 10kΩ groß, jene bei den LEDs 330Ω groß.
Der Aufbau ist für das Raspberry Pi 2 Model B/B+, aber ist auch auf allen anderen Modellen ausführbar (ggf. WiringPi Pinbelegung beachten).
Software
Als Grundlage habe ich dieses Repository genommen, welches ich bereits in einem vorherigen Tutorial benutzt habe.
Als erstes sollten wir den Code laden:
wget http://tutorials-raspberrypi.de/wp-content/uploads/scripts/433control.zip unzip 433control.zip cd 433control
Wir kompilieren nun, um gleich den Code des Empfängers auslesen zu können (falls du einen anderen Pin verwendest, ändere die RFSniffer.cpp
Datei und kompiliere danach).
make sniff
Um die Codes jetzt auszulesen starten wir die kompilierte Datei
sudo ./sniff
und drücken die Tasten auf der Funkfernbedienung.
Meine Codes sind: 11734380, 12269868, 12365029 und 11854229. Da du andere Codes haben wirst, muss die Datei RFSniffer.cpp bearbeitet werden.
sudo nano RFSniffer.cpp
Ab Zeile 46 findest du die verschiedenen Codes, die durch deine ersetzt. Falls du andere Pins für die LEDs genommen hast, kannst du dies auch hier ändern (Achtung: WiringPi Belegung).
Als nächstes muss die Datei kompiliert werden:
make RFSniffer
Anschließend wird gestartet:
sudo ./RFSniffer
Wenn du anschließend die Tasten auf der Fernbedienung drückst sollten die LEDs angehen. Falls die LEDs flackern, liegt das daran, dass das Signal nicht dauerhaft gesendet wird und sobald keines empfangen wird, die LEDs automatisch ausgeschaltet werden. Du kannst den Code aber natürlich deinen Wünschen nach anpassen.
Denkbar sind hier unterschiedliche Szenarien, wie den Nutzen bei der Heimautomatisierung.
139 Kommentare
Guten Abend,
vielen dank für das einfache Tutorial. 🙂 Ich möchte mir einen Funk Tür Alarmkontakt holen und diesen in meinen Briefkasten verbauen. Dieser sendet 433 mhz Signale welche ich dann mit dem Pi abfragen will, kein Problem bis hier. Doch wie kann ich das in der RFSniffer.cpp datei so ändern dass nicht ein GPIO geschaltet wird sondern eine datei (.sh) ausgeführt wird?
Du könntest es mit
system("pfad/zur/datei.sh -parameterXY")
versuchen. Damit führst du ein Kommandozeilenargument aus. Eine Erklärung gibt es hier.WoW das ging schnell! Wie ist denn die Pin belegung bei dem „B“ ? Bei deinem Schaltbild geht der DATA ja auf PIN 9, welcher in beiden fällen GNG ist, hab ich was übersehen?
Meinst du Model B? Da ist der Pin Header einfach kürzer, aber ich habe sowieso keinen der zusätzlichen Pins des B+ genommen.
Ach und noch ein komisches phänomen… Ich habe den Empfänger gar nicht dran, nur den Sender, wenn ich die ./sniff starte und per „PowerPi“ meine Funksteckdosen schalte wird mir trotzdem „Received xxxcodexxx“ angezeigt, wenn ich die 433 mhz Fernbedienung drücke jedoch nix
das klingt merkwürdig. Funktioniert es mit Empfänger denn richtig?
Nein, der Empfänger du funktioniert gar nicht 🙁 auch wenn ich alles abziehe (Empfänger und Sender) werden mir beim Sendebefehl immernoch Daten beik Empfangen angezeigt… Das kann ja nicht normal sein oder?
Ich habe eine kleine Änderung am Schaltplan vorgenommen, schau mal ob es damit bei dir klappt?
An Pin 11 liegt schon der 433mhz Sender bei mir dran, welcher Pin ist denn bei dem RFSniffer hinterlegt und lässt der sich eventuell ändern?
Schau dir mal die RFSniffer.cpp an und ändere dort ggf. die Pins vorm kompilieren. Die Pin Nummern richten sich nach der WiringPi Belegung.
Das ist wahrscheinlich „int receiverPIN“ oder? Diesen habe ich nun auf „1“ gesetzt, den Empfänger so angeschlossen, leider tut sich nix.
Auch ein „sudo make sniff“ bringt nut „make: ’sniff‘ is up to date.“
Wenn du es an Pin 11 (Pi Header) angeschlossen hast, ist deine Zuweisung im Code nicht richtig. Schau dir nochmal die WiringPi Pinbelegung an: Ganz außen steht die Nummer, die du genommen hast. Pin 1 (WiringPi) entspricht also Pin 12 (Raspberry Pi Header). Pin 0 (WiringPi) wäre Pin 11 (Pi Header).
http://www.tutorials-raspberrypi.de/gpio/wiringpi-installieren-pinbelegung/
Ich habe jetzt „int receiverPIN = 6;“ stehen, den sender an GPIO06 (Pi Header Pin 22) geklemmt. Jedoch keine änderung zu dem ersten Phänomen…
Neu kompiliert hast du? Du könntest noch versuchen den anderen freien Pin auf dem Empfänger Modul zu nehmen (bei mir hat das bei manchen Modulen funktioniert). Ansonsten überprüf die WiringPi Belegung mal mit
gpio readall
, um wirklich auf Nummer sicher zu gehen (besonders falls du ein Pi 2 benutzt).Guten Abend Felix,
es ist egal auf welchen Pin ich das stelle, auch wenn kein Empfänger dran ist NUR ein Sender und ich befehle SENDE (an bsp. meine Funk Steckdosen) wird mir bei „sudo ./sniff“ der Recive Befehl angezeigt den er sendet… Also irgendwo muss der wurm drinn sein…
Moment, nur um es richtig zu verstehen: Du hast kein Empfänger-Modul angeschlossen, nur das Sende-Modul und empfängst trotzdem beim Senden den Code (ohne Empfänger)?
Richtig! Nur sende modul dran! :-/
Dann darf eigentlich nichts empfangen werden. Du nutzt doch die verlinkten Module, oder etwa andere? Ich kann mir nicht richtig erklären, wie ein Sender auch empfangen soll. Die empfangenen Codes stimmen aber auf jeden Fall?
Ich würde dir raten noch einmal von Grund auf den Code und die Verkabelung neu zu machen. Es ist leider ein bisschen schwierig ohne Code und Aufbau zu sehen, hilfreiche Tipps zu geben.
Felix, wollte nur kurz sagen dass es nun klappt mit dem empfangen, habe das ganze neu aufgesetzt… Nur das mit dem Starten des Skriptes klappt nicht. Kannst du mich eventuell wenn du Zeit hast mal per Mail kontaktieren?
Immerhin 🙂 Auf der Kontakt Seite steht die Email-Adresse, falls es etwas ausführlicher wird.
LG Felix
Nachdem ihr den PIN in der Datei „RFSniffer.cpp“ geändert habt müsst ihr noch den Befehl „make“ ausführen. Ansonsten werden die Änderungen nicht übernommen.
Kurze Ergänzung hierzu:
In der sniff.cpp muss der Pin natürlich auch geändert werden ( int PIN=0 auf entsprechenden Pin ändern). Danach kompilieren und schon läuft die sniff! Hat mir ungefähr eine Stunde lang Kopfzerbrechen bereitet, da die Codes immer nur auf Pin 0 ausgelesen werden konnten 🙂
Das ist wahrscheinlich „int receiverPIN“ oder? Diesen habe ich nun auf „1“ gesetzt, den Empfänger so angeschlossen, leider tut sich nix.
Auch ein „sudo make sniff“ bringt nut „make: ’sniff‘ is up to date.“
Wenn du es an Pin 11 (Pi Header) angeschlossen hast, ist deine Zuweisung im Code nicht richtig. Schau dir nochmal die WiringPi Pinbelegung an: Ganz außen steht die Nummer, die du genommen hast. Pin 1 (WiringPi) entspricht also Pin 12 (Raspberry Pi Header). Pin 0 (WiringPi) wäre Pin 11 (Pi Header).
http://www.tutorials-raspberrypi.de/gpio/wiringpi-installieren-pinbelegung/
Ich habe jetzt „int receiverPIN = 6;“ stehen, den sender an GPIO06 (Pi Header Pin 22) geklemmt. Jedoch keine änderung zu dem ersten Phänomen…
Neu kompiliert hast du? Du könntest noch versuchen den anderen freien Pin auf dem Empfänger Modul zu nehmen (bei mir hat das bei manchen Modulen funktioniert). Ansonsten überprüf die WiringPi Belegung mal mit
gpio readall
, um wirklich auf Nummer sicher zu gehen (besonders falls du ein Pi 2 benutzt).Guten Abend Felix,
es ist egal auf welchen Pin ich das stelle, auch wenn kein Empfänger dran ist NUR ein Sender und ich befehle SENDE (an bsp. meine Funk Steckdosen) wird mir bei „sudo ./sniff“ der Recive Befehl angezeigt den er sendet… Also irgendwo muss der wurm drinn sein…
Moment, nur um es richtig zu verstehen: Du hast kein Empfänger-Modul angeschlossen, nur das Sende-Modul und empfängst trotzdem beim Senden den Code (ohne Empfänger)?
Richtig! Nur sende modul dran! :-/
Dann darf eigentlich nichts empfangen werden. Du nutzt doch die verlinkten Module, oder etwa andere? Ich kann mir nicht richtig erklären, wie ein Sender auch empfangen soll. Die empfangenen Codes stimmen aber auf jeden Fall?
Ich würde dir raten noch einmal von Grund auf den Code und die Verkabelung neu zu machen. Es ist leider ein bisschen schwierig ohne Code und Aufbau zu sehen, hilfreiche Tipps zu geben.
Felix, wollte nur kurz sagen dass es nun klappt mit dem empfangen, habe das ganze neu aufgesetzt… Nur das mit dem Starten des Skriptes klappt nicht. Kannst du mich eventuell wenn du Zeit hast mal per Mail kontaktieren?
Immerhin 🙂 Auf der Kontakt Seite steht die Email-Adresse, falls es etwas ausführlicher wird.
LG Felix
Nachdem ihr den PIN in der Datei „RFSniffer.cpp“ geändert habt müsst ihr noch den Befehl „make“ ausführen. Ansonsten werden die Änderungen nicht übernommen.
Kurze Ergänzung hierzu:
In der sniff.cpp muss der Pin natürlich auch geändert werden ( int PIN=0 auf entsprechenden Pin ändern). Danach kompilieren und schon läuft die sniff! Hat mir ungefähr eine Stunde lang Kopfzerbrechen bereitet, da die Codes immer nur auf Pin 0 ausgelesen werden konnten 🙂
Hallo,
seit wenigen Tagen habe ich einen Pi und auch Arduinos habe ich zum tüfteln besorgt. Obwohl ich kein Python kenne und C++ ist auch noch ein Fremdwort, habe ich schon so einiges mit denen zwei angestellt. Auch dass der Pi mit Arduino per 433Mhz kommuniziert. Der Pi sendet und Arduino kann es lesen aber nur per Befehlseingabe. Was ich suche ist eine Möglichkeit die Befehle per Python an den Pi senden zu können. Nach Tagelange Suche im Netz habe ich keine Lösung gefunden. Hat jemand von euch eine Idee oder ein Tipp wie ich das hin bekomme?
Wenn du ein Shell-Skript auf dem Pi hast, welches deine Befehle ausführt, kannst du das Skript einfach per Python aufrufen. Mehr dazu hier. Wenn du es mit reinen Konsolen Befehlen ausführst, pack alle in ein Skript (falls es mehrere sind) oder ruf ihn direkt per Python auf.
Auch kannst du C++ Dateien einfach in deinem Python Code einbinden.
Hallo,
seit wenigen Tagen habe ich einen Pi und auch Arduinos habe ich zum tüfteln besorgt. Obwohl ich kein Python kenne und C++ ist auch noch ein Fremdwort, habe ich schon so einiges mit denen zwei angestellt. Auch dass der Pi mit Arduino per 433Mhz kommuniziert. Der Pi sendet und Arduino kann es lesen aber nur per Befehlseingabe. Was ich suche ist eine Möglichkeit die Befehle per Python an den Pi senden zu können. Nach Tagelange Suche im Netz habe ich keine Lösung gefunden. Hat jemand von euch eine Idee oder ein Tipp wie ich das hin bekomme?
Wenn du ein Shell-Skript auf dem Pi hast, welches deine Befehle ausführt, kannst du das Skript einfach per Python aufrufen. Mehr dazu hier. Wenn du es mit reinen Konsolen Befehlen ausführst, pack alle in ein Skript (falls es mehrere sind) oder ruf ihn direkt per Python auf.
Auch kannst du C++ Dateien einfach in deinem Python Code einbinden.
Ich habe eben auch sniff installiert und gestartet. Bisher habe ich am RPI nur einen Sender und schalte mit PowerPi 3 Steckdosen. Sobald ich diese vom Webinterface aus anspreche, empfängt sniff einen Code. Scheint wohl vom WiringPI zu kommen. Schalte ich die Dosen über die Original-FB, dann erscheinen (natürlich) keine Codes.
Ich werde mir jetzt mal so einen Empfänger zulegen. Ich hoffe, die sind wenigstens genauso empfindlich wie die in den Steckdosen verbauten. Man hört (liest) ja einiges gruseliges darüber…
Bei den Funksteckdosen gibt es allerdings zwei Typen: Jene mit generischem Code und jene, bei denen du den Code selbst einstellen kannst. Die Letzteren sind ohne Probleme einsetzbar, bei den generischen Codes haben manche Empfänger Probleme, wie ich feststellen musste. Ich habe gelesen, die „super-heterodyne“ Empfänger sollen damit besser klar kommen.
Ich habe eben auch sniff installiert und gestartet. Bisher habe ich am RPI nur einen Sender und schalte mit PowerPi 3 Steckdosen. Sobald ich diese vom Webinterface aus anspreche, empfängt sniff einen Code. Scheint wohl vom WiringPI zu kommen. Schalte ich die Dosen über die Original-FB, dann erscheinen (natürlich) keine Codes.
Ich werde mir jetzt mal so einen Empfänger zulegen. Ich hoffe, die sind wenigstens genauso empfindlich wie die in den Steckdosen verbauten. Man hört (liest) ja einiges gruseliges darüber…
Bei den Funksteckdosen gibt es allerdings zwei Typen: Jene mit generischem Code und jene, bei denen du den Code selbst einstellen kannst. Die Letzteren sind ohne Probleme einsetzbar, bei den generischen Codes haben manche Empfänger Probleme, wie ich feststellen musste. Ich habe gelesen, die „super-heterodyne“ Empfänger sollen damit besser klar kommen.
Mit dem Empfänger will ich die Signale von 433Mhz Türkontakten (SUNLUXY Wireless o.ä.) empfangen.
Dann check am besten mal, ob es feste Codes oder generische sind. Ansonsten kannst du auch mal schauen, ob diese bereits von jemandem verwendet wurden. Eine gute und große Anzahl an 433Mhz Codes findest du z.B. hier: http://www.pilight.org/
Ich habe mir jetzt Funk Türkontakte gekauft, haben einen Fixierten Code, den kann Sniffer empfangen
Mit dem Empfänger will ich die Signale von 433Mhz Türkontakten (SUNLUXY Wireless o.ä.) empfangen.
Dann check am besten mal, ob es feste Codes oder generische sind. Ansonsten kannst du auch mal schauen, ob diese bereits von jemandem verwendet wurden. Eine gute und große Anzahl an 433Mhz Codes findest du z.B. hier: http://www.pilight.org/
Ich habe mir jetzt Funk Türkontakte gekauft, haben einen Fixierten Code, den kann Sniffer empfangen
>Was ich suche ist eine Möglichkeit die Befehle per Python an den Pi senden zu
>können. Hat
>jemand von euch eine Idee oder ein Tipp wie ich das hin bekomme?
Könnte man mit einem Webserver und einem oder mehreren cgi lösen.
>Was ich suche ist eine Möglichkeit die Befehle per Python an den Pi senden zu
>können. Hat
>jemand von euch eine Idee oder ein Tipp wie ich das hin bekomme?
Könnte man mit einem Webserver und einem oder mehreren cgi lösen.
Hey,
ich habe hier jetzt eine Clone Fernbedienung, das bedeutet dass da noch kein Code drauf ist. Wie kann ich ihn jetzt programmieren ? Habe einen Sender und Empfänger am Raspberry pi
LG
Bei den meisten Clones drückt man die beiden oberen Tasten gleichzeitig, bis es blinkt, um zu resetten. Dann auf Empfänger den Knopf drücken, dessen Code geclont werden soll. Gleichzeitig auf dem Clone die gewünschte Taste drücken, auf der der Code sein soll und solange halten, bis es wieder blinkt.
Hey,
ich habe hier jetzt eine Clone Fernbedienung, das bedeutet dass da noch kein Code drauf ist. Wie kann ich ihn jetzt programmieren ? Habe einen Sender und Empfänger am Raspberry pi
LG
Bei den meisten Clones drückt man die beiden oberen Tasten gleichzeitig, bis es blinkt, um zu resetten. Dann auf Empfänger den Knopf drücken, dessen Code geclont werden soll. Gleichzeitig auf dem Clone die gewünschte Taste drücken, auf der der Code sein soll und solange halten, bis es wieder blinkt.
Ich habe diesen Empfänger :
http://www.amazon.de/gp/product/B00M0XTP4W?psc=1&redirect=true&ref_=oh_aui_detailpage_o00_s02
Der hat keine Tasten…
Geht das nicht irgendwie mit den Modulen am Raspberry Pi ???
lg
Du hast doch von einem Clone geredet (z.B so einer).
Ein Empfänger, wie du ihn verlinkt hast, hat keine Tasten. Du kannst einen gesendeten Code auslesen und dann mit dem Sender senden lassen (siehe Tutorial). Du kannst auch versuchen einen beliebigen Code senden zu lassen und mit dem Clone zu kopieren, nur weiß ich nicht ob dieser sofort erkannt wird, da normalerweise viele Wiederholungen hintereinander gesendet werden.
Das Problem ist ja dass ich mit dem Empfänger nichts von der Fernbedienung empfange. Ich weiß aber dass der Empfänger funktioniert , da er Signale vom Sendemodul (siehe Link) empfängt.
Als Fernbedienung nutze ich diese:
http://www.amazon.de/gp/product/B00V4UJNBC?psc=1&redirect=true&ref_=oh_aui_detailpage_o00_s00
Noch was:
mit dem RFsniffer funktioniert es zwar nicht aber mit pilight kann ich mit pilight-debug Signale empfangen… Was jetzt halt noch fehlt ist , dass ich über pilight ein Script starten kann, was nicht so einfach ist, da man bei Pilight meines Wissens nach nicht einfach so das Script bearbeiten kann.
lg
Was du verlinkt hast ein Clone (also keine Fernbedienung), der hat standardmäßig keinen Code drauf, den er senden kann. Diese Dinger sind eigentlich nur dazu da Signale zu kopieren. Wenn du also eine richtige 433Mhz Fernbedienung hast, kannst du den Code kopieren. Ich weiß nicht in welchem Takt die Fernbedienungen ihren Code wiederholend senden, wenn du diesen aber kennst kannst du mit deinem Sender den Code im selben Takt senden und der Clone solle ihn kopieren können.
Selbst wenn ich diesen Takt kennen würde, passiert nichts wenn ich die ersten zwei Knöpfe drücke… Beim gedrückthalten von einem Knopf leuchtet die LED. Wenn ich mehrere gleichzeitig drücke bleibt die LED aus…
Mit Takt meine ich den Takt in dem der Pi das Signal senden müsste.
So wie ich dich verstehe, willst du einen von dir definierten Code vom Pi senden und auf den Clone kopieren, richtig? Dazu musst du den Code x mal in einem Takt senden und gleichzeitig am Clone die Tastenkombination zum kopieren drücken (diese ließt du am besten in der Anleitung oder im Internet nach). Bei meinem Clone sind es wie gesagt die oberen beiden Tasten, die den Clone resetten und zum kopieren bereit machen, wenn man sie gleichzeitig drückt. Das kann aber bei deinem anders sein.
In der Anleitung steht dass ich am Empfänger eine LEARN Taste drücken solle und wenn sie anfängt zu blinken die zu programmierenden Tasten am Clone zu drücken…
In sämtlichen Videos werden einfach die ersten zwei Tasten gleichzeitig gedrückt bis die LED drei mal blinkt…
Bei meinem Clone passiert einfach gar nichts wenn ich 1+2 gleichzeitig
für mehr als 20 Sekunden gedrückt halte.
lg
Das ist dann ein spezifisches Problem mit deinem Clone. Bei meinem Clone ist es wie gesagt mit den oberen beiden Tasten gleichzeitig. Für was brauchst du (in Bezug auf den Pi) überhaupt einen Clone?
Ich habe diesen Empfänger :
http://www.amazon.de/gp/product/B00M0XTP4W?psc=1&redirect=true&ref_=oh_aui_detailpage_o00_s02
Der hat keine Tasten…
Geht das nicht irgendwie mit den Modulen am Raspberry Pi ???
lg
Du hast doch von einem Clone geredet (z.B so einer).
Ein Empfänger, wie du ihn verlinkt hast, hat keine Tasten. Du kannst einen gesendeten Code auslesen und dann mit dem Sender senden lassen (siehe Tutorial). Du kannst auch versuchen einen beliebigen Code senden zu lassen und mit dem Clone zu kopieren, nur weiß ich nicht ob dieser sofort erkannt wird, da normalerweise viele Wiederholungen hintereinander gesendet werden.
Das Problem ist ja dass ich mit dem Empfänger nichts von der Fernbedienung empfange. Ich weiß aber dass der Empfänger funktioniert , da er Signale vom Sendemodul (siehe Link) empfängt.
Als Fernbedienung nutze ich diese:
http://www.amazon.de/gp/product/B00V4UJNBC?psc=1&redirect=true&ref_=oh_aui_detailpage_o00_s00
Noch was:
mit dem RFsniffer funktioniert es zwar nicht aber mit pilight kann ich mit pilight-debug Signale empfangen… Was jetzt halt noch fehlt ist , dass ich über pilight ein Script starten kann, was nicht so einfach ist, da man bei Pilight meines Wissens nach nicht einfach so das Script bearbeiten kann.
lg
Was du verlinkt hast ein Clone (also keine Fernbedienung), der hat standardmäßig keinen Code drauf, den er senden kann. Diese Dinger sind eigentlich nur dazu da Signale zu kopieren. Wenn du also eine richtige 433Mhz Fernbedienung hast, kannst du den Code kopieren. Ich weiß nicht in welchem Takt die Fernbedienungen ihren Code wiederholend senden, wenn du diesen aber kennst kannst du mit deinem Sender den Code im selben Takt senden und der Clone solle ihn kopieren können.
Selbst wenn ich diesen Takt kennen würde, passiert nichts wenn ich die ersten zwei Knöpfe drücke… Beim gedrückthalten von einem Knopf leuchtet die LED. Wenn ich mehrere gleichzeitig drücke bleibt die LED aus…
Mit Takt meine ich den Takt in dem der Pi das Signal senden müsste.
So wie ich dich verstehe, willst du einen von dir definierten Code vom Pi senden und auf den Clone kopieren, richtig? Dazu musst du den Code x mal in einem Takt senden und gleichzeitig am Clone die Tastenkombination zum kopieren drücken (diese ließt du am besten in der Anleitung oder im Internet nach). Bei meinem Clone sind es wie gesagt die oberen beiden Tasten, die den Clone resetten und zum kopieren bereit machen, wenn man sie gleichzeitig drückt. Das kann aber bei deinem anders sein.
In der Anleitung steht dass ich am Empfänger eine LEARN Taste drücken solle und wenn sie anfängt zu blinken die zu programmierenden Tasten am Clone zu drücken…
In sämtlichen Videos werden einfach die ersten zwei Tasten gleichzeitig gedrückt bis die LED drei mal blinkt…
Bei meinem Clone passiert einfach gar nichts wenn ich 1+2 gleichzeitig
für mehr als 20 Sekunden gedrückt halte.
lg
Das ist dann ein spezifisches Problem mit deinem Clone. Bei meinem Clone ist es wie gesagt mit den oberen beiden Tasten gleichzeitig. Für was brauchst du (in Bezug auf den Pi) überhaupt einen Clone?
Ich habe einen Clone gebraucht um mit ihm GPIOs ( bspw. Relais) auf dem Pi schalten zu können.
Ich habe jetzt meinen Clone zurückgeschickt…
Kannst du mir einen guten Clone empfehlen der einfach zu programmieren ist ( mit dem Pi) oder sogar einen vorprogrammierten wenn es sowas gibt.
Bei deinem Clone dauert mir der Versand zu lange…
Du kannst dich ja mal hier umsehen, den gibt es von verschiedenen Anbietern.
Clones haben eigentlich nie einen Code vorprogrammiert, das wurde ja nicht dem Sinn entsprechen. Aber du kannst doch einfach den Code einer anderen 433Mhz (Steckdose, Lampe, Garage, etc.) clonen und verwenden, solange es zu keinen „Überschneideungen“ kommt.
Ich habe einen Clone gebraucht um mit ihm GPIOs ( bspw. Relais) auf dem Pi schalten zu können.
Ich habe jetzt meinen Clone zurückgeschickt…
Kannst du mir einen guten Clone empfehlen der einfach zu programmieren ist ( mit dem Pi) oder sogar einen vorprogrammierten wenn es sowas gibt.
Bei deinem Clone dauert mir der Versand zu lange…
Du kannst dich ja mal hier umsehen, den gibt es von verschiedenen Anbietern.
Clones haben eigentlich nie einen Code vorprogrammiert, das wurde ja nicht dem Sinn entsprechen. Aber du kannst doch einfach den Code einer anderen 433Mhz (Steckdose, Lampe, Garage, etc.) clonen und verwenden, solange es zu keinen „Überschneideungen“ kommt.
Hallo, cg
Spitzentutorial, eines der wenigen die auf Anhieb funktionieren.
Und ich weiß, wovon ich rede:-)
Nicht das es wichtig wäre, der sniffer zeigt mir aber andere Werte an als die, mit denen ich die Steckdose schalte.
Die Steckdose wird „klassisch“ mit
./send 11101 2 1
geschaltet.
Der Sniffer zeigt mir sowas wie 70345 an.
Egal, viel Spass weiterhin, ich bin Dir was den Wissensstand anbelangt dicht auf den Fersen. Jetzt geht es bei mir mit Rauchmelder weiter.
Klaus
Hallo, cg
Spitzentutorial, eines der wenigen die auf Anhieb funktionieren.
Und ich weiß, wovon ich rede:-)
Nicht das es wichtig wäre, der sniffer zeigt mir aber andere Werte an als die, mit denen ich die Steckdose schalte.
Die Steckdose wird „klassisch“ mit
./send 11101 2 1
geschaltet.
Der Sniffer zeigt mir sowas wie 70345 an.
Egal, viel Spass weiterhin, ich bin Dir was den Wissensstand anbelangt dicht auf den Fersen. Jetzt geht es bei mir mit Rauchmelder weiter.
Klaus
Hallo Felix,
vielen Dank für das Script (jetzt erst gefunden), funktioniert soweit erst einmal.
Ich kann es aber so nicht gebrauchen und hätte daher noch Fragen:
Für meinen Bedarf müsste es beim Hochfahrfen des Raspi automatisch starten und im Hintergrund laufen. Könntest du mir bitte aufzeigen, wie ? Desweiteren hätte ich gern gewußt, ob man den Receiver-Pin (jetzt = 0) ändern kann? Das ist nötig, weil der Pin schon belegt ist; eine Pin Änderung ist in dem anderen Progi nur schwer bis gar nicht möglich. Soweit man sieht, ist in der config nur die „blaue“ Led mit einem Ein-und Ausschaltbefehl versehen, rot und grün nicht. Kann man diese auch einfach so „anlegen“ wie die blaue?
Vielen Dank vorab
Hallo Willi,
zu deiner Frage bzgl. Autostart kannst du dir entweder mal cron ansehen, oder aber dieses Tutorial: Programm im Autostart ausführen.
Natürlich ist es möglich, einen anderen Pin zu verwenden. Dazu musst du die
RFSniffer.cpp
Datei bearbeiten (Zeile 23). Wichtig ist hierbei, dass du die WiringPi Pin Nummern benutzt und nicht die üblichen GPIO Nummern.Das Beispiel mit den LEDs sollte nur zu Demonstrationszwecken dienen, um eigene Projekte zu realisieren. Mein Sender hatte nur 4 Tasten, weshalb ich nicht alle an/aus schalten hätte können. Wenn du die Dateien anpasst bzw. einen Sender mit mehr Codes hast, ist das aber gar kein Problem.
Wenn du weitere Fragen hast, kannst du dich ruhig melden 🙂
LG Felix
Hallo Felix,
vielen Dank für das Script (jetzt erst gefunden), funktioniert soweit erst einmal.
Ich kann es aber so nicht gebrauchen und hätte daher noch Fragen:
Für meinen Bedarf müsste es beim Hochfahrfen des Raspi automatisch starten und im Hintergrund laufen. Könntest du mir bitte aufzeigen, wie ? Desweiteren hätte ich gern gewußt, ob man den Receiver-Pin (jetzt = 0) ändern kann? Das ist nötig, weil der Pin schon belegt ist; eine Pin Änderung ist in dem anderen Progi nur schwer bis gar nicht möglich. Soweit man sieht, ist in der config nur die „blaue“ Led mit einem Ein-und Ausschaltbefehl versehen, rot und grün nicht. Kann man diese auch einfach so „anlegen“ wie die blaue?
Vielen Dank vorab
Hallo Willi,
zu deiner Frage bzgl. Autostart kannst du dir entweder mal cron ansehen, oder aber dieses Tutorial: Programm im Autostart ausführen.
Natürlich ist es möglich, einen anderen Pin zu verwenden. Dazu musst du die
RFSniffer.cpp
Datei bearbeiten (Zeile 23). Wichtig ist hierbei, dass du die WiringPi Pin Nummern benutzt und nicht die üblichen GPIO Nummern.Das Beispiel mit den LEDs sollte nur zu Demonstrationszwecken dienen, um eigene Projekte zu realisieren. Mein Sender hatte nur 4 Tasten, weshalb ich nicht alle an/aus schalten hätte können. Wenn du die Dateien anpasst bzw. einen Sender mit mehr Codes hast, ist das aber gar kein Problem.
Wenn du weitere Fragen hast, kannst du dich ruhig melden 🙂
LG Felix
Hallo,
danke für das Tutorial.
Ist es möglich mit nur einem Empfänger mehrere Sender zu betreiben?
Falls ja, kann man dann auch zwischen den einzelnen Sendern unterscheiden?
Hallo,
danke für das Tutorial.
Ist es möglich mit nur einem Empfänger mehrere Sender zu betreiben?
Falls ja, kann man dann auch zwischen den einzelnen Sendern unterscheiden?
Ich möchte gerne ein Pythonscript einbinden. Dieses sendet per Telegram eine Nachricht an mein Handy (Push). Wie würde der entsprechende Code aussehen in der RFsniffer.cpp ? Wäre prima wenn ich eine Antwort bekäme…
Schau dir mal den system Befehl an (z.B.
system("python pfad/script.py")
)http://www.cplusplus.com/reference/cstdlib/system/
Hat leider nicht funktioniert Felix. Scipt wird nicht ausgeführt
Rechte sind auch entsprechend vergeben…
Was genau hat nicht funktioniert? Fehlermeldung etc.?
Ich möchte gerne ein Pythonscript einbinden. Dieses sendet per Telegram eine Nachricht an mein Handy (Push). Wie würde der entsprechende Code aussehen in der RFsniffer.cpp ? Wäre prima wenn ich eine Antwort bekäme…
Schau dir mal den system Befehl an (z.B.
system("python pfad/script.py")
)http://www.cplusplus.com/reference/cstdlib/system/
Hat leider nicht funktioniert Felix. Scipt wird nicht ausgeführt
Rechte sind auch entsprechend vergeben…
Was genau hat nicht funktioniert? Fehlermeldung etc.?
Es funktioniert gar nichts.
Anscheinend wird das Script gar nicht erst gestartet.
Wie kann ich sehen was nicht passiert?
Du kannst z.B. logs setzen und den Output in eine Datei schreiben (siehe http://www.cyberciti.biz/faq/howto-save-ouput-of-linux-unix-command-to-file/).
Btw. wenn dein Aufruf des Skripts in der normalen Kommandozeile funktioniert, wird es auch mit dem C++ system Kommando funktionieren. Es liegt also nahe, dass an deinem Python Skript etwas nicht funktioniert (und setze am besten absolute Pfade, statt relativen).
Es funktioniert gar nichts.
Anscheinend wird das Script gar nicht erst gestartet.
Wie kann ich sehen was nicht passiert?
Du kannst z.B. logs setzen und den Output in eine Datei schreiben (siehe http://www.cyberciti.biz/faq/howto-save-ouput-of-linux-unix-command-to-file/).
Btw. wenn dein Aufruf des Skripts in der normalen Kommandozeile funktioniert, wird es auch mit dem C++ system Kommando funktionieren. Es liegt also nahe, dass an deinem Python Skript etwas nicht funktioniert (und setze am besten absolute Pfade, statt relativen).
Danke für das Tutorial, hat super funktioniert. Ich möchte nun aber eine python Datei ausführen. Dafür breuchte ich den Befehl den man in der RFSniffer.cpp Datei anstelle des digitalWrite Befehls benutzen muss.
http://www.cplusplus.com/reference/cstdlib/system/
Danke für das Tutorial, hat super funktioniert. Ich möchte nun aber eine python Datei ausführen. Dafür breuchte ich den Befehl den man in der RFSniffer.cpp Datei anstelle des digitalWrite Befehls benutzen muss.
http://www.cplusplus.com/reference/cstdlib/system/
Hi, der Artikel ist zwar vielleicht etwas älter, aber ist im ersten Satz nicht ein kleiner Fehler drin? Ich denke du meintest eher schnurlos statt funklos? ^^
Danke für den Hinweis, du hast natürlich Recht 😀
Hi, der Artikel ist zwar vielleicht etwas älter, aber ist im ersten Satz nicht ein kleiner Fehler drin? Ich denke du meintest eher schnurlos statt funklos? ^^
Danke für den Hinweis, du hast natürlich Recht 😀
Hallo zusammen,
ich habe zu dem Thema eine paar grundsätzliche Fragen. Wen ich es richtig verstanden habe, können die GPIOs nur High oder Low empfangen. Der Empfänger bekommt vom Sender ein Signal. Der Empfänger gibt diese Information an den GPIO weiter. Aber doch nur als High oder Low. Richtig? „Wer“ interpretiert Lows und Highs in Zahlen um? Wird eine Sequenz mit Anfang und Ende gekennzeichnet? Wenn ja, wie? Danke für Eure Antworten.
Durch eine festgelegte Frequenz (433MHz) sind die Signale immer gleich lang – so können die Pegel in Zahlen umgewandelt werden.
Hallo zusammen,
ich habe zu dem Thema eine paar grundsätzliche Fragen. Wen ich es richtig verstanden habe, können die GPIOs nur High oder Low empfangen. Der Empfänger bekommt vom Sender ein Signal. Der Empfänger gibt diese Information an den GPIO weiter. Aber doch nur als High oder Low. Richtig? „Wer“ interpretiert Lows und Highs in Zahlen um? Wird eine Sequenz mit Anfang und Ende gekennzeichnet? Wenn ja, wie? Danke für Eure Antworten.
Durch eine festgelegte Frequenz (433MHz) sind die Signale immer gleich lang – so können die Pegel in Zahlen umgewandelt werden.
Hi Felix,
könntest du mir vill helfen und mir veraten wie ich die RFSniffer als autostart ausführen kann?
Rufe damit auch einen Türkontakt ab, aber sobald das Raspi aus irgendeinem Grund neu Startet funktioniert es nicht mehr.
Grüßle
Habe es glaub mit einem Crontab hinbekommen:
@reboot root /home/pi/433control ./RFSniffer
Grüßle
Hi Felix,
könntest du mir vill helfen und mir veraten wie ich die RFSniffer als autostart ausführen kann?
Rufe damit auch einen Türkontakt ab, aber sobald das Raspi aus irgendeinem Grund neu Startet funktioniert es nicht mehr.
Grüßle
Habe es glaub mit einem Crontab hinbekommen:
@reboot root /home/pi/433control ./RFSniffer
Grüßle
Hi,
vielen Dank für die gute Anleitung!
Wo kann ich denn eine Drahtantenne anlöten, um die Empfangsleistung zu verbessern?
Danke
Normalerweise ist auf den Modulen ein kleines Loch mit „ANT“ gekennzeichnet.
Hallo Felix,
vielen Dank für das Tutorial, echt hilfreich!
Habe Dein Tutorial heute entdeckt und (auf dem Bildschirm) bis hierher vorgedrungen. Zu diesem Thema hatte ich in den letzten Tagen schon recherchiert (bin Anfänger, der Pi 3 ist erst seit ein paar Tagen in Gebrauch und sollte eigentlich „nur“ Lossless Audio auf meinen guten alten Yamaha-Verstärker streame), aber das Spielkind in mir hatte eine Idee:
Bei uns liegen diverse ferngesteuerte Modelle mehr oder weniger geschrottet herum, ich würde aber davon ausgehen, dass die Empfänger, Servos und Motoren in den meisten Fällen noch intakt sind. Bei den Sendern sieht das aber anders aus, da ist einiges weg (ausgelaufen Batterien etc.) oder Schrott. Daher wäre es ein ziemlicher Albtraum, ungefähr ein Dutzend Modelle plus die vorhandenen Sender mit neuen Batterien auszustatten und dann kreuz und quer zu probieren, was noch passt. Vor allem, wenn nicht mal klar ist, ob und was noch funktioniert und woran es liegt!
Langer Rede kurzer Sinn:
Gibt es eine Möglichkeit, die Frequenzen mit Steuerbefehlen zu „sniffen“ und so herauszukriegen, was noch reagiert? Spart die Sender und man kann das ganze X-Mal laufen lassen… so geht es zur Not ja auch bei TV-Fernbedienungen.
Man müßte vermutlich daneben sitzen und warten, ob etwas „zuckt“, das ginge vielleicht ja nebenbei … wie viele Frequenzen gibt es eigentlich im 433MHz? Kann ich da warten, bis ich schwarz werde (ooops, politisch inkorrekt, also: grau bin ich schon, wenn meine Haare wieder schwarz würden, wäre das ok).
Es sollte eigentlich nicht viel kosten (außer Zeit vielleicht), es handelt sich um Spielzeug zwischen 8 und 80 Euro. Bei den Preisen im Internet wäre es vermutlich relativ schnell billiger, Empfänger und Relais neu zu kaufen …
Damit wir uns nicht missverstehen, die Modelle sollen nicht wieder ans Laufen gebracht werden, ich will „nur“ die Servos und Motoren für irgendwelchen Sch… nutzen wie z.B. ein Modellauto unter die Decke zu hängen, das Licht anzuschalten oder es vielleicht mit einer kleinen Luftschraube in Bewegung zu setzen, ohne das der Besuch ahnt, wie das passiert … eben Dinge, die Ehefrauen „begeistern „,,,
Vielleicht fällt Dir ja was ein, mir widerstrebt es einfach, den ganzen Kram einfach wegzuwerfen!
viele Grüße
stephan.
Theoretisch möglich – praktisch ist das aber nicht. Prinzipiell gibt es sehr sehr viele Möglichkeiten (da oft mehrere Codes hintereinander gesendet werden). Da wirst du recht lange dran sitzen, weshalb ich eher die benötigten Teile ausbauen würde. So ein Servo ist einfacher zu steuern.
Hi Felix,
vielen Dank für das tolle Tut. Allerdings hätte ich eine kleine Anmerkung. Bei dem obigen Plan versorgst Du den Empfänger, zumindest beim Pi3, mit lediglich 3,3 Volt über Pin 1. Dabei hatte ich eine Empfangsreichweite von nicht mehr als 40cm mit korekter Antenne. Legt man aber auf den Pin des Empfängers die 5V des Pi (Pin2), dann klappt’s auch mit dem Empfang aus etlichen Metern. Hat mir geholfen. Vielleicht hilft es auch anderen.
Guten Abend zusammen,
ich habe nach der Anleitung gearbeitet. Leider kann ich unter „sudo ./sniff“ keine Codes empfangen.
Ich musste in der RFSniffer.cpp und sniff.cpp den WiringPi auf 1 ändern (GPIO1)
Trotzdem kein Erfolg. Der Empfänger funktioniert aber einwandfrei im Test mit Pilight und dem Befehl „pilight-receive“
Was kann ich noch tun?
Gruß
Timo
sudo ./RFSniffer
Hallo Felix,
danke für deine Antwort. Wenn ich „sudo ./RFSniffer“ eingebe sagt mir die Konsole: „sudo: ./RFSniffer: Kommando nicht gefunden“
Welche Dateien hat er denn nach dem kompilieren erstellt?
Hallo Felix,
im Ordner befinden sich jetzt diese Dateien:
Makefile
RCSwitch. h
RFSniffer. cpp
sniff. cpp
RCSwitch. cpp
RCSwitch. o
sniff
sniff. o
Mich wundert, dass du eine „sniff(.o)“ Datei hast, aber keine kompilierte RFSniffer Datei. Hast du das Makefile geändert? https://github.com/ninjablocks/433Utils/blob/master/RPi_utils/Makefile
pi@raspberrypi:~ $ unzip 433control.zip
Archive: 433control.zip
creating: 433control/
inflating: 433control/Makefile
inflating: 433control/RCSwitch.cpp
inflating: 433control/RCSwitch.h
inflating: 433control/RFSniffer.cpp
inflating: 433control/sniff.cpp
pi@raspberrypi:~ $ cd 433control
pi@raspberrypi:~/433control $ sudo nano RFSniffer.cpp
pi@raspberrypi:~/433control $ make sniff
g++ -c -o RCSwitch.o RCSwitch.cpp
g++ -c -o sniff.o sniff.cpp
g++ RCSwitch.o sniff.o -o sniff -lwiringPi
pi@raspberrypi:~/433control $ sudo ./RFSniffer
sudo: ./RFSniffer: Kommando nicht gefunden
pi@raspberrypi:~/433control $ sudo ./sniff
^Cpi@raspberrypi:~/433control $
Am Makefile hab ich nix geändert…
Sonst noch eine Idee?
Versuch mal anhand dieses Tutorials die Codes auszulesen.
Hallo,
sehr gutes Tutorial! Ich bin gerade dabei, einiges davon zu verwenden. Jetzt habe ich eine Frage zur RFSniffer.cpp. An welcher Stelle muss denn der Befehl für die Ausführung des Scripts eingefügt werden? Ich möchte damit eine Push-Nachricht ans Handy verschicken, die von einem 433 MHz Türkontakt getriggert wird. Jetzt ist es bei mir nur so, wenn ich den Kontakt öffne, dann erhalte ich die Codes mehrmals, in der Regel drei Mal. Sehe ich das falsch oder würde das Script dann auch drei Mal ausgeführt werden? Schon mal vielen Dank für die Hilfe!
Viele Grüße, Michael
Das Codes mehrfach empfangen werden ist normal. Ggf. musst du einen Cooldown einrichten (warte z.B. eine halbe Sekunde). Am besten Code in Zeile 42 ausführen lassen.
Danke für die schnelle Antwort! Das werde ich dann gleich mal probieren. Guter Tipp mit dem Warten…
Hallo Felix,
irre ich mich, oder wird auf DIESER Seite mit keinem Wort der RX erwähnt ?
Auch auf dem Bild mit den LEDs sehe ich NUR das TX-Platinchen….
Hilf mir mal auf die Sprünge 🙂
Hallo,
ich habe mir so ein Set von Amazon gekauft, etwas gelötet und dem Pi vorbereitet.
Funktioniert soweit, die Codes der Funksteckdosen werden angezeigt.
Nun versuche ich meine Garagentorfernbedienung auszulesen. Müßte doch auch gehen da diese ebenfalls auf 433,92 MHz sendet, genau wie die Funksteckdosen.
Leider werden mir die Codes nicht angezeigt. Ist das kompilierte Tool nicht für Alternativen ausgelegt?
Wenn Ja, kann man dieses „umschreiben“ das ich auch mein Garagentor damit steuern kann?
Du musst die Codes in den Quelldateien anpassen und neu kompilieren, wie beschrieben.
Da hast du mich wohl missverstanden oder ich habe mich falsch ausgedrückt.
Also nochmal:
Die Fernbedienung der Steckdosen werden mir angezeigt. (hier ein Beispiel)
Received 1364
Received 1364
Received 1364
Received 1364
Received 4436
Received 4436
Wenn ich die Fernbedienung für das Garagentor nehme, wird nichts angezeigt. Er scheint diese Art von Signal anscheinend nicht verarbeiten. Daher meine Frage: Kann man den Sniffer irgendwie beibringen auch andere Fernbedienungen zu belauschen?
Hallo Felix,
ich komme einfach nicht weiter, nach sudo ./sniff kommt:
gpio: Unable to open GPIO direction interface for pin 17:No such file or directory
wiringPiISR: unable to open/sys/class/gpio/gpio17/value: No such fileor directory
Habe den Raspberry Pi3, ansonsten alles so ausgeführt, wie hier beschrieben.
Beim Schritt „make sniff“ erhalte ich folgenden Fehler:
pi@TP4-Videoreference:~/433control $ make sniff
g++ -c -o RCSwitch.o RCSwitch.cpp
RCSwitch.cpp: In member function ‘char* RCSwitch::getCodeWordB(int, int, boolean)’:
RCSwitch.cpp:196:12: error: invalid conversion from ‘char’ to ‘char*’ [-fpermissive]
return “;
^~~~
RCSwitch.cpp: In member function ‘char* RCSwitch::getCodeWordA(char*, int, boolean)’:
RCSwitch.cpp:232:14: error: invalid conversion from ‘char’ to ‘char*’ [-fpermissive]
return “;
^~~~
RCSwitch.cpp:241:14: error: invalid conversion from ‘char’ to ‘char*’ [-fpermissive]
return “;
^~~~
RCSwitch.cpp: In member function ‘char* RCSwitch::getCodeWordC(char, int, int, boolean)’:
RCSwitch.cpp:269:12: error: invalid conversion from ‘char’ to ‘char*’ [-fpermissive]
return “;
^~~~
RCSwitch.cpp: In static member function ‘static bool RCSwitch::receiveProtocol1(unsigned int)’:
RCSwitch.cpp:524:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
RCSwitch.cpp: In static member function ‘static bool RCSwitch::receiveProtocol2(unsigned int)’:
RCSwitch.cpp:559:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
make: *** [: RCSwitch.o] Fehler 1