mcpField
H
ha-energy

ha-energy

github.com/nodnarbnitramその他16104 回インストール27 週間前に更新
リポジトリ

ha-energy について

Home Assistant のエネルギー監視を設定するユーザー向けのガイドです。センサー、Recorder の統計、Utility Meter の周期設定を扱い、系統電力、太陽光、バッテリー、機器の監視例とトラブルシューティングを提供します。

主な機能

  1. 01エネルギーセンサーの YAML 設定
  2. 02Utility Meter による請求周期の追跡
  3. 03Recorder の統計設定
  4. 04太陽光・系統電力・バッテリーの監視
  5. 05電力からエネルギーへの積算
  6. 06設定例とトラブルシューティング

活用シーン

  1. 01Home Assistant のエネルギーダッシュボード用センサー設定
  2. 02日次や請求周期ごとの消費量追跡
  3. 03系統からの受電と逆潮流を別々に監視
  4. 04太陽光、バッテリー、スマートプラグの電力量監視

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/nodnarbnitram/claude-code-extensions --skill ha-energy

インストール後、Claude Code で/ha-energyを入力して読み込まれたか確認します。

同梱ファイルREADME.md

詳細

Home Assistant Energy Skill

ダッシュボード、太陽光発電、電力網、デバイスのトラッキングを使って、Home Assistant のエネルギーモニタリングを設定します。

始める前に

このスキルを使うと、よくある 8 つのエラーを防ぎ、トークンを約 45%節約できます。

指標スキルなしスキルあり
セットアップ時間45 分以上15 分
よくあるエラー80
トークン使用量約 10000約 5500
このスキルで防げる既知の問題
  1. 誤った state_class の値(total、total_increasing、measurement のいずれかである必要があります)
  2. エネルギーセンサーに device_class: energy がない
  3. utility_meter エンティティの state_class が誤っている(total_increasing である必要があります)
  4. state_class を指定せずに unit_of_measurement: kWh を使用している(統計が機能しなくなります)
  5. configuration.yaml で統計の収集を有効にし忘れる
  6. 自家消費を追跡するためのバッテリー設定なしで、太陽光発電センサーを設定する
  7. センサーの組み合わせ(消費と送電)が一致しない状態で電力網をモニタリングする
  8. 請求期間と一致しないサイクル設定で utility_meter を設定する

クイックスタート

ステップ 1:エネルギーセンサーを設定する
# configuration.yaml
template:
  - sensor:
      - name: "Total Energy Consumed"
        unique_id: total_energy_consumed
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
        state: "{{ (states('sensor.energy_meter') | float(0)) }}"

      - name: "Solar Production"
        unique_id: solar_production
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
        state: "{{ (states('sensor.solar_meter') | float(0)) }}"

重要な理由: 適切な state_class を設定すると、Home Assistant が統計を自動的に作成し、エネルギーダッシュボードと連携できるようになります。設定しないと、センサーがエネルギーダッシュボードに表示されません。

ステップ 2:請求サイクル用に Utility Meter を設定する
# configuration.yaml
utility_meter:
  daily_energy:
    source: sensor.total_energy_consumed
    cycle: daily
    offset: [hours: 0]

  monthly_energy:
    source: sensor.total_energy_consumed
    cycle: monthly
    offset: [days: 0]

  daily_solar:
    source: sensor.solar_production
    cycle: daily
    offset: [hours: 0]

重要な理由: Utility Meter は指定した間隔で自動的にリセットされ、請求分析用の消費期間を追跡します。

ステップ 3:統計 Recorder を有効にする
# configuration.yaml
recorder:
  db_url: !secret database_url  # Optional but recommended
  auto_purge: true
  auto_purge_days: 90           # Adjust retention as needed
  # Include sensors with state_class for statistics
  include:
    entities:
      - sensor.total_energy_consumed
      - sensor.solar_production
      - sensor.grid_consumption
      - sensor.grid_return

重要な理由: 統計を利用するには、Recorder を適切に設定する必要があります。明示的に対象に含めないと、長期分析用の統計がエネルギーセンサーで生成されない場合があります。

重要なルール

必ず行うこと
  • 増加のみする累積メーターには state_class: total_increasing を使用する
  • すべてのエネルギーセンサーに device_class: energy を追加する
  • エネルギーセンサーに unit_of_measurement: kWh(または適切な単位)を設定する
  • 請求サイクルの追跡用に utility_meter を設定する
  • すべてのエネルギーセンサーを Recorder の include リストに含める
  • テンプレートセンサーを使い、デバイス再起動時に累積センサーをリセットする
  • 電力網からの消費と電力網への送電には、別々のセンサーを使用する
