No hace mucho, recibí una factura de gas de la que me sentía incómodo, y decidí integrar un medidor de gas regular en mi casa inteligente basado en la Raspberry Pi + Home Assistant para predecir el costo de los gastos y recibir alertas lo antes posible. ya que el consumo supera las expectativas.
En primer lugar, subí a Habr, y para mi sorpresa, entre un número no pequeño de artículos sobre cómo leer las lecturas de los contadores, e incluso un par de artículos directamente sobre la toma de lecturas de un contador de gas, no encontré lo que estaba buscando. buscando en cualquiera de ellos.
Hay un artículo bastante interesante de 2014 sobre la lectura óptica de cualquier medidor utilizando un teléfono inteligente , pero no hay ni una palabra sobre Home Assistant, ni sobre su componente para el reconocimiento óptico de medidores en particular.
Hay un artículo de 2018 sobre un dispositivo universal y económico para lectura óptica desde cualquier medidor , que me encantaría comprar en ese momento, pero aún no ha entrado en la venta gratuita.
Al leer estos y otros artículos (por ejemplo, el artículo de 2018 sobre Waterius , o el artículo de 2020 Smart Khrushchev a máxima velocidad ), me di cuenta de que los contadores no están divididos en dos generaciones (offline y online), sino en tres. Además de la 3ra generación de medidores, que es capaz de enviar lecturas de medidores donde sea necesario, también hay una 2da generación que no sabe cómo transmitir datos a través de la red, pero está equipada con un transmisor de pulsos (óptico o magnético) que le permite conectar un módulo al medidor que lee estos pulsos y los transmite.
Buscando en Google mi medidor de gas (resultó ser BK-G4), felizmente descubrí no solo que un generador de pulso magnético está integrado en él (un imán en el tambor de bajo orden), sino incluso que ya hay ejemplos exitosos de su integración en 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 , ( ) , .
( ) ( ) .