スマートメータBルートで電力使用量を取得する際のECHONET Liteについてのメモ
スマートメータBルートで電力量を取得するPYTHONスクリプトを作成する際に、ECHONET Lite仕様とか、そもそもWi-SUNとかECHONET Liteとか何だっけ?となったのでメモ。
TL; DR
- スマートメータBルートはECHONET LiteとWi-SUNを用いる
- ECHONET Liteはスマートハウス向けのOSIのL5〜6の通信プロトコル、Wi-SUNは920MHzの無線規格であり、スマートメータBルートはWi-SUN無線上でIPv6+UDP+ECHONET Liteで通信を行う。
- ECHONET Liteはスマートメータに限らずエアコンとかの家電でも実装されている(ものがある)
- ECHONET Liteのフレームフォーマットをきちんと読み解いた
環境
以下の環境にて動作を確認。
- 無線モジュール: JORJIN WSR35A1-00(ROAM BP35A1 1.2.10)
- Raspberry Pi 2(Raspbian GNU/Linux 10 (buster))
- Python 3.7.3
Wi-SUN接続確認
- 事前に電力会社へBルート用認証情報を申請する
- WSR35A1-00を接続し、
screen /dev/ttyUSB0 115200
でシリアル接続する SKINFO
でリファレンスマニュアルへの認証情報が得られる- リファレンスマニュアル71/79にBルート接続の仕方が記載されているので接続確認する
- 接続後は
SKSENDTO
コマンドでECHONET Liteフレームを入力することでスマートメータとECHONET Liteでの通信が可能 - 初期状態では、ペイロード部分のデータはバイナリで出力される。16進数ASCIIで出力したい場合はシリアル接続後
WOPT 01
コマンドを実行しておく。
以上の動作をPythonで記述すればスマートメータBルートからPythonでデータ取得できるのだが、ECHONET Liteをきちんと理解しておかないと何かと応用がきかない。
ECHONET Liteフレームフォーマット
ECHONET Liteフレームフォーマットは以下の形式である(厳密には任意フォーマット形式もあるがここでは割愛する)
各値の内容は以下の通り
EHD1
- ECHONET Liteの場合は0001000
- 従来のECHONET規格(LiteじゃないECHONET?)の場合は1***0000
EHD2
- 上記の形式の場合は0x81
- 任意フォーマット形式の場合は0x82
TID(Transaction ID)
- 要求と応答を紐付けするための値
- 応答送信側が要求のTIDに合わせる
SEOJ、DEOJ
- 送信元と宛先のEOJをそれぞれ指定する
- X1、X2は機器種別ごとに「ECHONET機器オブジェクト詳細規定」により決まっている
- X3は同一機器に複数インスタンスがある場合を想定して指定されている
ESV
- 送信しているメッセージが「応答」、「要求」、「通知」を示すためのコード
- 応答の要否や不可応答などもあり、種類がやや多い
要求としてよく使いそうなものを書き残しておく。
- 0x60: プロパティ値書き込み要求(応答不要)
- 0x61: プロパティ値書き込み要求(応答要)
- 0x62: プロパティ値読み出し要求
OPC
- 送信しているメッセージが含む(EPC1, PDC1, EDT1),...の組の数を指定する
EPC
- 具体的な処理を示すコード(例えば瞬時電力計測値の要求など)。機器ごとに規定されている
PDC
- EDTのバイト数を保持
EDT
- 書き込み要求時の書き込みデータなどの指定。処理内容(ECHONET Lite用語ではプロパティ)ごとに規定されている
以上を踏まえて、「ECHONET機器オブジェクト詳細規定」から扱いたい機器のクラス規定を参照すれば希望の処理が行えるはず。
例えば、スマートメータだと、過去の積算電力量を読み出そうとすると、「読み出したい日付をスマートメータ側に書き込み要求」+「(書き込んだ日付の)積算電力量計測値履歴の要求」の組み合わせが必要、といったことなどはきちんと規定を読まなければいけない。
具体的なコードは多数ウェブ上にあるのでここでは割愛する。そのうち整理してgithubにでも載せる。
所感
- 初見だと、ノード、オブジェクト、プロパティとかの用語がピンとこない(ノード=機器、オブジェクト=機器内のECHONET Lite通信を行うモジュール(機器内に複数あるかも)、プロパティ=コマンドくらいの読み替えでおおよそ掴める)
- 仕様上は想定パターンが多く複雑そうに見えるが、実際に必要な処理自体は単純
- もうちょっとスマート家電系流行って欲しい