はんだごてなしのHomeAssistantのガスメーター

少し前に、不快に感じたガス代を受け取りました。費用を予測してすぐにアラートを受け取るために、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 , ( ) , .





( ) ( ) .








All Articles