Sensorwerte mit Programm auslesen und in Datenbank speichern

  • Hallo Liebe Raspberry Community!


    Ich habe für mich selbst ein kleines Projekt gestartet. Ich habe einen Mhz19b Sensor, der Temperatur sowie CO2 Werte messen kann sowie einen Raspberry Pi 3B. Nun möchte ich gerne Temperatur sowie CO2 Werte auslesen und in meine Datenbank speichern. Ich hab schon einiges recherchiert und ich weiß nicht genau wie ich es machen soll. Ich überlege nun ob ich die Sensordaten mit Codeblocks auslese und dann irgendwie in meine Datenbank speichern kann. Ich bin für alle Vorschläge offen.


    Danke im Voraus und ich freue mich auf eure Antworten. :lol:


    Jxni

  • Mahlzeit,


    Welche Sensoren sind das? Links zu den entsprechenden Seiten wäre hilfreich.

    Welche Programmiersprache willst verwenden?

    Zu den Datenbanken gibt es z.B. Mariadb oder Influxdb.

    Wenn du dir das dann noch grafisch ausgeben lassen willst bietet sich Grafana oder Chronograf an.

  • Hallo,

    in meine Datenbank

    ist das nur so geschrieben oder hast du schon eine Datenbank die du verwenden willst? Wenn ja welche?


    Python bietet sich als Programmiersprache für den MHZ-Sensor an, da gibt es schon eine Bibliothek dafür:

    mh-z19 · PyPI


    Und um Python zu lernen, gibts ein Tutorial:

    The Python Tutorial — Python 3.9.7 documentation


    Ich habe den selben Sensor auch mal benutzt, allerdings nicht dem Raspberry sondern mit einem ESP32 und MicroPython, auch das hat gut funktioniert.


    Grüße

    Dennis

    🎵🎸Die Nordsee schlägt dir ins Gesicht, trotzdem hast du verloren, du bist nicht weit gekommen, du läufst weiter nach vorn 🎵🎸

  • Hier wäre ein Hands-on Tutorial für den MH-Z19 mit Python3: https://www.circuits.dk/testin…9-ndir-co2-sensor-module/

    Wenn man in Zukunft noch vor hat einige weitere Projekte umzusetzen, wäre es sinnvoller den verlinkten Code nicht zu nehmen und statt dessen Python von Anfang an ordentlich zu lernen.


    Grüße

    Dennis

    🎵🎸Die Nordsee schlägt dir ins Gesicht, trotzdem hast du verloren, du bist nicht weit gekommen, du läufst weiter nach vorn 🎵🎸

  • Zuerst mal DANKE für die ganzen Antworten! Und zwar habe ich eine Datenbank mit phpmyadmin erstellt (Mariadb). Ich würde gern mit einem C Programm die Werte auslesen :^)

  • 1.) Wieso C? Wenn Du für die Kommunikation mit dem Sensor ohnehin Python nutzt…?

    2.) Du liest die Sensordaten mit Python aus und nutzt dann auch Python, um Deine DB zu befüllen. Für die Kommunikation zwischen Python und mySQL gibt es verschiedene Möglichkeiten; zu diesen Möglichkeiten fast immer Tutorials. ;)

  • Wenn ich Sensor lese denke ich automatisch sofort an MQTT. D.h. der Sensor published seine Daten in Topics. Fuer influxdb gibt es telegraf welches die Daten abgreift und in die DB steckt. Es gibt bestimmt auch Moeglichkeiten das fuer eine mySQL DB zu tun. Du bist dann auf jeden Fall wesentlich flexibler in Einsatzszenarion wenn Du auch Aktoren hast die auf die Sensordaten zugreifen und reagieren sollen.


    Fuer Python gibt es Libraries um per MQTT zu kommunizieren.

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect."

    Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert =O Bei mir tut das raspiBackup automatisch ;)

  • Kannst du denn schon mit Bibliotheken umgehen?

    Hier hat jemand Code für den Sensor geschrieben.


    Wenn du die Daten in einer Datenbank schreiben willst, müsstest du erst mal wissen welche.

    sqlite bietet sich an, wenn es nur lokal ohne Server sein soll.


    Wenn man Daten sammelt und visualisieren will, ist influxdb und mqtt eine Kombination.

    Keine Sorge, das gibt es natürlich auch für C.

  • Danke! Ich werde jetzt einmal versuchen die CO2 Werte mittels Python in die Datenbank zu schreiben. Danach möchte ich noch die Werte aus der Datenbank mit einem PHP Skript aufrufen :^)

  • Ich habe mich in den letzten Monaten mit PHP beschäftigt und würde es deswegen gerne mit PHP versuchen :)

  • Hat vielleicht irgendjemand ein Beispiel wo Werte mit Python in eine Datenbank geschrieben werden?

  • Hat vielleicht irgendjemand ein Beispiel wo Werte mit Python in eine Datenbank geschrieben werden?

    Wir wollen dich nicht dazu drängen unbedingt Python zu lernen.


    Das Modul mh-z19 kann den Sensor auslesen. Hier kann man sehen, wie der Sensor angeschlossen werden soll.



    Das Modul mh-z19 musst du einfach mal testen.

    Nicht alles, das als Modul/Package angeboten wird, funktioniert.



    Jedenfalls wäre das nur der Code, um die Sensorwerte zum MQTT-Broker zu senden.

    Am Ende muss ein Client dafür sorgen, dass die einzelnen Topics (können ja viele Sensoren von vielen unterschiedlichen Geräten sein),

    in die Datenbank geschrieben werden. Mit InfluxDB habe ich bis jetzt keine Erfahrung.

  • Danke erstmal für deine Hilfe. Ich verwende dieses Modul bereits und kann auch die Werte am Terminal anzeigen lassen nur das Speichern in die Datenbank hab ich noch nicht geschafft. Kann man die Werte nicht gleich direkt in die Datenbank speichern ohne dem MQTT-Broker?

  • Kann man die Werte nicht gleich direkt in die Datenbank speichern ohne dem MQTT-Broker?

    Ja, nach den ersten Versuchen weigere ich mich aber strikt, mich mit InfluxDB weiterhin zu beschäftigen.

    Also so einen Scheiß habe ich schon lange nicht mehr gesehen....

    Es gibt hier im Forum aber auch gute Anleitungen über InfluxDB. Einfach mal die Suche benutzen.


    Hier mal ein Beispiel mit sqlite3:


    Letztendlich ist der Code so einfach, dass dies auch mit C nicht viel mehr Code sein würde. Zumindest mit sqlite3.

    sqlite3 ist aber eine Datenbank in einer Datei und die Bibliothek greift auf die Datenbank zu.

    Es gibt keinen Server für sqlite3. Falls du die Daten via Netzwerk von der Datenbank beziehen willst, wirst du auf MariaDB, PostgreSQL oder InfluxDB wechseln müssen. InfluxDB würde sich dafür am besten eignen, da die Datenbank genau für solche Fälle geschaffen worden ist.


    Mir ist aber ehrlich gesagt, der Aufwand für InfluxDB einfach zu groß.

    Wenn man nur minimal Daten speichern will, muss dennoch die Struktur beachten und sich irgendeinen Mist ausdenken wie z.B. eine ID.


    So, habe mich heute genug aufgeregt.



    PS: Wahrscheinlich hat dir Hofei schon den passenden Link gesendet.