絶対に行わないこと
  • 累積メーターに state_class: measurement を使用する(統計が機能しなくなります)
  • utility_meter の offset パラメーターを忘れる(午前 0 時にリセットされる場合があります)
  • リーマン和積分を行わずに、電力(W)とエネルギー(kWh)のセンサーを混在させる
  • state_class なしでエネルギーセンサーを作成する(エネルギーダッシュボードで機能しません)
  • 太陽光発電量を消費量から差し引く必要があると考える(エネルギーダッシュボードが処理します)
  • 1 つのセンサーで双方向の電力フローを設定する(消費と送電には別々のセンサーを使用する)
  • 期間ごとの消費量を追跡する必要があるのに utility_meter の設定を省略する
よくある間違い

誤り:

sensor:
  - platform: template
    sensors:
      total_energy:
        unit_of_measurement: kWh
        value_template: "{{ states('sensor.meter') }}"

正しい設定:

template:
  - sensor:
      - name: "Total Energy"
        unique_id: total_energy
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
        state: "{{ (states('sensor.meter') | float(0)) }}"

理由: Template プラットフォームは非推奨です。適切な state_class と device_class を指定した Template 統合を使用すると、エネルギーダッシュボードと連携できます。

既知の問題の防止

問題根本原因解決策
エネルギーダッシュボードにデータが表示されないstate_class がない、または誤っている累積メーターには total_increasing を使用します
統計が生成されないセンサーが recorder の include リストにないセンサーエンティティを recorder の設定に追加します
ユーティリティメーターがリセットされないoffset が誤っている、または cycle がないサイクル(毎時/毎日/毎月)とオフセットの設定を確認します
太陽光の自家消費量が計算されないバッテリーセンサーが個別に設定されていないバッテリー用の充電/放電センサーを作成します
グリッドの消費量が正しくない双方向センサーを使用し、センサーを個別に分けていないgrid_consumption と grid_return に分けます
再起動後にセンサーが利用できない累積メーターの値が保持されないテンプレートセンサーに availability_template を追加します
統計値が正しくない生データに負の値や欠損があるリーマン和を使用して電力をエネルギーに変換します
ユーティリティメーターの期間が正しくないタイムゾーンに対するオフセットが誤っているオフセットを現地の午前0時または請求サイクルに合わせます

設定リファレンス

エネルギーセンサーテンプレート(YAML)
template:
  - sensor:
      - name: "Main Energy Meter"
        unique_id: main_energy_meter
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
        availability_template: "{{ states('sensor.meter_input') not in ['unavailable', 'unknown'] }}"
        state: "{{ (states('sensor.meter_input') | float(0)) }}"

      - name: "Instantaneous Power"
        unique_id: instantaneous_power
        unit_of_measurement: W
        device_class: power
        state_class: measurement
        state: "{{ (states('sensor.power_meter') | float(0)) }}"

主な設定:

  • device_class: energy - エネルギーセンサーとして識別し、エネルギーダッシュボードで使用します
  • state_class: total_increasing - 値が増加し続ける累積メーターです
  • state_class: measurement - 瞬時値(エネルギーではなく電力)です
  • unit_of_measurement: kWh - エネルギーの単位です。電力には W を使用します
  • availability_template - 利用できない状態によって統計が壊れるのを防ぎます
ユーティリティメーターの設定(YAML)
utility_meter:
  daily_consumption:
    source: sensor.total_energy_consumed
    cycle: daily
    offset:
      hours: 0
    net_consumption: false        # true for solar with self-consumption

  monthly_consumption:
    source: sensor.total_energy_consumed
    cycle: monthly
    offset:
      days: 1                     # Reset on 1st of month
      hours: 0

  peak_consumption:
    source: sensor.total_energy_consumed
    cycle: weekly
    offset:
      days: 0                     # Reset on Monday
      hours: 0

主な設定:

  • cycle:毎時、毎日、毎週、毎月、隔月、四半期ごと、毎年
  • offset:請求期間に合わせるための時間調整
  • net_consumption:太陽光の自家消費量を追跡するには true に設定します
リーマン和積分(電力からエネルギーへの変換)
integration:
  - platform: riemann_sum
    name: "Daily Energy from Power"
    unique_id: daily_energy_riemann
    source: sensor.instantaneous_power
    round: 3
    unit_prefix: k                # Converts W to kWh
    unit_time: h
    method: trapezoidal

主な設定:

  • source:積分する電力センサー(W)
  • unit_prefix: k - ワットをキロワットに変換します
  • method: trapezoidal または left:積分アルゴリズム
  • round: 3 - 小数点以下の精度

