我が家の電気まわり
おうちを新築するにあたり、我が家は下記のような構成を組みました。
- ソーラーパネル
- NER108M415B-MD 18枚
- パネル総出力 7.47kW
- パワコン
- SPSS-55E-NX
- 定格出力 5.5kW
- 変換効率 95%
- 電力検出ユニット
- SPW277-NX
電力検出ユニットがECHONET Liteプロトコルに対応しているので、 これをMQTTにパブリッシュするECHONETLite2MQTTを導入して、 Home Assistantから電気利用量を取得しています。
電力会社は中部電力で、電気料金プランはスマートライフプランで、 太陽光発電分は自家消費し、余剰電力を固定価格買取制度で買い取ってもらっています。
最近建てたおうちだとよくある構成だと思います。
Home AssistantのGrid Integrationまわり、料金計算が固定料金を前提に作られているようで、 今回のような時間帯で単価が変化するようなものは設定ができないようです。
ということで、今回は時間帯別の料金を返すテンプレートセンサーを作ることで、 正しい電気料金を求めてみようというのが今回の趣旨。
料金プランを確認する
中部電力のスマートライフプランのページを確認して、 具体的に何時から何時までがいくらなのか、というのを確認します。
朝とくだとか夜とくだとか
ちなみにこのプラン、通常プランに加え「朝とく」「夜とく」があり、下記のような感じになります。 我が家は「夜とく」を採用しているので、今回のサンプルコードもこちらを前提にしたものとなります。
- スマートライフプラン
- 平日
- 8:00~10:00 28.61円/kWh
- 10:00~17:00 38.80円/kWh
- 17:00~22:00 28.61円/kWh
- 22:00~翌8:00 16.52円/kWh
- 土日・祝日
- 8:00~22:00 28.61円/kWh
- 22:00~翌8:00 16.52円/kWh
- 平日
- スマートライフプラン【朝とく】
- 平日
- 9:00~10:00 28.61円/kWh
- 10:00~17:00 38.80円/kWh
- 17:00~23:00 28.61円/kWh
- 23:00~翌8:00 16.52円/kWh
- 土日・祝日
- 9:00~23:00 28.61円/kWh
- 23:00~翌9:00 16.52円/kWh
- 平日
- スマートライフプラン【夜とく】
- 平日
- 7:00~10:00 28.61円/kWh
- 10:00~17:00 38.80円/kWh
- 17:00~21:00 28.61円/kWh
- 21:00~翌8:00 16.52円/kWh
- 土日・祝日
- 7:00~21:00 28.61円/kWh
- 21:00~翌7:00 16.52円/kWh
- 平日
土日・祝日の定義
そして土日・祝日の定義ですが、
(注)土日・祝日とは、土曜日、日曜日、祝日、1月2日、1月3日、4月30日、5月1日、5月2日、12月30日および12月31日をいいます。
と記載があります。すなわち日本の祝日を加え、年末年始・長期連休なども含まれたものを定義する必要がある1ようです。
実際につくってみる
要件はこれで分かったので、実際にテンプレートを作ってみます。
今回は3段階で作ることにします。
- バイナリセンサ統合の追加
- 特定日付の場合に除外する設定の追加
- 1.で作成したバイナリセンサの情報から時間帯別電気料金を返すテンプレートの作成
1. バイナリセンサ統合の追加
新しい統合を追加し、「平日」という統合を探します。
Countryに日本を指定して追加すると、binary_sensor.workday_sensorというセンサが追加されます。
そのまま統合の設定画面を開き、平日と休日の設定を行います。
含める日数- 月曜日
- 火曜日
- 水曜日
- 木曜日
- 金曜日
除外する日数- 土曜日
- 日曜日
- 休日
2.特定日付の場合に除外する設定の追加
先程指定のあった特定日付を除外する設定を追加します
1.の画面から休日を追加より、下記のように記載して追加します
2026-01-02
2026-01-03
2026-04-30
2026-05-01
2026-05-02
2026-12-30
2026-12-31
きっとこんな感じになればOK。
3. テンプレートの作成
下記のようなテンプレートを作成します。
既にテンプレートセンサーがある場合はうまい具合に合体させてあげてください。
- template:
- sensor:
- name: "Current Electricity Price"
unique_id: current_electricity_price
unit_of_measurement: "JPY/kWh"
device_class: monetary
state: >
{% set hour = now().hour %}
{% set is_holiday = is_state('binary_sensor.workday_sensor', 'off') %}
{# --- 料金定義 --- #}
{% set price_night = 16.52 %}
{% set price_day_high = 38.80 %}
{% set price_day_normal = 28.61 %}
{# --- 判定ロジック --- #}
{# 21:00-翌7:00 #}
{% if hour >= 21 or hour < 7 %}
{{ price_night }}
{# 土日祝の 9:00-21:00 #}
{% elif is_holiday %}
{{ price_day_normal }}
{# 平日の処理 #}
{% else %}
{# 10:00-17:00 #}
{% if 10 <= hour < 17 %}
{{ price_day_high }}
{# それ以外の時間(9:00-10:00, 17:00-21:00) #}
{% else %}
{{ price_day_normal }}
{% endif %}
{% endif %}
完成
これで出せるようになりました。
数字の妥当性も良さそうなのでなのでいいかんじですね。
-
今書いてて気付いたんですが、これ毎年変わるんだろうな・・・嫌だな・・・ ↩︎
