Kleines Update: Bosch BME280, Grafana, InfluxDB, Python

Ich hab die Seite hier lange so online gelassen, für Leute, die das Projekt nachbauen wollen. Inzwischen sind ein paar Jahre ins Land gegangen, meine Lüftung arbeitet noch, aber es gibt inzwischen elegantere Möglichkeiten und „Corona“ hat meinen Urlaub in unser zu Hause verlegt, so komme ich dazu, mir das alles nochmal anzugucken.

Ich werde daher ein paar grundlegende Veränderungen vornehmen und habe davon einen Teil schon umgesetzt. Ich werde das dieses Mal nicht so ausführlich dokumentieren können, aber es wird eine Zusammenfassung mit den Skripten geben.

Hier als Teaser die Eckdaten:

 

  • CACTI war als „Dashboard“ zum Anzeigen der Daten eine etwas zweckentfremdete Lösung. Es gibt inzwischen einfach „schickere“ Dashboards, die genau für unseren Zweck optimiert sind.
    Vor allem „Grafana“ wird gern für Dashboards verwendet und ist schon deutlich edler und schicker als CACTI. D.h. wir werden CACTI mit GRAFANA ersetzen.
  • Grafana benötigt eine Datenbank, genau wie CACTI. Für Zeitwerte („time series“) gibt es inzwischen optimierte Datenbanken, stark auch durch Cloud-Computing (Azure, AMS) gepusht.
    Wir werden daher statt mySQL (was wir für CACTI genutzt hatten) eine InfluxDB einsetzen, um unsere Daten abzulegen und mit Grafana darzustellen.
    Also: Wechsel von mySQL auf InfluxDB.
  • Das Projekt habe ich damals als Batch-Programm durchgezogen und musste immer wieder Umwege daher in Kauf nehmen. Alleine um die Temperaturwerte aus dem String zu extrahieren, aber wir benötigten auch einen externen Taschenrechner usw. Schon damals wollte ich „umkehren“, aber als dann alles lief, war es zu aufwändig.
    Durch die grundlegenden Änderungen nutzen wir die Chance und wechseln auf Python.
    Also: Batch wird durch Python ersetzt.
  • Nun bleibt noch etwas Hardware: Der DHT22. Mit dem Sensor habe ich nur bedingt gute Erfahrungen gemacht. Die Genauigkeit reicht mir aus, aber die Kommunikation brachte je nach verwendeter Library unterschiedliche Ergebnisse: Mit der Adafruit gab es beim weiter entfernen Außensensor oft fehlerhafte Messwerte, die klar ein Timingproblem zeigen, da die LOLDHT Variante korrekte Werte lieferte.
    Mit geschirmten Kabeln und einem Kondensator am Sensor kann man die Störempfindlichkeit reduzieren, aber das Problem ist das Timing schon in der Lib.
    Aber auch die LOLDHT ist nicht perfekt. Ich hatte zwar keine Probleme, ein Bekannter aber schon.
    Da wir eine Python Library nun aber benötigen, die Adafruit bietet, muss eine erhöhte Störfestigkeit her.
    Das Problem ist meiner Ansicht nach der Bus: Das One-Wire-Interface der DHT Sensoren besitzt keine Clock-Leitung. D.h. die Synchronisation muss über die Flanken der Datenleitung erfolgen. Das kann offenbar Probleme machen.

    Wir nutzen also auch diese Chance und wechseln den Sensor. Bosch bietet mit dem BMP280 einen Luftdruck- und Temperatursensor, in der BME280 Variante ist auch nocht die Luftfeuchtigkeit enthalten, die wir benötigen. Es gibt 3,3V und 5V Varianten. Bei der Raspberry sind 3,3V angesagt.
    Also werden wir von dem DHT22 auf den BME280 wechseln, noch ein Wechsel also.
    Der BME280 bietet I2C und SPI, auch hier bietet Adafruit eine Library.
    Wir müssen von 3 auf 4 Adern wechseln, denn der I2C Bus benötigt eine Clock-Leitung. Für SPI müssten wir sogar auf 6 Adern gehen, aber I2C sollte reichen.

  • Zuletzt: Ich habe inzwischen auf meiner PI einen Unifi Controller laufen, PI-hole als DNS und nun noch Grafana?!
    Die Gunst der Stunde werden wir also auch hier nutzen und wechseln von einer Raspberry 3B auf eine Raspberry 4 mit 2GB RAM. Da hab ich zwar etwas Sorgen bzgl. Temperatur, aber das sehen wir dann. Wir werden die Raspberry 3B als Entwicklungsumgebung nutzen, die 4 wird dann die Produktivumgebung. Das ist zwar auch etwas kritisch, unterschiedliche Hardware, aber wird schon passen 😉

Also – das wird doch ein grundlegender Umbau, der aber das Konzept doch auf moderner und etwas ausgereiftere Füße stellen wird.

Ich werde die Ergebnisse hier posten, allerdings nicht ganz so genau dokumentieren wie den ursprünglichen Aufbau. Dafür bette ich dann die Links ein, wo die Informationen zu finden sind.
Stay tuned und bleibt gesund!

2 Gedanken zu “Kleines Update: Bosch BME280, Grafana, InfluxDB, Python

  1. Hallo Malte,
    wenn Du auf Python wechseln möchtest, hattest Du darüber nachgedacht dann vielleicht direkt auf openHAB zu wechseln?
    Viele Grüße und bleib gesund
    Stefan

    Like

    1. Hi Stefan,
      danke für den Tipp! Ich kenne das gar nicht, hab eben mal kurz die Seite angesteuert. Ich hab mal ein ähnliches Tool für die Raspberry getestet, für die Automatisierung von Abläufen. Das war aber nicht so mächtig.
      Klingt ganz interessant, aber bei dem kleinen Teil, der ich benötige, werde ich vermutlich versuchen etwas hardwarenäher zu bleiben. Zumal mich vor allem Grafana mit InfluxDB reizt. Aber ich muss mir das erstmal genauer angucken.
      Ich hatte auch überlegt Node-RED einzusetzen, das wollte ich mir auch gerne mal genauer angucken. Aber ich habe ja schon einen großen Teil an Source-Code auf Batch-Seite fertig. Daher wäre eine grundlegende Umstellung schon nochmal aufwändiger…

      Grüße zurück und ebenfalls: Bleib gesund!
      Malte

      Like

Hinterlasse einen Kommentar