スマートメーターのBルートをテストするアプリを作りました。
もっと手軽にスマートメーターと通信しようと考えた
スマートメーターと通信して電力消費量をラズパイとかM5Stackで見る作例はわりとあるのは知ってる。
最近ブラウザにWeb Serial APIがあるのを知ったので(実験的な機能なんだが。)Webアプリケーションを作ってみました。
スマートメーターのルート BをテストするWebアプリケーション
Web Serial APIがサポートされているChrome / Edge / Operaなどでアクセスしてください。
このアプリケーションはRL7023 Stick-D/IPSで検証しました。
/IPSはWi-SUN Route-B 専用つまりWi-SUN HANには対応していないドングル。
例えばこれとかの
HEMS用 Wi-SUNモジュール Route-B/HAN デュアル対応
/DSSとは引数の数が違うらしいので(持っていないから断言できない)、もし/DSSで使いたければ(オープンソースなんだし)Route-B固定に書き換えてください。
実行環境がブラウザーになっただけで、参考のプログラムを手動でやってみただけなんだけど。
スマートメーターにコマンドを送信すると、どのくらいの時間でどんな応答が有るのか体験してみることは理解の助けになるかと。
参考
ハードウェアの準備
WSR35A1-00とかRL7023 Stick-D/IPSとかをUSBポートに挿す。
これだけ。
電子工作が得意なら素のBP35A1とブレイクアウトボードBP35A7AとUSBシリアル変換器を接続した回路をUSBポートに接続すればよい。
スマートメーターと通信する
あとは上のリンクのページに行っていろいろやってみてくれたらいいんですが、
Wi-SUN ECHONET Profile for Route Bプロトコル規格上1対1接続なので、すでにコントローラーがいる場合は後に接続を開始した方が、すでにある接続を奪い取ることに注意してください。
これをやってた時にセッションが謎に切れているのは自分のせいでした。
長期間測定するプログラムは
ECHONET Lite システム設計指針
に則って正しく再接続を実装しましょう。(面倒くさいので自分はしていないが)
6.4 生存確認方法に関する実装事例
ECHONET Lite では、相手側が接続状態を保っているかを周期的に確認する「生存確
認(Keep Alive)」のための手順が規定されていない
6.5 再接続試行に関する実装事例
HEMS コントローラは、上記事例のように低圧スマート電力量メータが離脱することを
踏まえて設計し、低圧スマート電力量メータの生存を確認することができなくなった場合、
低圧スマート電力量メータに対して、再接続をするべきである。
ログ
通信ログです。
SKSETRBID 00000000000000000000000000000000
OK
SKSETPWD C 000000000000
OK
SKSCAN 2 FFFFFFFF 6
OK
EVENT 20 FE80:0000:0000:0000:0000:0000:0000:0000
EPANDESC
Channel:3B
Channel Page:09
Pan ID:0000
Addr:0000000000000000
LQI:32
PairID:00000000
EVENT 22 FE80:0000:0000:0000:0000:0000:0000:0000
SKLL64 0000000000000000
FE80:0000:0000:0000:0000:0000:0000:0000
SKSREG S2 3B
OK
SKSREG S3 0000
OK
SKJOIN FE80:0000:0000:0000:0000:0000:0000:0000
OK
EVENT 21 FE80:0000:0000:0000:0000:0000:0000:0000 00
ERXUDP FE80:0000:0000:0000:0000:0000:0000:0000 FE80:0000:0000:0000:0000:0000:0000:0000 02CC 02CC 0000000000000000 0 0028 00000028C00000024A1F51584F76BBFD00060000000400000000000500030000000400000000000C
EVENT 21 FE80:0000:0000:0000:0000:0000:0000:0000 00
ERXUDP FE80:0000:0000:0000:0000:0000:0000:0000 FE80:0000:0000:0000:0000:0000:0000:0000 02CC 02CC 0000000000000000 0 0068 00000068800000024A1F51584F76BBFE00050000001000009AE6009579A1F643F37FA2C2ABA64896000200000038000001FA00382F00543E21638824A32FE502DCC356B77534534D3030303030303941303531323731363632303030383735303031334536394430
EVENT 21 FE80:0000:0000:0000:0000:0000:0000:0000 00
ERXUDP FE80:0000:0000:0000:0000:0000:0000:0000 FE80:0000:0000:0000:0000:0000:0000:0000 02CC 02CC 0000000000000000 0 0054 00000054800000024A1F51584F76BBFF00020000003B000001FB003B2F80543E21638824A32FE502DCC356B775346B0EC119A773EE96D2D92428B2EAB02300000000E98F84145273D9DA968E5D5A25E3F88E9500
EVENT 21 FE80:0000:0000:0000:0000:0000:0000:0000 00
ERXUDP FE80:0000:0000:0000:0000:0000:0000:0000 FE80:0000:0000:0000:0000:0000:0000:0000 02CC 02CC 0000000000000000 0 0058 00000058A00000024A1F51584F76BC00000700000004000000000000000200000004000003FB000400040000000400006B0D08F40008000000040000000151800001000000100000923902DAB95830442F2A1F48C3B7E580
EVENT 21 FE80:0000:0000:0000:0000:0000:0000:0000 00
EVENT 25 FE80:0000:0000:0000:0000:0000:0000:0000
ERXUDP FE80:0000:0000:0000:0000:0000:0000:0000 FF02:0000:0000:0000:0000:0000:0000:0001 0E1A 0E1A 0000000000000000 1 0012 1081317B0EF0010EF0017301D50401028801
SKSENDTO 1 FE80:0000:0000:0000:0000:0000:0000:0000 0E1A 1 000E
EVENT 21 FE80:0000:0000:0000:0000:0000:0000:0000 00
OK
ERXUDP FE80:0000:0000:0000:0000:0000:0000:0000 FE80:0000:0000:0000:0000:0000:0000:0000 0E1A 0E1A 0000000000000000 1 0012 1081123402880105FF017201E704000002F8
SKSENDTO 1 FE80:0000:0000:0000:0000:0000:0000:0000 0E1A 1 000E
EVENT 21 FE80:0000:0000:0000:0000:0000:0000:0000 00
OK
ERXUDP FE80:0000:0000:0000:0000:0000:0000:0000 FE80:0000:0000:0000:0000:0000:0000:0000 0E1A 0E1A 0000000000000000 1 000F 1081123402880105FF017201810188
SKSENDTO 1 FE80:0000:0000:0000:0000:0000:0000:0000 0E1A 1 000E
EVENT 21 FE80:0000:0000:0000:0000:0000:0000:0000 00
OK
ERXUDP FE80:0000:0000:0000:0000:0000:0000:0000 FE80:0000:0000:0000:0000:0000:0000:0000 0E1A 0E1A 0000000000000000 1 000F 1081123402880105FF017201D70107
SKSENDTO 1 FE80:0000:0000:0000:0000:0000:0000:0000 0E1A 1 0010
EVENT 21 FE80:0000:0000:0000:0000:0000:0000:0000 00
OK
ERXUDP FE80:0000:0000:0000:0000:0000:0000:0000 FE80:0000:0000:0000:0000:0000:0000:0000 0E1A 0E1A 0000000000000000 1 0015 1081123402880105FF017202D70107E70400000388
SKSENDTO 1 FE80:0000:0000:0000:0000:0000:0000:0000 0E1A 1 0010
EVENT 21 FE80:0000:0000:0000:0000:0000:0000:0000 00
OK
ERXUDP FE80:0000:0000:0000:0000:0000:0000:0000 FE80:0000:0000:0000:0000:0000:0000:0000 0E1A 0E1A 0000000000000000 1 0018 1081123402880105FF017202E804003F0016E7040000030C
SKSENDTO 1 FE80:0000:0000:0000:0000:0000:0000:0000 0E1A 1 0012
EVENT 21 FE80:0000:0000:0000:0000:0000:0000:0000 00
OK
ERXUDP FE80:0000:0000:0000:0000:0000:0000:0000 FE80:0000:0000:0000:0000:0000:0000:0000 0E1A 0E1A 0000000000000000 1 001E 1081123402880105FF017203E804003C0028E704000003A8E704000003A8
SKSENDTO 1 FE80:0000:0000:0000:0000:0000:0000:0000 0E1A 1 000E
EVENT 21 FE80:0000:0000:0000:0000:0000:0000:0000 00
OK
ERXUDP FE80:0000:0000:0000:0000:0000:0000:0000 FE80:0000:0000:0000:0000:0000:0000:0000 0E1A 0E1A 0000000000000000 1 0011 1081123402880105FF0172018A03000009
SKSENDTO 1 FE80:0000:0000:0000:0000:0000:0000:0000 0E1A 1 000E
EVENT 21 FE80:0000:0000:0000:0000:0000:0000:0000 00
OK
ERXUDP FE80:0000:0000:0000:0000:0000:0000:0000 FE80:0000:0000:0000:0000:0000:0000:0000 0E1A 0E1A 0000000000000000 1 0012 1081123402880105FF017201E804003D0018
SKSENDTOのペイロード部分は(バイナリなのでエコーバックされない)
1081123405FF010288016201E700
05FF01 028801 62
05FF01(コントローラー)より(SEOJ)
028801(スマートメーター)へ(DEOJ)
62(Get要求:プロパティ値読み出し要求)で
E7(瞬時電力計測値)の
電文を送信した結果
ERXUDP FE80:0000:0000:0000:0000:0000:0000:0000 FE80:0000:0000:0000:0000:0000:0000:0000 0E1A 0E1A 0000000000000000 1 0012 1081123402880105FF017201E704000002F8
10811234 028801 05FF01 72 01 E7 04000002F8
028801 05FF01 72
028801(スマートメーター)より(SEOJ)
05FF01(コントローラ)へ(DEOJ)
72(Get_res応答:プロパティ値読み出し応答)で
E7(瞬時電力計測値)の
04(4バイト=32ビットの値)
000002F8
の電文を受け取った。
つまり計測値は2F8(hex)で
瞬時電力760W
コントローラーとスマートメーターはこんな会話をしている。
おわりに
スマートメーターとの通信を理解したあとはラズパイやM5Stackで測定してみてください。。
Discussion