ha-energy について
Home Assistant のエネルギー監視を設定するユーザー向けのガイドです。センサー、Recorder の統計、Utility Meter の周期設定を扱い、系統電力、太陽光、バッテリー、機器の監視例とトラブルシューティングを提供します。
主な機能
- 01エネルギーセンサーの YAML 設定
- 02Utility Meter による請求周期の追跡
- 03Recorder の統計設定
- 04太陽光・系統電力・バッテリーの監視
- 05電力からエネルギーへの積算
- 06設定例とトラブルシューティング
活用シーン
- 01Home Assistant のエネルギーダッシュボード用センサー設定
- 02日次や請求周期ごとの消費量追跡
- 03系統からの受電と逆潮流を別々に監視
- 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 分 |
| よくあるエラー | 8 | 0 |
| トークン使用量 | 約 10000 | 約 5500 |
このスキルで防げる既知の問題
- 誤った
state_classの値(total、total_increasing、measurementのいずれかである必要があります) - エネルギーセンサーに
device_class: energyがない - utility_meter エンティティの
state_classが誤っている(total_increasingである必要があります) state_classを指定せずにunit_of_measurement: kWhを使用している(統計が機能しなくなります)- configuration.yaml で統計の収集を有効にし忘れる
- 自家消費を追跡するためのバッテリー設定なしで、太陽光発電センサーを設定する
- センサーの組み合わせ(消費と送電)が一致しない状態で電力網をモニタリングする
- 請求期間と一致しないサイクル設定で 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/ にあります:
state-class-guide.md- state_class の包括的なリファレンスdevice-class-reference.md- エネルギー関連のすべてのデバイスクラスutility-meter-patterns.md- 請求サイクルの設定energy-dashboard-setup.md- エネルギーダッシュボードの手順ガイドsolar-integration.md- 太陽光パネルとバッテリーの追跡
注: 特定のトピックについて詳しく知りたい場合は、上記の参考ファイルをご覧ください。
アセット
assets/ にあります:
energy-sensors-template.yaml- センサーテンプレート一式utility-meter-examples.yaml- あらゆるシナリオに対応するメーター設定energy-dashboard-card.yaml- ダッシュボードカードの設定
これらのテンプレートをコピーし、実装の出発点として使用してください。
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 が有効になっている
- 監視するすべてのデバイス/メーターを特定している