Não faz muito tempo, recebi uma conta de gás da qual me senti desconfortável e decidi integrar um medidor de gás normal em minha casa inteligente com base no Raspberry Pi + Home Assistant para prever o custo das despesas e receber alertas assim que à medida que o consumo supera as expectativas.
Em primeiro lugar, subi no Habr e, para minha surpresa, entre não poucos artigos sobre como ler leituras de medidores e até alguns artigos diretamente sobre como fazer leituras de medidores de gás, não encontrei o que era procurando em qualquer um deles.
Há um artigo bastante interessante de 2014 sobre leitura ótica de qualquer medidor usando um smartphone , mas não há uma palavra sobre Home Assistant, nem sobre seu componente para reconhecimento ótico de medidores em particular.
Há um artigo de 2018 sobre um dispositivo universal de baixo custo para leitura óptica de qualquer medidor , que eu ficaria feliz em comprar naquela época, mas ainda não chegou à venda gratuita.
Lendo esses e outros artigos (por exemplo, o artigo de 2018 sobre Waterius ou o artigo de 2020 Smart Khrushchev em velocidade máxima ), percebi que os contadores não estão divididos em duas gerações (offline e online), mas em três. Além da 3ª geração de medidores, que pode enviar leituras de medidores sempre que necessário, existe também uma 2ª geração que não sabe transmitir dados pela própria rede, mas está equipada com um transmissor de pulso (óptico ou magnético) que permite conectar um módulo ao medidor que lê esses pulsos e passa adiante.
Pesquisando meu medidor de gás no Google (acabou sendo BK-G4), felizmente descobri não só que um gerador de pulso magnético está embutido nele (um ímã no tambor de baixa ordem), mas mesmo que já existem exemplos bem-sucedidos de seu integração no Home Assistant .
() IN-Z61 (1640 , ), esp8266 (788 ), , , , , , , .
, , Home Assistant Xiaomi ( MCCGQ01LM), - 600 .
, , . , - AliExpress 20 .
Home Assistant configuration.yaml
counter:
gas_counter:
step: 10
automations.yaml
- id: '1606010744418'
alias: Gas count
description: ''
trigger:
- entity_id: binary_sensor.openclose_gas
platform: state
from: 'on'
to: 'off'
action:
- data:
entity_id:
- counter.gas_counter
service: counter.increment
configuration.yaml utility_meter: !include utility_meter.yaml
, utility_meter.yaml , (, , )
gas_monthly:
source: sensor.gas_counter_sensor
cycle: monthly
tariffs:
- single
gas_daily:
source: sensor.gas_counter_sensor
cycle: daily
tariffs:
- single
gas_hourly:
source: sensor.gas_counter_sensor
cycle: hourly
tariffs:
- single
,
- platform: template
sensors:
gas_counter_sensor:
friendly_name: " "
unit_of_measurement: '3'
value_template: "{{ (states('counter.gas_counter') | float) / 1000 }}"
icon_template: mdi:counter
- platform: template
sensors:
gas_last_month:
friendly_name: " ( )"
unit_of_measurement: '₽'
value_template: "{{ ((state_attr('sensor.gas_monthly_single', 'last_period') | float) / 1000 * 6056.4) | round(2) }}"
icon_template: mdi:cash-100
- platform: template
sensors:
gas_this_month:
friendly_name: " ( )"
unit_of_measurement: '₽'
value_template: "{{ ((states('sensor.gas_monthly_single') | float) / 1000 * 6056.4) | round(2) }}"
icon_template: mdi:cash-100
- platform: template
sensors:
gas_today:
friendly_name: " ()"
unit_of_measurement: '₽'
value_template: "{{ ((states('sensor.gas_daily_single') | float) / 1000 * 6056.4) | round(2) }}"
icon_template: mdi:cash-100
- platform: template
sensors:
gas_yesterday:
friendly_name: " ()"
unit_of_measurement: '₽'
value_template: "{{ ((state_attr('sensor.gas_daily_single', 'last_period') | float) / 1000 * 6056.4) | round(2) }}"
icon_template: mdi:cash-100
- platform: template
sensors:
gas_this_hour:
friendly_name: " ( )"
unit_of_measurement: '₽'
value_template: "{{ ((states('sensor.gas_hourly_single') | float) / 1000 * 6056.4) | round(2) }}"
icon_template: mdi:cash-100
- platform: template
sensors:
gas_last_hour:
friendly_name: " ( )"
unit_of_measurement: '₽'
value_template: "{{ ((state_attr('sensor.gas_hourly_single', 'last_period') | float) / 1000 * 6056.4) | round(2) }}"
icon_template: mdi:cash-100
- platform: template
sensors:
gas_hour_based_monthly_estimate:
friendly_name: " (->)"
unit_of_measurement: '₽'
value_template: "{{ ((state_attr('sensor.gas_hourly_single', 'last_period') | float) / 1000 * 6056.4 * 24 * 30) | int }}"
icon_template: mdi:chart-line-variant
- platform: template
sensors:
gas_day_based_monthly_estimate:
friendly_name: " (->)"
unit_of_measurement: '₽'
value_template: "{{ ((state_attr('sensor.gas_daily_single', 'last_period') | float) / 1000 * 6056.4 * 30) | int }}"
icon_template: mdi:chart-line-variant
SD Home Assistant , Home Assistant , , configuration.yaml
recorder:
exclude:
entities:
- binary_sensor.openclose_gas
Home Assistant
, Home Assistant , ( ) , .
( ) ( ) .