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