スマートメータから電力を取得してHomeAssistantと連携する

モチベーション

OSSと手頃なハードウェアを使ってHEMS(っぽいもの)を作りたい。

実現方法

  • M5StickCにWi-SUNアダプタを載せて、スマートメーターから定期的にデータを取得する
  • 取得したデータをMQTT BrokerにPublishする
  • Home AssistantでMQTT BrokerをSubscribeしてHome Energy Managementに統合する

必要なもの

ハードウェア

M5StickC Plus

M5StickC/Plus用Wi-SUN HATキット

完成品はこんな感じです。 Wi-SUNは障害物に強く通信距離が長いので、設置場所はかなり自由度が高いです。 家のどこに置いてもつながるんじゃないでしょうか。

ソフトウェア

諸々

  • Bルートの開通手続き

開発環境

できたもの

導入方法

Home Assistant / Mosquitto (MQTT Broker)

導入自体は既にたくさん情報があるので割愛します…

configuration.yaml

M5StickCはスマートメーターから取得したデータをMQTT Publishしますので、Home Assistant側にSubscribeの設定をしておきます。 設定はREADMEの通りです。 重要なのはstate_topic、device_class、unit_of_measurement、state_classで、それ以外は多分適当に変えても大丈夫です。

ESP32 B Route to MQTT Smart Meter

  1. esp32-broute2mqtt-smartmeterをチェックアウトする
  2. _SmartMeterConfig.hSmartMeterConfig.hにリネームして自分の環境に合わせて設定する
  3. PlatformIOでビルドして書き込み起動する
  4. 設定があっていればシリアルに取得値を出力する
[ 87618][I][main.cpp:101] setup(): ConvertCumulativeEnergyUnit : 0.100000
[ 87619][I][main.cpp:102] setup(): SyntheticTransformationRatio: 1
[ 91834][I][main.cpp:119] loop(): InstantaneousPower       : 767 W
[ 91834][I][main.cpp:120] loop(): CumulativeEnergyPositive : 4757.399902 kWh
[ 91836][I][main.cpp:121] loop(): InstantaneousCurrentR    : 4.000000 A
[ 91842][I][main.cpp:122] loop(): InstantaneousCurrentT    : 5.000000 A

うまくいっていれば、この時点でHome Assistantから取得値が見れるようになります。

うまくいかない場合はデバッグログを有効にするといいかもしれません。

Home Assistant - Home Energy Management

Home Assistantインスタンス/config/energyからHome Energy Managementを設定します。

グリッド消費の設定にCumulative Energy Positive(積算電力量計測値(正方向))を追加します。 1kWhあたりの使用料金を入れておくと、コストも追跡できるようになります。

基本的な設定はこれで完了です。

できること

リアルタイムなデータ取得

瞬時電力計測値、瞬時電流計測値(T相)、瞬時電流計測値(R相)、積算電力量計測値(正方向)がそこそこリアルタイムで見れます。 スマートメータとの通信周期は5秒にしていますが、データ取得に2,3秒程度かかるため、Home Assistant側の処理時間も合わせると10秒ぐらい遅延してます。

この値をトリガにしてオートメーションすることもできます。 電気の使いすぎをスマホに通知するとか、契約A数付近になったらスイッチオフしてブレーカーが落ちるのを防ぐとか。

データ蓄積

取得したデータを個別のグラフで見れます。

消費電力とコストの追跡

エネルギーのビューから消費電力とコストが追跡できます。 在宅の日と出社の日で消費電力が1.5倍ぐらい違う…なんてことが可視化されてしまいます。