Il n'y a pas si longtemps, j'ai reçu une facture de gaz dont je me sentais mal à l'aise, et j'ai décidé d'intégrer un compteur de gaz ordinaire dans ma maison intelligente basée sur le Raspberry Pi + Home Assistant afin de prévoir le coût des dépenses et de recevoir des alertes au plus vite car la consommation dépasse les attentes.
Tout d'abord, je suis monté sur Habr, et à ma grande surprise, parmi pas un petit nombre d'articles sur la façon de lire les lectures de compteurs, et même quelques articles directement sur la prise de lectures d'un compteur de gaz, je n'ai pas trouvé ce que j'étais à la recherche de l'un d'eux.
Il y a un article assez intéressant de 2014 sur la lecture optique de n'importe quel compteur utilisant un smartphone , mais il n'y a pas du tout un mot sur Home Assistant, ni sur son composant pour la reconnaissance optique des compteurs en particulier.
Il y a un article de 2018 sur un appareil universel bon marché pour la lecture optique de n'importe quel compteur , que je serais heureux d'acheter à ce moment-là, mais il n'a toujours pas été mis en vente gratuite.
En lisant ces articles et d'autres (par exemple, l'article de 2018 sur Waterius , ou l'article de 2020 Smart Khrouchtchev à vitesse maximale ), j'ai réalisé que les compteurs ne sont pas divisés en deux générations (hors ligne et en ligne), mais en trois. En plus de la 3ème génération de compteurs, capable d'envoyer des relevés de compteurs si nécessaire, il existe également une 2ème génération qui ne sait pas transmettre les données sur le réseau lui-même, mais est équipée d'un émetteur d'impulsions (optique ou magnétique) cela permet de connecter un module au compteur qui lit ces impulsions et les transmet.
En recherchant sur Google mon compteur de gaz (il s'est avéré être BK-G4), j'ai découvert avec bonheur non seulement qu'un générateur d'impulsions magnétiques y est intégré (un aimant sur le tambour d'ordre inférieur), mais même qu'il existe déjà des exemples réussis de son intégration dans 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 , ( ) , .
( ) ( ) .