Compteur de gaz dans Home Assistant sans fer à souder

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 , ( ) , .





( ) ( ) .








All Articles