LoginSignup
3
4

More than 1 year has passed since last update.

HEM-GW26Aからcurlを使って電力瞬時値を取得する

Last updated at Posted at 2022-04-16

電力瞬時値の取得方法

curl -H 'Referer:http://ホスト名/smartmeter.html' -s 'http://ホスト名/php/get_property_m.php?ba=MACアドレス&eoj=0x028801&epc=0xE7'

16進文字列が返却されるので10進数で欲しい場合はxargs printf "%d\n"にパイプで渡す。Zabbix等で監視するにはこちらの方が便利かも知れない。

curl -H 'Referer:http://ホスト名/smartmeter.html' -s 'http://ホスト名/php/get_property_m.php?ba=MACアドレス&eoj=0x028801&epc=0xE7' | xargs printf "%d\n"

ホスト名とMACアドレスは自分の設定を入力する。
MACアドレスは「スマートメータ設定」で表示される(画像の赤枠部分)。
macaddress.PNG

背景

燃料費が高騰して新電力が次々と撤退する中、ついに自分が契約していた新電力も撤退してしまった。これまで電力監視をウェブサイトを経由してスクレイピングで取得していたのだが、新しい契約先の新電力ではデータ欠損が多く使い物にならない。そこで自宅に設置されているスマートメータから直接読み取ることにした。

スマートメーター(次世代電力計)

もう何年前だったか覚えていないが、ある日東京電力からスマートメーターに交換しますと連絡がきて交換された。その頃は東京電力がリモートでブレーカーを切ることができる程度の認識だった。しかしスマートメーターはもう少し賢かった。Bルートサービスに申し込んでWi-SUNと呼ばれる通信規格で接続すれば電気の使用量を取得できるらしい。これを知って早速申し込んでみたところ、認証IDは郵送で、パスワードは電子メールで届いた。

Wi-SUNモジュールは高い

Wifi子機は安いのだと1000円くらいからあるが、Wi-SUNはその10倍くらいの値段からスタート。ラズパイとモジュールとフルセットだと15000円くらいになる。安いモジュールも存在するがショップでは売り切れで買えるかどうかも分からない。調べるとスマートメーターの通信規格が将来Wi-SUNからWifiに変更され、現行機種はWifi対応に置き換えられる運命にあるらしい。こんな状況だと量産されないので安くするのも限界があるのだろう。結果的にWi-SUNをモジュール単品で購入するよりも撤退したメーカー製品を購入したほうが安くなっていたのでそちらを購入することにした。

HEM-GW26Aの購入

選定理由は「telnet/sshが使える」と記載をウェブで発見したからである。結果としては使えなかった。昔は使えたようだが、脆弱性として「開発者用の隠しページにアクセスできる」と報告されており、どうやらそこでenable/disableができたようだ。残念ながら新しいファームウェアではこのページは使えなくなっていた。sshが使えれば/dev/ttyあたりに直接アクセスできると考えていたので大誤算である。電力を取得するとしてもスクレイピングは極力避けたい。

Google Chromeによる検証

Google chromeの検証でネットワークアクセスを見ると電力の取得方法が分かる。リファラーを設定してそのURLへアクセスすれば簡単に取得できた。get_property_m.phpにGETパラメータとしてba/eoj/epcの3つのパラメータを渡している。baはスマートメータのMACアドレスというのは分かるがeojepcは良くわからない。これを未知のまま使い続けるのは少し怖い。

ファームウェアを確認

生産終了とはいえファームウェアがダウンロードできるので中身を確認する。確認方法の詳細は大人の都合により割愛する。これによるとeojepcのパラメータの意味は以下の通り。

  • eoj: 対象種別(2バイト)+番号(1バイト)
  • epc: データ種別

それぞれ0xから始まる16進文字列で与える。

eojの上位2バイト 対象種別
0x0287 エネルギーモニター
0x0288 スマートメータ
0x0130 エアコン
0x0290 照明設定
0x026B 給湯設定
0x027D 蓄電池
0x05FD HA対応機器設定
0x0287 ガス機器
0x0601 インターホン

epcはエネルギーモニターやスマートメータで指定可能なパラメータらしい。

epc データ種別
0xE0 積算電力量計測値(正方向), kWh
0xE2 積算電力量計測履歴1(正方向), kWh
0xE3 積算電力量計測値(逆方向), kWh
0xE4 積算電力量計測履歴1(逆方向), kWh
0xE7 瞬時値, W
0xEA 定時積算電力計測値逆方向
0xEB 定時積算電力計測値逆方向

すなわちeoj=0x028801&epc=0xE7というのはスマートメータ(0x0288)の1台目(01)の瞬時値[W](0xE7)という意味だった。

EPCについて

調べていくとEPCはECHONET Lite規格書にある「低圧スマート電力量メータ・HEMSコントローラ間」のECHONETプロパティと同一のものであることが分かった。例えば現在年月日を取得する0x98と現在時刻を取得する0x97を設定してみると

$ curl http://略&eoj=0x028801&epc=0x98
0x07e60410
$ curl http://略&eoj=0x028801&epc=0x97
0x1220

と表示された。16進数をそれぞれ10進数に直すと

16進数 10進数
0x07e6 2022
0x04 4
0x10 16
0x12 18
0x20 32

と確かに2022-04-16 18:32と現在時刻になっている。

終わりに

telnet/sshでアクセスができずに絶望したがシンプルに電力監視ができるようになり良かった。EPCの値を設定して取得可能なWeb Service APIと思うとそれなりに活用できそうである。ただ本機とスマートメータ設置位置の距離を離すと読み取りに失敗した。遮蔽物が多かったのが問題なのか、あるいは周囲の電波状況が厳しかったのかは分からない。本機はWifiルーターとしての機能もあるが運用面の不安があるため別のルーターの下でHUBとして使うことにした(WifiのdisableとAPモード)。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4