yuchiの日記

キーボード以外の話を書くぞの場所

スマートメーターから電力が取れるHEM-GW26Aを使ってPrometheus+Grafanaで電力を表示する

東芝ホームゲートウェイというものがありました。

https://www.tlt.co.jp/tlt/products/hems/hiroba/hgw-01.htm

スマートホームバイスとして対応したスマートメーター、家電、太陽光パネルコントローラーなどと接続することでブラウザから情報を見ることができる製品です。

メーカーページを見るとHEMSと蓄電池事業は撤退し、家の設備の1つとして使用することが想定されるものだが、発売から10年経ってない(2015年発売)のにアプリなどのサポートはすべて終わってて悲しい状況です。

この製品を少し前に安く中古が販売されていたのを購入してしばらく放置していましたが、久々に出して遊んでみた記録です。

賃貸で今使えるような機能としては電力計(スマートメーター)からの電力を見る程度ですが、セットアップしてブラウザで見るときちんと現在使用している電力量を見ることができました。

わざわざ画像として表示しているので、単純にページ内要素からスクレイピングをして電力の数値は取得するのは面倒そうです。

調べるとcurl経由で電力瞬間値を取得する方法を書いたQiita記事があったのでこれを参考にPrometheus+Grafanaで電力量を取得してグラフにしようと思います。

qiita.com

純粋なcurlで値を取得できれば/etc/prometheus/prometheus.ymlに書けば収集できそうですが、ヘッダ付与や16進数でのレスポンスなどがあるため、今回はGoでPrometheus Exporterを作成しました。

https://prometheus.io/docs/guides/go-application/

コード自体はGitHub Copilotを使ってあっという間に完成です。IPアドレスMACアドレスは適宜読み替えてください。

処理内容としては、特定のIPアドレスに10秒おきにアクセスし、取得できた値を16進数から10進数に変換、それを9091ポートでPrometheusが取れるようにするといったものです。

gist.github.com

これをサーバーのDockerなどで動かしてあげるとPrometheusから見れるようになると思います。

あとはGrafanaダッシュボードからPrometheusをソースにして設定すれば電力量のグラフが出るようになりました。

電化製品を動かしたときに顕著にグラフが跳ねるのが面白いですね。

家にいない時間帯はかなり低い値で変動なく推移するので在宅しているか否かが分かってしまうので防犯面からは取り扱いには注意したほうが良い値だと思います。

PrometheusやGrafanaでほぼリアルタイムの値が取得できているということは、規定の値(消費電力)を超えたらアラートを出してブレーカーが落ちる前に動かしている電化製品を止めるということもできそうですね。

しばらくはこれらの値を使って、「自分が考える最強のお家ステータスダッシュボード」を作ってみようと思います。