少し前に、不快に感じたガス代を受け取りました。費用を予測してすぐにアラートを受け取るために、Raspberry Pi + HomeAssistantをベースにした通常のガスメーターをスマートホームに統合することにしました。消費量が予想を超えているため。
まず、Habrに登りましたが、驚いたことに、メーターの読み方に関する記事が少なくなく、ガスメーターから直接読み上げた記事もいくつかありましたが、自分が何であるかがわかりませんでした。それらのいずれかを探しています。
スマートフォンを使用した任意のメーターからの光学的読み取りに関する2014年のかなり興味深い記事がありますが、Home Assistantについても、特にメーターの光学的認識のためのコンポーネントについてもまったく言及されていません。
2018年から、あらゆるメーターからの光学読み取り用のユニバーサルで安価なデバイスに関する記事があります。その時点で購入したいと思いますが、まだ無料で販売されていません。
これらの記事や他の記事(たとえば、Wateriusに関する2018年の記事、または最大速度での2020年の記事Smart Khrushchev)を読んで、カウンターが2世代(オフラインとオンライン)ではなく、3世代に分かれていることに気付きました。必要に応じて検針を送信できる第3世代のメーターに加えて、ネットワーク自体を介してデータを送信する方法がわからないが、パルス送信機(光または磁気)を備えた第2世代もあります。これにより、モジュールをメーターに接続して、これらのパルスを読み取り、渡すことができます。
ガスメーター(BK-G4)をググってみると、磁気パルス発生器(低次ドラムの磁石)が内蔵されているだけでなく、すでに成功例があることを嬉しく思いました。 HomeAssistantへの統合。
ただし、専用(リード)IN-Z61インパルスセンサー(1640出荷時、メーターケースのくぼみに特別に設置)、esp8266ボード(788出荷時)、はんだごて、スズ、ロジンを注文する前に、これがすべて到着するまで待ってから、このコンストラクターでロジンを使用して、問題をはるかに簡単かつ安価に解決できるかどうか、仮説をテストすることにしました。
運が私に微笑んで、1週間の待機と数千の費用の代わりに、同じ日に、ホームアシスタントのカウンターを通常のXiaomiドアオープナーセンサー(モデルMCCGQ01LM)と統合しました。 1個あたり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 , ( ) , .
( ) ( ) .