CO2-Messsystem mit Raspberry Pi und MQTT und NodeRed

Wir wollen nun mal ein CO2-Messsystem mit dem MH-Z19B aufbauen und die CO2-Konzentrationen mit einem Raspberry Pi einlesen und per MQTT an eine NodeRed-Installation senden. Parallel dazu werden die Daten noch in einer CSV-Datei geschrieben für Langzeitauswertungen. Wenn der Grenzwert von 1000 ppm erreicht ist, wird noch eine Pushover Nachricht an ein Handy gesendet, so das rechtzeitig gelüftet werden kann.

Hier die Architektur-Übersicht:

Installation

1. raspi-config aufrufen und die Serielle-Schnittstelle aktivieren

2. Sensor mit den vier Drähten an den Pi anschließen wie hier beschrieben

https://github.com/IT-Berater/mh-z19.git

3. Git installieren wenn noch nicht vorhanden mit: sudo apt-get install git

4. Leeres Verzichnis erstellen und darin das setup.sh aufrufen

mkdir co2
cd co2
git clone https://github.com/IT-Berater/mh-z19.git
cd mh-z19
./setup.sh

5. Testen ob die co2 Werte geliefert werden mit Python (Python 2.7.16)

sudo python -m mh_z19

Wenn diese Rückgabe kommt ist es geschafft:

{‚co2‘: 668}

6. MQTT installieren und aktivieren

sudo apt-get install -y mosquitto mosquitto-clients
sudo systemctl enable mosquitto.service

7. Das Bash Script in das Verzeichnis kopieren und ausführen:

sudo chmod +x send-co2-per-mqtt.sh

Das Bash Script send-co2-per-mqtt.sh erstellt ein JSON Objekt und sendet die über Python mh_z19 ermittelten Werte per MQTT unter dem Pfad co2 zum Dashboard.

Das Script liegt auch in /example/send-co2-per-mqtt.sh Verzeichnis.

Das Script dann später im Hintergrund gestartet werden mit ./send-co2-to-mqtt.sh &

8. Den NodeRed-Flow kopieren und den Mqtt-Server eingeben. Hier das CO2 Daschboard mit dem Trend und die aktuellen Werte die jede Minute aktualisiert werden:

Der nötige NodeRed-Flow zum Download:

9. Sensor auf 400 ppm kalibrieren. Dazu den Sensor an frischer Luft eine halbe Stunde laufen lassen und mit dem Programm mh_z19
einmal mit dem Parameter 5000 (je nach Sensor) und mit zero_point_calibration aufrufen.

sudo python -m mh_z19 –detection_range_5000
sudo python -m mh_z19 –zero_point_calibration

aufrufen, wie hier beschrieben.