Recepción de datos del sensor de dióxido de carbono Dadget en sistemas domésticos inteligentes

Sensor de dióxido de carbono Dadget KIT MT8057S se ha establecido durante mucho tiempo como un dispositivo bastante confiable y económico. Una desventaja, en mi opinión, es que los datos oficiales de ella solo se pueden obtener con un programa patentado para Windows, y nada más.





Sin embargo, obtener datos en Linux es relativamente fácil. Tuve que usar una muleta pequeña, pero al final, las lecturas de co2 y temperatura se pueden obtener en la consola y enviar más.



Este artículo ha cubierto el envío de datos a IoBroker y Home Assistant.



Necesitará la biblioteca libhidapi y un pequeño programa co2mon ubicado en github.



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


Descargue y compile el programa 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


Es posible que sea necesario ajustar las rutas para adaptarlas a su sistema.



Este programa funciona en dos modos: recibiendo constantemente datos en la consola y en modo demonio. Cuando se inicia sin parámetros, el programa muestra constantemente las lecturas actuales en la consola hasta que se cierra por la fuerza. Una solución un poco extraña, tal vez no lo descubrí, pero estamos trabajando con lo que tenemos.



En ambos modos, el programa puede guardar datos en archivos de texto, simplemente agregue el modificador -D y especifique la ruta al directorio.



No quería colgar a otro demonio en el servidor ya débil de la casa inteligente, y los datos sobre el dióxido de carbono no cambian rápidamente. Por lo tanto, agregué un script simple que inicia el programa, espera cinco segundos y lo mata.



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


Agregue un script a cron, lo ejecuto una vez por minuto, eso es más que suficiente.



¡Hecho! Ahora en dos archivos de texto que crea el programa, hay lecturas climáticas actuales.



Un punto importante: para recibir datos de usb, el usuario debe tener los derechos apropiados, o cron debe ejecutarse como root, respectivamente, los archivos de texto creados también serán root, esto debe tenerse en cuenta.



Ahora la segunda parte: enviamos los datos recibidos a los sistemas domésticos inteligentes. Comencemos con IoBroker. Para empezar, con él, ya que en el momento en que me propuse esta tarea, la usé.



Allí todo es simple: hay un adaptador de sistema que puede leer archivos del sistema de archivos, entre otras cosas. No es que estas temperaturas sean necesarias, pero ¿por qué no?







Salvamos, y listo:







Y luego cambié a Home Assistant. En él uso mosquitto, y decidí enviar datos a través de él, con el objetivo de separar las computadoras en el futuro o agregar sensores.



No considero la instalación y configuración del corredor, esto está más allá del alcance del artículo.



El cliente mosquitto debe estar instalado en la computadora a la que está conectado el sensor, si no está instalado:



apt-get install mosquitto-clients


Agregue dos sensores a la configuración de Home Assistant y reinicie:



- 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


Agregue cuatro líneas al script que recibe los datos:



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


Listo, está bien) Ahora nuestro cron publica las lecturas del sensor para el tema de CO2 una vez por minuto, y que Home Assistant, a su vez, las lee:







Ahora tenemos datos del sensor en el sistema doméstico inteligente y podemos programar la automatización. Mi campana se enciende, todavía no tengo ventilación controlada, pero si enciende la campana, el aire se renueva gradualmente.



All Articles