433 MHZ Empfänger abfragen und Ergebnis in MySQL DB schreiben

  • Hallo Community,

    habe vor mir über einen Arduino über ein 433 Mhz Sender Daten schicken zu lassen, und diese dann mit dem Raspi zu empfangen und in eine MySQL DB zu schreiben. Rein theoretisch funktioniert das ganze schon. Der Arduino sendet mir eine Zahl, welche ich mit dem raspi auch bereits mit dem befehl ./RFSniffer abhören kann. Allerdings habe ich keinen blassen schimmer wie ich es in Phyton (Ich denke mal Phyton ist am geeignetsten dafür???) in ein Programm zu verpacken und eben jenes auf den raspi auszuführen, und den empfänger abzufragen. Bin leider auf der Raspi seite ziemlicher Neuling. Habe schon einiges gesucht, aber irgendwie verrenne ich mich bei meinen suchanfragen immer ins nichts. Vil. kann mir ja jemand kurz eine Hilfestellung geben wie ich an so etwas korrekt ran gehe. Ich denke das Schreiben in die DB sollte dann das kleinere Problem sein.

    :danke_ATDE:

  • 433 MHZ Empfänger abfragen und Ergebnis in MySQL DB schreiben? Schau mal ob du hier fündig wirst!

  • Hallo,

    kannst du den Python, also hast du schon mal darin programmiert? Wenn nein müsstest du ja zumindest erst mal die Grundlagen lernen, damit du eine leise Ahnung hast, was du überhaupt tust.

    Ansonsten klingt das aber nicht so, als würdest zu unbedingt Python brauchen. Wenn du dir mit dem rfsniffer die empfangene Zahl ausgeben lassen kannst, dann kannst du dir auch ein kleines Shellskript schreiben, was die Zahl noch in die Datenbank schreibt.

    Vorgehen:
    * Ausgabe von rfsniffer an eine Variable binden
    * Verbindung zur DB herstellen
    * mittels eines passende Queries die Variable in die DB schreiben

    Was natürlich voraussetzt, dass du eine leise Ahnung von Shellskripten hast und bei SQL die grundlegenden Grundlagen verstehst, also wie man eine Verbindung zur DB aufbaut und wie ein `INSERT` Befehl aussieht.

    Ansonsten hilft immer: zeigt deinen Code (auch, wenn der nicht funktioniert), dann kann man besser helfen.

    Gruß, noisefloor

  • Nein in Python habe ich noch keinerlei erfahrungen, allerdings in c# und c++. Deshalb denke ich sollte ich so ein kleineres Progrämmchen auch mit wenig vorkenntnissen in python hinbekommen ^^ Die Datenbankabfrage an sich stellt für mich auch kein Problem da.

    Mit Shellscripten habe ich leider absolut 0,0 bisher am hut. Bin aber natürlich immer bereit neues zu lernen :D

    Mein Gedanke der mir gestern noch gekommen ist, ob es nicht möglich ist die Quelldatei des RFSniffers (ist in c++) so zu editieren das er nicht nur die Empfangene Zahl ausgibt, sondern auch zugleich die zahl in die DB speichert. Sollte ja eigentlich auch möglich sein ? Wäre zumindest für mich augenscheinlich der leichteste weg ?

  • So habe auf deine Empfehlung hin mich mal ein bisschen in Shell scripting eingearbeitet.

    MySQL anfragen werden tadelos ausgeführt

    Bash
    #!/bin/bash
    
    
    QUERY="INSERT INTO Zisterne (fill_level) VALUES ('5')"
    
    
    echo $QUERY | mysql -u root --password=raspberry Haushalt -h localhost

    und auch das starten der RFSniffer anwendung funktioniert problemlos über ein script. doch die Kernfrage bleibt, wie bekomme ich den OUTPUT der RFSniffer anwendung in eine Variable in meinem shell script?

    Einmal editiert, zuletzt von Testdummy (20. Oktober 2016 um 20:46)

  • Danke erstmal für die Unterstützung, aber ich glaube wir reden noch aneinander vorbei =(

    ich möchte EIN script haben, welches dann alles erledigt. zuerst soll quasie am RFSniffer gelauscht werden, der rückgabewert quasie direkt noch im script gespeichert werden, und dann direkt im script in die datenbank geschoben werden :s

    Ziel ist es dieses Eine Script einfach in den "Autostart" zu schieben und bei jedem boot permanent ausführen zu lassen. und immer wenn er daten geschickt bekommt diese in die Datenbank schreibt.

    funktioniert zwar leider noch nicht aber in etwa so:


    Automatisch zusammengefügt:

    Nach viel rumprobieren habe ich es letztendlich mit folgender Methode fertig gebracht.
    Wichtig hierbei ist zu beachten das ich die RFSniffer.cpp verändert habe, das er nicht einfach nur das empfangene ausspuckt, sondern auch sich direkt darauf beendet!(return 0)

    script 1

    Bash
    #!/bin/sh
    
    
    while [ true ]
    do
    sudo ./RFSniffer | sudo ./tester.sh
    
    
    done

    script 2

    die scripte senden mir alles was sie empfangen direkt in die DB!

    Einmal editiert, zuletzt von Testdummy (20. Oktober 2016 um 21:14)

  • Hallo,

    axo, das mit "alles in einem Skript" hatte ich in der Tat nicht auf dem Schirm. Wenn rfsniffer fortlaufend Wert ausgibt, dann kann man das so lösen. Ich war ursprünglich davon ausgegangen, dass rfsniffer genau einen Wert liefert und sich dann beendet.

    Aber egal, funktioniert ja offensichtlich zu deiner Zufriedenheit :) Refactoring kann man immer noch machen ;)

    Gruß, noisefloor

Jetzt mitmachen!

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