Recebendo dados do sensor de dióxido de carbono Dadget em sistemas domésticos inteligentes

Sensor de dióxido de carbono O Dadget KIT MT8057S se estabeleceu há muito tempo como um dispositivo razoavelmente confiável e barato. Uma desvantagem, na minha opinião, é que dados oficiais podem ser obtidos apenas com um programa proprietário para Windows e nada mais.





No entanto, obter dados no Linux é relativamente fácil. Eu tive que usar uma muleta pequena, mas no final, as leituras de CO2 e temperatura podem ser obtidas no console e enviadas posteriormente.



Este artigo abordou o envio de dados ao IoBroker e ao Home Assistant.



Você precisará da biblioteca libhidapi e de um pequeno programa co2mon localizado no github.



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


Baixe e compile o 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


Os caminhos podem precisar ser ajustados para se adequarem ao seu sistema.



Este programa funciona em dois modos - recebendo constantemente dados no console e no modo daemon. Quando iniciado sem parâmetros, o programa exibe constantemente as leituras atuais no console até que ele seja fechado à força. Uma solução um pouco estranha, talvez eu não tenha descoberto, mas estamos trabalhando com o que temos.



Nos dois modos, o programa pode salvar dados em arquivos de texto, basta adicionar a opção -D e especificar o caminho para o diretório.



Eu não queria pendurar outro demônio no servidor já fraco da casa inteligente, e os dados sobre dióxido de carbono não mudam rapidamente. Portanto, joguei um script simples que inicia o programa, aguarda cinco segundos e o mata.



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


Adicione um script ao cron, eu corro uma vez por minuto, isso é mais do que suficiente.



Feito! Agora, em dois arquivos de texto criados pelo programa, existem leituras climáticas atuais.



Um ponto importante é que, para receber dados do usb, o usuário deve ter os direitos apropriados ou o cron deve ser executado como root, respectivamente, os arquivos de texto criados também serão root, isso deve ser levado em consideração.



Agora a segunda parte - enviamos os dados recebidos para os sistemas domésticos inteligentes. Vamos começar com o IoBroker. Para começar, já que no momento em que me propus essa tarefa, eu a usei.



Tudo é simples lá - há um adaptador de informações do sistema que pode ler arquivos do sistema de arquivos, entre outras coisas. Não que essas temperaturas sejam necessárias, mas por que não.







Nós salvamos, e pronto:







E então mudei para o Assistente Doméstico. Nele, uso mosquito e decidi enviar dados através dele, com o objetivo de separar os computadores no futuro ou adicionar sensores.



Não considero a instalação e a configuração do broker, isso está além do escopo do artigo.



O cliente mosquito deve ser instalado no computador ao qual o sensor está conectado, se não estiver instalado:



apt-get install mosquitto-clients


Adicione dois sensores à configuração do Assistente Doméstico e 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


Adicione quatro linhas ao script que recebe os dados:



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


Agora, nossa coroa publica as leituras do sensor no tópico co2 uma vez por minuto e o Assistente Doméstico, por sua vez, as lê:







Agora temos dados do sensor no sistema doméstico inteligente e podemos agendar a automação. Meu capô liga, eu ainda não tenho ventilação controlada, mas se você ligar o capô, o ar será gradualmente renovado.



All Articles