Estava querendo completar minha aba de energia então resolvi criar este medidor de consumo de gás.
O projeto foi feito usando a um ESP32 (Arduino Platform IO) e um medidor de gás Daeflex G1.0
Obs.: Gosto da liberdade de programar via Arduino por isso não usei o ESPHome ou similar.
Todos os arquivos estão aqui.
Equemático (o capacitor não foi necessário):
No arquivo funções, entre com os dados do WiFi e também do MQTT.
#define WIFISSID "WiFi Rede SSID" // Rede WIFI SSID
#define WIDIPASS "WiFi Senha" // Seha WIFI
const char* mqttserver = "192.168.X.XXX"; // IP
const char* mqttuser = "Usuario MQTT"; // Usuário
const char* mqttpass = "Senha MQTT"; // Senha
As variáveis que são disponibilizadas são as seguintes:
Para o consumo ser usado na aba energia deve ser criado um medidor de utilidade.
Devido a característica “Redefinindo periodicamente” - total_increasing se a variável de entrada cair para zero o HA entende que o dispositivo reiniciou.
A variável “Tempo de atualização do sinal” define o intervalo de tempo que o ESP enviará a força do sinal e o IP ara o HA.
A variável “Tempo cálculo vazão” define o intervalo de tempo que o ESP calcula a vazão de gás e envia o valor atualizado para o HA.
A variável “Status” está atrelada ao Last Will and Testament, o MQTT a definirá como offline se não receber dados do medidor de gás em um período de 90 segundos e com isso todas as variáveis do medidor ficarão indisponíveis com exceção da status em si.
Ao criar o medidor de utilidades o HA as vezes buga (quase fiquei careca com isso) e não puxa o device_class nem o unit_of_measurement do sensor fonte e o medidor acaba não sendo aceito pela aba energia, para evitar adicione esses dados via yaml:
homeassistant:
customize:
sensor.utilidade_consumo_de_gas:
device_class: gas
state_class: total_increasing
unit_of_measurement: m³
Sistema montado (arquivos para impressão e edição Fusion360 estão no link para download):
Aba de energia:
Estou há um mês verificando o funcionamento e até agora está ok ele mede o consum de gás perfeitamente… Notei que no momento do envio do pulso a relojoaria do medidor Daeflex G1.0 da uma trava e depois destrava, passando rápido pelo ímã… Acredito que isso ajudou a evitar erros na medição pois criei um medidor de consumo de água e não consegui eliminar os ruídos do chaveamento da reed switch usando interrupção externa, o medidor de gás foi de primeira direto da bancada para operação sem problemas. Continuo monitorando e se medir errado já possuo a solução.
Para o futuro:
- Usar a biblioteca WiFi manager para que o ESP crie um AP e as configurações do WiFi (SSID e senha) e MQTT (IP, senha e porta) sejam feitas sem a necessidade de fazer ulpload no código.
- usar a medição de consumo de gás para definir o momento de troca do botijão de gás (gás acabando).
- A aba HA não aceita o consumo de gás em litros, vi algumas pessoas reclamando sobre iso, provavelmente os desenvolvedores devem mudar essa característica, quando for mudado alterar a variável de consumo de gás de m3 para L.