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.