よく使われるパターン

グリッド監視(消費+戻し)
template:
  - sensor:
      - name: "Grid Consumption"
        unique_id: grid_consumption
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
        state: "{{ (states('sensor.grid_import') | float(0)) }}"

      - name: "Grid Return"
        unique_id: grid_return
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
        state: "{{ (states('sensor.grid_export') | float(0)) }}"
バッテリー付き太陽光発電
template:
  - sensor:
      - name: "Solar Production"
        unique_id: solar_production
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
        state: "{{ (states('sensor.solar_meter') | float(0)) }}"

      - name: "Battery Charge"
        unique_id: battery_charge
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
        state: "{{ (states('sensor.battery_charge_meter') | float(0)) }}"

      - name: "Battery Discharge"
        unique_id: battery_discharge
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
        state: "{{ (states('sensor.battery_discharge_meter') | float(0)) }}"
デバイスの電力監視(スマートプラグ)
template:
  - sensor:
      - name: "Device Energy Today"
        unique_id: device_energy_today
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
        state: "{{ (states('sensor.device_energy') | float(0)) }}"

utility_meter:
  device_daily_energy:
    source: sensor.device_energy_today
    cycle: daily
    offset:
      hours: 0

同梱リソース

参考資料

references/ にあります:

注: 特定のトピックについて詳しく知りたい場合は、上記の参考ファイルをご覧ください。

アセット

assets/ にあります:

これらのテンプレートをコピーし、実装の出発点として使用してください。

Context7 ドキュメント

最新のドキュメントを参照するには、次の Context7 ライブラリ ID を使用してください:

ライブラリ ID用途
/home-assistant/home-assistant.ioユーザードキュメント:energy、solar、grid、utility_meter
/home-assistant/integrations特定のデバイス向けインテグレーションのドキュメント
/home-assistant/templateテンプレートセンサーのリファレンス

公式ドキュメント

トラブルシューティング

エネルギーダッシュボードにデータが表示されない

症状: エネルギーダッシュボードは読み込まれますが、「利用可能なデータがありません」と表示されるか、グラフが空白です。

解決策:

# 1. Verify sensors exist and have state_class
developer-tools > States > Search for energy/solar sensors

# 2. Check recorder includes sensors
# In configuration.yaml:
recorder:
  include:
    entities:
      - sensor.total_energy_consumed
      - sensor.solar_production

# 3. Restart Home Assistant
# 4. Wait 10 minutes for statistics to generate
# 5. Check Developer Tools > Statistics
ユーティリティメーターがリセットされない

症状: ユーティリティメーターが、想定される時刻にリセットされず、値が累積し続けます。

解決策:

# Check offset configuration
utility_meter:
  daily_energy:
    source: sensor.total_energy_consumed
    cycle: daily
    # For midnight reset in your timezone:
    offset:
      hours: 0
    # For reset at 6 AM:
    # offset:
    #   hours: 6
太陽光発電の自家消費量が追跡されない

症状: 自家消費率が0%であるか、表示されません。

解決策:

# Create separate battery sensors
template:
  - sensor:
      - name: "Battery Charge"
        unique_id: battery_charge
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
        state: "{{ (states('sensor.battery_charge_meter') | float(0)) }}"

      - name: "Battery Discharge"
        unique_id: battery_discharge
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
        state: "{{ (states('sensor.battery_discharge_meter') | float(0)) }}"

# In energy dashboard configuration, set:
# - Source: Solar production sensor
# - Battery (optional): Both charge and discharge sensors
センサーに「unknown」または「unavailable」と表示される

症状: 開発者ツールでセンサーの状態が「unknown」または「unavailable」のままになります。

解決策:

# Add availability_template
template:
  - sensor:
      - name: "Energy Meter"
        unique_id: energy_meter
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
        availability_template: "{{ states('sensor.meter_input') not in ['unavailable', 'unknown'] }}"
        state: "{{ (states('sensor.meter_input') | float(0)) }}"

セットアップチェックリスト

このスキルを使用する前に、次の項目を確認してください。

  • Home Assistant が2023.1以降で稼働している
  • configuration.yaml にアクセスできる(File Editor または VS Code アドオン)
  • 少なくとも1つのエネルギーセンサーを利用できる(電力メーター、スマートプラグ、統合センサー)
  • メーターの種類(電力網からの消費/返却、太陽光発電、バッテリー、個別デバイス)を決めている
  • 請求サイクル(日次、月次など)を把握している
  • configuration.yaml で Recorder が有効になっている
  • 監視するすべてのデバイス/メーターを特定している

コメント