Gaszähler im Home Assistant ohne Lötkolben

Vor nicht allzu langer Zeit erhielt ich eine Gasrechnung, von der ich mich unwohl fühlte, und ich entschied mich, einen normalen Gaszähler basierend auf dem Raspberry Pi + Home Assistant in mein Smart Home zu integrieren, um die Kosten der Ausgaben vorherzusagen und Benachrichtigungen zu erhalten da der Verbrauch die Erwartungen übertrifft.





Zunächst stieg ich auf Habr, und zu meiner Überraschung fand ich unter nicht wenigen Artikeln zum Ablesen von Zählerständen und sogar einigen Artikeln direkt zum Ablesen von Ablesungen von einem Gaszähler nicht, was ich war in einem von ihnen suchen.





Es gibt einen ziemlich interessanten Artikel aus dem Jahr 2014 über das optische Ablesen von einem Messgerät mit einem Smartphone , aber es gibt überhaupt kein Wort über Home Assistant oder dessen Komponente für die optische Erkennung von Messgeräten .





Es gibt einen Artikel aus dem Jahr 2018 über ein universelles, kostengünstiges Gerät zum optischen Ablesen von jedem Messgerät , das ich zu diesem Zeitpunkt gerne kaufen würde, das aber noch nicht in den freien Verkauf gelangt ist.





Als ich diese und andere Artikel las (zum Beispiel den Artikel über Waterius von 2018 oder den Artikel Smart Chruschtschow von 2020 mit maximaler Geschwindigkeit ), stellte ich fest, dass die Zähler nicht in zwei Generationen (offline und online) unterteilt sind, sondern in drei. Neben der 3. Generation von Zählern, die bei Bedarf Zählerstände senden kann, gibt es auch eine 2. Generation, die nicht weiß, wie Daten über das Netzwerk selbst übertragen werden sollen, sondern mit einem Impulssender (optisch oder magnetisch) ausgestattet ist. Auf diese Weise können Sie ein Modul an das Messgerät anschließen, das diese Impulse liest und weiterleitet.





Als ich meinen Gaszähler googelte (es stellte sich heraus, dass es sich um BK-G4 handelte), stellte ich glücklich fest, dass nicht nur ein magnetischer Impulsgenerator eingebaut ist (ein Magnet auf der Trommel niedriger Ordnung), sondern auch, dass es bereits erfolgreiche Beispiele dafür gibt Integration in 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