433mhz Übertragung von Arduino Nano zum Raspberry Pi

  • Hallo Leute,

    Ich stehe momentan scheinbar völlig auf dem Schlauch und es wäre nett wenn mir jemand dort herunterhelfen würde ☺️

    Ich möchte ein Funksignal von einem Arduino Nano mit einem Raspberry empfangen. Soweit auch mit Bibliotheken wie zB 433utils oder ähnlichen gar kein Problem. Ich möchte allerdings die empfangenen Werte nun nicht in der commandozeile angezeigt bekommen, sondern in einer Variable im Python Skript auffangen... Ich habe schon angefangen (erfolglos) die Bibliothek umzuschreiben vor lauter Verzweiflung und Scham :saint:8o Es muss doch eine einfache Möglichkeit geben um genau das abzubilden. Ich bin bereit für herbe Kritik und freue mich auf eure Hilfe ;)

    Liebe Grüße aus Hameln

    Florian

  • 433mhz Übertragung von Arduino Nano zum Raspberry Pi? Schau mal ob du hier fündig wirst!

  • Okay, leider kann ich nicht ganz nachvollziehen was mir die Links sagen sollen. Ist sicherlich eine neue Bibliothek, allerdings läuft diese Bei mir beim ausführen auf Fehler sobald ein Signal erkannt wird. Ich weiß, ich bin derjenige der Hife braucht und auch sicherlich für jede Hilfe dankbar ist, allerdings wären eventuell ein paar erläuternde Worte wünschenswert. Vielen Dank schonmal bis hierher!

  • Hallo nochmal,

    entschuldigt bitte das ich die Konventionen des Forums scheinbar nicht eingehalten habe. Ich versuche es selbstverständlich gerne nochmal etwas detailierter und hangel mit dabei an dem erwähnten "Wie Frage ich nach Hilfe" Thread entlang.

    Zu 1.: Ich habe die Suchfunktion des Forums auf ALLES gestellt und habe die ersten 30 Seiten gelesen, leider ohne eine Lösung für mien Problem zu finden. Außerdem habe ich bereits mehrere Stunden Google bemüht. Leider helfen mir auch englischsprachige Posts wie dieser:

    https://www.raspberrypi.org/forums/viewtopic.php?t=176855

    oder auch dieser nicht weiter

    https://www.raspiprojekt.de/forum/software…-steuerung.html

    Sie beschreiben zwar mein Problem, leider kann ich daraus keine für mich schlüssige und umsetzbare Lösung ableiten.

    Zu 2.: Ich hoffe das hier der richtige Ort für meine Frage ist, aber ich denke das es thematisch zum Thema Hausautomation passt.

    Zu 3.: Der Name des Threads beschreibt mein Problem hoffentlich ausreichend. Keine unnötigen HILFE-Rufe ;)

    Zu 4: Mein Projekt sieht folgendermaßen aus: Ich habe ein Schlüsselbrett entworfen das 6 Klinkensteckerbuchsen als Schlüsselaufhängungen verwendet. Jeder Schlüsselbund hat einen passenden Klinkenstecker am Ring. Die Klinkenstecker sind jeweils mit unterschiedlichen Widerständen gebrückt, so dass ich per Analog-Pin am Arduino den Eingangswert der entsprechenden Buchse messen kann. Daraus ergibt sich eine Berechtigungslogik mit der ich verschiedene Funksteckdosen und Empfängermodule ansteuere, je nachdem welcher Schlüssel steckt (z.B. Kinder haben zwar Schlüssel, gefährliche Geräte wie Wasserkocher und Toaster sollen dennoch ausbleiben). Soweit funktioniert das ganze einwandfrei und leistet im HAushalt für mich und meine Frau wunderbare Dienste, da wir beide Vollzeit berufstätig sind und somit ein sichereres Gefühl haben wenn die Kinder nach der Schule eine Stunde auf sich allein gestellt sind. Der Stromsparaspekt ist dabei auch nicht zu verachten, da alle Standby-Geräte vom Netz gehen sobald kein Schlüssel mehr steckt (ergo niemand zuhause ist). Nun aber zu meinem Problem:

    Da der Raspberry natürlich erheblich mehr Logik, Datenbankzugriff usw. bietet, möchte ich nun die Empfänger und Steckdosen nun nicht mehr direkt ansteuern, sondern den Raspberry sozusagen als Gehirn und Zwischenstation in der Mitte verwenden. Ich habe nun angefangen das 433MHz Signal mit der Bibliothek von https://github.com/ninjablocks/433Utils verwendet. Das klappt mit Senden und Empfangen auch ganz fantastisch. Allerdings erfolgt die Ausgabe mit ganz viel für mich unnötigen Informationen nur über die Kommandozeile des Raspi. Alles was ich demnach möchte, ist das empfangene Signal in eine Variable schreiben und von dort aus weiterverwenden. Ach die netterweise oben gepostete Bibliothek bringt mich leider zu dem gleichen Problem. Ich habe (sicher völlig dilletantisch) versucht den Quellcode dahingehend zu ändern ich eine Ausgabe in einer Variable bekomme, natürlich, welch Wunder, ohne Erfolg. Dafür habe ich scheinbar einfach zu wenig Ahnung wie Klassen und Methoden die aus denen aufgerufen werden funktionieren und reagieren.

    Zur Hardware: Ich verwende einen Raspberry Pi 3 Model B+ betrieben mit einem 5V/3A Netzteil. Am Sender ist ein Arduino Nano China-Klon. Als Empfänger verwende ich diesen

    https://www.amazon.de/WINGONEER-Superheterodyne-Wireless-Receiver-Arduino/dp/B06XHJMC82/ref=sr_1_18?ie=UTF8&qid=1537468858&sr=8-18&keywords=433+mhz+sender+empf%C3%A4nger&tag=psblog-21 [Anzeige]

    Betriebssystem:

    PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"

    NAME="Raspbian GNU/Linux"

    Linux Kernel:

    4.14.62-v7+

    Ausgabe von lsusb:

    Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter

    Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub

    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

    Ich hoffe ich habe nun hinreichend Informationen dagelassen und bin mir sicher das ihr mir im Handumdrehen bei meinem Problem helfen könnt. :)

    Sollten noch Infos fehlen reiche ich diese selbstverständlich sofort nach.

    Falls irgendjemand Interesse an dem Projekt an sich haben sollte, gebe ich natürlich auch gerne Auskunft zu allem was ihr wissen möchtet. ;)

    Ich freue mich wahnsinnig über jeden hilfreichen Tipp und wünsche Euch allen einen schönen Donnerstag-Abend 8o

    Liebe Grüße

    Florian

  • Hallo Florian,

    Hut ab vor Deiner Mühe und Zeit, Deine Anfrage zu beschreiben. Kleine Anmerkung: Die Art und Weise ist keinesfalls in Stein gemeißelt und Hofei s Anleitung ist nach der drölfzigsten Frage zum Anschluss einer Relaisplatine an den RPi und ebensovieler "geht nicht" bzw. "es kommt eine Fehlermeldung" entstanden. Meist reicht eine mehr oder weniger umfangreiche Fehlerbeschreibung bzw. die Beschreibung des Ziels eines Vorhabens aus, um eine sinnvolle Antwort zu bekommen.

    Du hast ja bereits im Bereich Hausautomation geschrieben. Wenn Du alles selbst machen möchtest, dann findet sich auch mit einer Dir angenehmen Programmiersprache eine Lösung. Nicht allein wegen des WAF würde ich über ein Programm wie pimatic oder ähnlich nachdenken. Neben der Tatsache, dass es schon länger entwickelt wird, ist es sehr einfach, neu hinzukommende Geräte einzubinden oder aber die Logik für die Geräte zu programmieren. Sieh es Dir mal an.

    Grüße, STF

  • Wow, ich wusste noch gar nicht wie ein Beitrag aussieht der sich strikt an den "wie frage ich nach Hilfe" Leitfaden hält. Tolles Projekt.

    Ich hätte da eine Quick and Dirty Idee. Nachdem die Kommandozeile was ausspuckt, leite doch die Ausgabe in eine Datei um (müsste sehr einfach sein). Die könnte auch im RAM liegen. Ein Script könnte checken ob die Datei existiert und den Inhalt analysieren.

    Wäre das eine Möglichkeit?

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

  • Hallo ihr Lieben,

    vielen Dank für Eure freundliche Hilfe!

    STF Natürlich ist es ein super Ansatz mit einem vorgefertigten System zu arbeiten. Ich habe euch wirklich den größten Respekt vor dem was die Community da teilweise an fertigen Lösungen erstellt hat. Allerdings ist es einfach mein Ziel das ich mir gesetzt habe das Ganze irgendwie auf eigene Faust hinzubekommen. Es macht mir einfach irren Spaß (ja, auch wenn ich auf Hilfe an der ein oder anderen Stele angewiesen bin:saint:8o). Dennoch vielen Dank für den Ratschlag.

    VeryPrivat So eine ähnlich Lösung schwebte mir auch bereits vor. Ich muss dahingehend nun mal ein bisschen anfangen zu fummeln wie ich das ganze für meine Zwecke abgebidet bekomme, zB wann sich Datei wieder leeren soll da sich der Status ständig ändern kann. Wahrscheinlich wird es dann auch darauf hinauslaufen. Vielen Dank für den Gedankenanstoß ;) Aber ergänzend dazu: Ist es denn nicht einfacher möglich die empfangenen Werte mittels Weiterleitung an eine einfache String-Variable statt an eine Text-Datei umzuleiten?

    Damit ihr vielleicht meine Denkweise besser versteht: Ich kann es immer kaum verstehen das die Umsetzung des Ganzen auf dem Arduino mit einer Codezeile erfolgt ist, nur in Python auf dem Raspi so ein Problem darstellt :/ Als Beispiel ist es auf dem Arduino ja problemlosmöglich mit der RCSwitch Bibliothek mit einer Zeile wie

    Code
    Data = mySwitch.getReceivedValue()

    den gewünschten Effekt zu erzielen. Vielleicht denke ich mir das jetzt auch aus irgendwelchen Gründen viel zu einfach, aber es muss doch eine vergleichbare Möglichkeit mit Python auf dem Raspi geben. :/ Gerade zumal ich der Meinung bin, das solche Funktionalitäten ja sicherlich des öfteren in der ein oder anderen Eigenbau-Hausautomation vorkommt... Vielleicht denke ich da wie gesagt aber auch nicht richtig ;)

    Ich freue mich jedenfalls irre über alle weiteren Ratschläge zum Thema und wünsche Euch allen einen schönen Start ins Wochenende!

  • Kannst Du uns bitte mal den Befehl und die Ausgabe (in Code Tags) posten auf die wir vielleicht aufbauen können. Bis jetzt wissen wir noch nicht mit was Du bereits Daten empfängst und was Du eigentlich empfängst...
    Mit dem | Operator könnte die direkte Ausgabe des Programms an Dein Programm funktionieren.

    Der Operator wird hier erklärt: https://wiki.ubuntuusers.de/Shell/Umleitungen/

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

  • Also, die größten "Erfolge" bisher hatte ich mit 433Utils. Ich Empfange damit Daten per

    Code
    sudo 433Utils/RPi_utils/RFSniffer

    als Shell Befehl. Damit erfolgt dan auch folgende Ausgabe

    Code
    Received 4436
    Received 4436
    Received 5204
    Received 5204

    Soweit erstmal perfekt! Ich kann das ganze ja nun auch zB mit os.system ins mein Python Skript einbauen:

    Code
    import os
    os.system("sudo 433Utils/RPi_utils/RFSniffer")

    Das funktioniert sicherlich auch ganz fantastisch, allerdings landet die Ausgabe ja auch wieder in der Commandozeile und ich kann sie von dort aus nicht weiterverarbeiten =O

    Ich bin durch einige Beiträge nun auch belehrt worden, das "subprocess" wohl mittlerweile die bessere Alternative zu "os" ist, allerdings stehe ich damit dann noch immer vor dem gleichen Problem. Also nochmal zusammenfassen: Ich möchte doch einfach nur die Ausgabe von dem o.g. Aufruf in eine Variable speichern. Also nach dem Motto (Ich weiß das es nicht so funktioniert!):

    Code
    Daten = os.system("sudo 433Utils/RPi_utils/RFSniffer")

    Am besten nur den rohen Code der empfangen wird, aber auch so wäre es nicht dramatisch, das könnte ich mir ja mit Substring oder etwas ähnlichem herausfiltern. :saint:8o

    Ich hoffe du/ihr versteht nun mein Problem vielleicht noch etwas besser. Mit der weiterleitung der Variable hatte ich jetzt leider noch keine Zeit mich intensensiv zu beschäftigen, werde das aber im Laufe des Tages tun und mein Feedback dazu geben!

    Erstmal wieder bis hierher herzlichen Dank und ich freue mich über jede Antwort!:danke_ATDE:

    Einmal editiert, zuletzt von Flo1984 (22. September 2018 um 12:00)

  • Clerico hatte doch ein ähnliches Problem und hat hier in Beitrag #30 seine Lösung gepostet.

    Hier hat er auch die RCSwitch.h eingebunden - also die relevante Datei des RC-Sniffer...

    Vielleicht hilft Dir der Code weiter?

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

    Einmal editiert, zuletzt von VeryPrivat (14. Februar 2019 um 20:54) aus folgendem Grund: Codeformatierung von Python (falsch) in C geändert...

  • Moin Leute, erstmal wieder vielen Dank für Eure Hilfe! Ich muss gestehen das ich noch nie ein C-Skript auf dem Raspberry laufen lassen habe :wallbash: Momentan scheitert es scheinbar am #include der RCSwitch Bibliothek, ich muss mich da mal reinlesen denke ich 8o:saint:

  • Es ist echt zum Mäuse melken. Hab echt ein gutes Gefühl das ich es jetzt hinbekomme mit der anleitung... Putty angeschmissen... Keine Resonanz... Monitor angeschlossen... Keine Netzwerkverbindung mehr... Gelber Blitz... Kann keine Maus mehr am Raspi betreiben... Keins meiner Netzteile sorgt für Abhilfe...

  • Was hast Du alles angeschlossen? Kann dein Funkempfänger eventuell einen Kurzschluss verursachen? Ich habe auch bedenken, dass Du ihn falsch angeschlossen hast: Vermutlich hast Du ihn mit 5V versorgt (was ja OK ist) und den Ausgang direkt in den Pi verdrahtet? Der verträgt nur 3,3V und ist ziemlich pingelig... Ich hoffe Du findest den Fehler - aber auf jeden Fall solltest Du das mit den max. 3,3V berücksichtigen - sonst kann das ein schnelles Ende mit dem Pi nehmen.

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

  • Soweit ich Weiss steht der gelbe Blitz ja für unterversorgung... Ja, ich habe den Empfänger ohne Widerstand angeschlossen... Gefühlt denke ich aber das das nicht der Fehler ist. Der Raspi fährt auch ganz normal in die Linux Oberfläche, es funktioniert nur keine peripherie mehr. Ich weiss aus der Vergangenheit auch das der Raspi recht empfindlich im Umgang mit Netzteilen/Ladegeräten ist. In der unterversorgung kommt es ja meines Wissens auch als erstes dazu das die USB Buchsen abschalten... Irgendwie steht mein Projekt unter keinem guten Stern ? Ich überlege ob ich nochmal ein 3A Netzteil bestelle. Ich hatte das Problem bei meinem smart mirror bereits. Der lief ein halbes Jahr ohne Probleme, auf einmal trat der gelbe Blitz auf.

  • Versuche doch alle Fehlerquellen auszuschließen - sprich schließe alles ab, was Du nicht unbedingt brauchst - auch die Versorgung des Funkempfängers.

    Die 5V an der GPIO Leiste und die des USB können sich gegenseitig beeinflussen...

    Wenn "keins Deiner Netzteile für Abhilfe" sorgt, ist die Wahrscheinlichkeit schon etwas geringer, dass es am Netzteil liegt (was ich natürlich trotzdem nicht ausschließen kann)...

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

    • Offizieller Beitrag

    Hi,

    Ich hatte das Problem bei meinem smart mirror bereits.

    Netzteile altern. ;)

    BTW: Auch hier aktuell scheint das Mysterium seine gemeine Fratze zu zeigen... https://www.elektronik-kompendium.de/sites/raspberry-pi/1912111.htm

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!