Réception des données du capteur de dioxyde de carbone Dadget dans les systèmes de maison intelligente

Capteur de dioxyde de carbone Dadget KIT MT8057S s'est depuis longtemps imposé comme un appareil assez fiable et peu coûteux. Un inconvénient, à mon avis, est que les données officielles ne peuvent être obtenues qu'avec un programme propriétaire pour Windows, et rien d'autre.





Cependant, obtenir des données sur Linux est relativement facile. J'ai dû utiliser une petite béquille, mais à la fin, les lectures de CO2 et de température peuvent être obtenues dans la console et envoyées plus loin.



Cet article a couvert l'envoi de données à IoBroker et Home Assistant.



Vous aurez besoin de la bibliothèque libhidapi et d'un petit programme co2mon situé sur github.



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


Téléchargez et compilez le programme co2mon



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


Les chemins doivent peut-être être ajustés en fonction de votre système.



Ce programme fonctionne selon deux modes - recevant constamment des données dans la console et en mode démon. Lorsqu'il est lancé sans paramètres, le programme affiche constamment les lectures actuelles sur la console jusqu'à ce qu'il soit fermé de force. Une solution un peu étrange, peut-être que je n'ai pas compris, mais nous travaillons avec ce que nous avons.



Dans les deux modes, le programme peut enregistrer des données dans des fichiers texte, ajoutez simplement le commutateur -D et spécifiez le chemin d'accès au répertoire.



Je ne voulais pas accrocher un autre démon sur le serveur déjà faible de la maison intelligente, et les données sur le dioxyde de carbone ne changent pas rapidement. Par conséquent, j'ai lancé un script simple qui lance le programme, attend cinq secondes et le tue.



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


Ajoutez un script à cron, je l'exécute une fois par minute, c'est plus que suffisant.



Terminé! Maintenant, dans deux fichiers texte créés par le programme, il y a des lectures climatiques actuelles.



Un point important - pour recevoir des données d'usb, l'utilisateur doit avoir les droits appropriés, ou cron doit être exécuté en tant que root, respectivement, les fichiers texte créés seront également root, cela doit être pris en compte.



Maintenant, la deuxième partie - nous envoyons les données reçues aux systèmes de maison intelligente. Commençons par IoBroker. Pour commencer, avec elle, puisqu'au moment où je me suis fixé cette tâche, je l'ai utilisée.



Tout y est simple - il y a un adaptateur systeminfo qui peut lire les fichiers du système de fichiers, entre autres. Non pas que ces températures soient nécessaires, mais pourquoi pas.







Nous économisons, et voilà:







Et puis je suis passé à Home Assistant. J'utilise mosquitto et j'ai décidé d'envoyer des données à travers lui, dans le but de séparer les ordinateurs à l'avenir ou d'ajouter des capteurs.



Je ne considère pas l'installation et la configuration du courtier, cela sort du cadre de l'article.



Le client mosquitto doit être installé sur l'ordinateur auquel le capteur est connecté, s'il n'est pas installé:



apt-get install mosquitto-clients


Ajoutez deux capteurs à la configuration de Home Assistant et redémarrez:



- 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


Ajoutez quatre lignes au script qui reçoit les données:



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 ""


C'est fait, tout va bien) Maintenant, notre couronne publie les lectures des capteurs sur le sujet co2 une fois par minute, et quel Home Assistant les lit à son tour:







nous avons maintenant des données de capteur dans le système de la maison intelligente et vous pouvez planifier l'automatisation. Ma hotte s'allume, je n'ai pas encore de ventilation contrôlée, mais si vous allumez la hotte, l'air se renouvelle progressivement.



All Articles