Empfangen von Daten vom Dadget-Kohlendioxidsensor in Smart-Home-Systeme

Der Kohlendioxidsensor Dadget KIT MT8057S hat sich seit langem als ziemlich zuverlässiges und kostengünstiges Gerät etabliert. Ein Nachteil ist meiner Meinung nach, dass offiziell Daten daraus nur mit einem proprietären Programm für Windows und sonst nichts abgerufen werden können.





Das Abrufen von Daten unter Linux ist jedoch relativ einfach. Ich musste eine kleine Krücke benutzen, aber am Ende können die CO2- und Temperaturwerte in der Konsole abgerufen und weiter gesendet werden.



Dieser Artikel behandelt das Senden von Daten an IoBroker und Home Assistant.



Sie benötigen eine libhidapi-Bibliothek und ein kleines co2mon-Programm auf github.



apt-get install git cmake g++ pkg-config libhidapi-dev


Laden Sie das co2mon-Programm herunter und kompilieren Sie es



mkdir co2
cd co2
git clone https://github.com/dmage/co2mon.git
cd co2mon
mkdir build
cd build
cmake ..
make
cd co2mond
mv co2mond ../../../co2mond


Die Pfade müssen möglicherweise an Ihr System angepasst werden.



Dieses Programm arbeitet in zwei Modi - dem ständigen Empfang von Daten in der Konsole und im Daemon-Modus. Beim Start ohne Parameter zeigt das Programm der Konsole ständig die aktuellen Messwerte an, bis sie gewaltsam geschlossen wird. Eine etwas seltsame Lösung, vielleicht habe ich es nicht herausgefunden, aber wir arbeiten mit dem, was wir haben.



In beiden Modi kann das Programm Daten in Textdateien speichern. Fügen Sie einfach den Schalter -D hinzu und geben Sie den Pfad zum Verzeichnis an.



Ich wollte keinen weiteren Dämon an den bereits schwachen Server des Smart Homes hängen, und die Daten zu Kohlendioxid ändern sich nicht schnell. Deshalb habe ich ein einfaches Skript eingefügt, das das Programm startet, fünf Sekunden wartet und es beendet.



#!/bin/bash
cd /home/server/co2
./co2mond -D /home/server/co2 > log.txt &
sleep 5
pkill co2mond
rm log.txt


Fügen Sie cron ein Skript hinzu, ich führe es einmal pro Minute aus, das ist mehr als genug.



Getan! Jetzt gibt es in zwei Textdateien, die das Programm erstellt, aktuelle Klimamesswerte.



Ein wichtiger Punkt ist, dass der Benutzer zum Empfangen von Daten von USB über die entsprechenden Rechte verfügen muss oder Cron als Root ausgeführt werden muss. Die erstellten Textdateien müssen ebenfalls Root sein. Dies muss berücksichtigt werden.



Nun zum zweiten Teil - wir senden die empfangenen Daten an die Smart-Home-Systeme. Beginnen wir mit IoBroker. Zunächst einmal, denn zu der Zeit, als ich mir diese Aufgabe stellte, habe ich sie benutzt.



Dort ist alles einfach - es gibt einen Systeminfo-Adapter, der unter anderem Dateien aus dem Dateisystem lesen kann. Nicht dass diese Temperaturen benötigt werden, aber warum nicht.







Wir sparen und voila:







Und dann wechselte ich zu Home Assistant. Darin verwende ich Mücken, und ich habe beschlossen, Daten durch sie zu senden, um in Zukunft Computer zu trennen oder Sensoren hinzuzufügen.



Ich betrachte die Installation und Konfiguration des Brokers nicht, dies würde den Rahmen des Artikels sprengen.



Der Moskito-Client muss auf dem Computer installiert sein, an den der Sensor angeschlossen ist, wenn er nicht installiert ist:



apt-get install mosquitto-clients


Fügen Sie der Home Assistant-Konfiguration zwei Sensoren hinzu und starten Sie neu:



- platform: mqtt
  state_topic: "co2/co2"
  name: "co2.co2"
  unit_of_measurement: ppm
 
- platform: mqtt
  state_topic: "co2/temp"
  name: "co2.temp"
  unit_of_measurement: °C


Fügen Sie dem Skript, das die Daten empfängt, vier Zeilen hinzu:



read co2 /home/server/co2/CntR
read temp /home/server/co2/Tamb
mosquitto_pub -h localhost -t "co2/co2" -m $co2 -u "" -P ""
mosquitto_pub -h localhost -t "co2/temp" -m $temp -u "" -P ""


Fertig, alles in Ordnung.) Jetzt veröffentlicht unser Cron die Sensorwerte einmal pro Minute zum Thema CO2 und der Home Assistant liest sie wiederum:







Jetzt haben wir Sensordaten im Smart-Home-System und können die Automatisierung planen. Meine Haube schaltet sich ein, ich habe noch keine kontrollierte Belüftung, aber wenn Sie die Haube einschalten, wird die Luft allmählich erneuert.



All Articles