#author("2022-06-08T23:15:10+09:00","","")
その1:Wi-SUN規格を使ったスマートメーターBルート通信にチャレンジ

*はじめに [#e28ac7ed]

導入が進んでいるスマートメーターですが、調べてみますと、設置を待たなくても申し込めばすぐ用意してもらえるらしく、さっそく前のめりで手続きしてみました。これで念願のBルートがようやく体験できます。

*スマートメーターの設置 [#e08c0ac2]

下記ページからスマートメーターの設置を申し込みます。
すでに設置済みの場合はBルートの利用開始の申し込みをして下さい。

[[申し込みページ>https://www.tepco.co.jp/pg/consignment/liberalization/smartmeter-broute.html/]]


申請してから3週間くらいで交換になりましたが、立ち会いは必要ありませんでした。

気になる設置場所ですが、下のように金属扉の向こう側にすっぽり収まってます。電波的になかなか厳しそう・・・。

&ref(box.jpg,nolink,box);

メーカーはGE・富士電機製の模様

&ref(meter.jpg,nolink,meter);

設置と同時にBルート認証IDが郵送されてきます。またBルートパスワードが、メールで送られてきます。
この2つは、非常に重要な秘密情報なので、大切に保管してください。パスワードは、東電の上記ウェブサイトから変更の申し込みができるようです。


*Wi-SUN準拠のドングルを入手する [#g8e21f8a]

次にスマートメーターに接続するための無線デバイスを入手します。お手軽に試したい時はUSBドングルタイプが良さそうです。Amazonで1個から買えてしまうという点で[[「WSR35A1-00」>https://www.amazon.co.jp/JORJIN-WSR35A1-00/dp/B01FLAP3FK/ref=sr_1_1?s=industrial&ie=UTF8&qid=1484629840&sr=1-1&keywords=/]]か[[「BP35C2」>https://www.amazon.co.jp/%E3%83%AD%E3%83%BC%E3%83%A0-ROHM-BP35C2/dp/B01NACWELF/]]が圧倒的に入手し易いです。
発売時期はBP35C2の方が後ですが、以下のような違いがあります。

・WSR35A1-00

Bルート対応のみ

BP35C2より若干安価

インターネットや雑誌に記事が豊富

・BP35C2

BルートとHANのデュアルスタックなのでコマンドの使い方にちょっとクセがある(フレッツミエルネのUSBドングル「UDG-1-WSNE」とコマンド体系は同じ)

WSR35A1-00よりだいぶ小さい

TCP関連のコマンドがなくなっている

並べてみた図(上がWSR35A1-00、下がBP35C2)

&ref(usb_dongle.jpg,nolink,dongle);

ドキュメントやTera Termのサンプルマクロも非常に豊富なので、いちどはサポートページにアクセスしてみることをお勧めします。

[[ローム社Wi-SUNサポートページ>https://www.rohm.co.jp/products/wireless-communication/specified-low-power-radio-modules/]]

*2017/09 追記 [#t4a1197c]

Wi-SUN Bルート向けUSBドングルですが、他にも下記製品は1個から購入可能で入手しやすいかと思います。いずれもWi-SUN認証済みなのでスマートメータとの接続性には全く問題ありません。またコマンド体系が「WSR35A1-00」と同じなので、以下の解説がそのまま当てはまります。

[[LPR9202 03-U1>http://itstore.zaikostore.com/shopdetail/000000002137/ct109/page1/order/]]
[[RL7023 Stick-D/IPS>https://www.tessera.co.jp/rl7023stick-d_ips.html/]]

*2021/03 追記 [#b82f0466]

知らない間に続々と便利なキットが販売されていました。LCD付きで単体利用できる機器が人気のようです。

[[Wi-SUNゲートウェイキット>https://www.switch-science.com/catalog/6467/]]

ラズパイとBP35C0-T01を使ったゲートウェイ (ラズパイとWi-SUNモジュールは別売)LCDの視認性が良くて便利!

[[Wi-SUN HAT>https://booth.pm/ja/items/1650727/]]

M5Stackに接続して使えるWi-SUNプラグインデバイス。M5Stack使いの方に最適!開発主様のBlogも大変参考になります。合わせてどうぞ。
[[M5StickCで家庭用スマートメーターをハックする!>https://kitto-yakudatsu.com/archives/7206/]]


*接続から消費電力情報の取得まで [#w43c4474]

接続前のセットアップ、基本的なコマンドシーケンスは下記の記事が大変参考になります。

[[スマートメーターの情報を最安ハードウェアで引っこ抜く>https://qiita.com/rukihena/items/82266ed3a43e4b652adb/]](WSR35A1-00、BP35A1をお使いの方はこちら)

[[ミルエネのUSBドングルでスマートメーターからリアルタイムに消費電力を取得する>http://blog-yama.a-quest.com/?eid=970182/]](コマンド体系がBP35C2と同じ)

WSR35A1-00とBP35C2で、よく使うコマンドの違いを簡単にまとめてみました。BP35C2では、

SKSCANコマンドに引数が追加
SKSENDTOコマンドに引数が追加
SKPINGコマンドに引数が追加
ERXUDPイベント含めたイベント全般に引数が追加
TCP関係のコマンドが廃止されている

追加された引数は、発行するコマンドやイベントがBルートとHANどちらを対象とするか指定するためのものですが、ここでは0(Bルート側)固定で処理してOKです。ERXUDPイベント形式が変更になっていますので、WSR35A1-00でアプリケーションを作られている方は若干、解析処理の手直しが必要です。

またJavaに慣れている方は、SKコマンド用のJavaライブラリがあります。

[[SKSTACK API for Java>https://skyley.sakura.ne.jp/wiki/?SKSTACK+API+for+Java/]]

ドングルコマンドの「EVENT XX」がjavaの作法でイベントリスナでハンドリング出来たりなど、なれるととても楽です。ラズベリーパイでも動作します。(WSR35A1-00はOKですが、残念ながら引数の多いBP35C2タイプのコマンドセットには未対応です)

[[接続までのサンプルコード(.javaファイル)>http://www.skyley.com/products/SmartMeterApp.java/]]です。

*うまく接続できない場合 [#b3d09bf9]

いくつかチェックポイントがありますので、どうも接続が安定しないという時に確認してみてください。

EVENT 24で接続が失敗する場合、Bルートパスワードと認証IDの指定が正しいか確認してください。Bルートパスワードはアルファベットを大文字で指定する決まりなので、小文字が混じっているとしたら読み違いの可能性があります。

パスワードも認証IDも合っているのにやはり接続できない場合、SKSCANコマンドで得られるEPANDESCイベントのLQI値を確認してみてください。10進数で値20-30以下の場合、スマートメーターとUSBドングル間の通信環境が悪すぎて接続できていない可能性が高いです。できればもう少しドングルを近づけて試してみてください。 (LQIの目安値はドングル製品によってかわってきます)

アクティブスキャンを何回も実行しないとEPANDESCが表示されない場合も、通信環境が悪い可能性が高いです。SKSCANを実行してみて、最低でも2回に1回は応答があるくらいが好ましいです。Scan Durationは必ず6以上で試してください。

さいわい我が家は、ドングルがスマートメーターと近い部屋にあるためか、パケロスはほとんどなく通信環境的には良好でした。


*ECHONET Liteを試してみる [#v116c548]

スマートメーターにいろんな要求を投げてどんな応答が戻ってくるのか試すのが面白くて、これだけで1日過ぎてしまいました・・。

家庭用のスマートメーターはECHONET Liteでいうと低圧スマート電力量メータクラスで、プロパティがいろいろ用意されています。目的の消費電力情報を取り出すのに、どのプロパティが一番適しているか悩みますがせっかくスマートメーターが30分毎のデータを蓄積してくれているので、これを引出してみることにします。

試しにSET要求で0xE5プロパティを2に設定してみる
(2日前のデータ履歴を引き出す準備をする)

SKSENDTO 1 FE80:0000:0000:0000:XXXX:XXXX:XXXX:XXXX 0E1A 1 0 000F 108112340EF0010288016001E50102

(データ部は実際にはバイナリ指定です)

正しく設定されているかリードバックしてみる

SKSENDTO 1 FE80:0000:0000:0000:XXXX:XXXX:XXXX:XXXX 0E1A 1 0 000E 108112340EF0010288016201E500

(データ部は実際にはバイナリ指定です)

以下の応答が得られました(受信データだけ掲載)

108112340288010EF0017201E50102

0xE5プロパティが0x02であることを示しているので設定されてるようです。

0xEAプロパティGETで、2日前の積算電力(1日分)の履歴を取り寄せてみる

SKSENDTO 1 FE80:0000:0000:0000:XXXX:XXXX:XXXX:XXXX 0E1A 1 0 000E 108112340EF0010288016201E200

30分毎に1日分なので、48個のデータが来る(と、ECHONET Lite規格書には書いてある)

108112340288010EF0017201E2C2000200000A95
00000A9700000A9A00000A9C00000AA000000AA4
00000AA800000AAB00000AAE00000AB100000AB4
00000AB600000AB900000ABD00000ABF00000AC2
00000AC400000AC600000ACE00000AD500000ADD
00000AE300000AEC00000AF500000AF900000AFA
00000AFB00000AFD00000AFE00000AFF00000B00
00000B0100000B0300000B0400000B0500000B08
00000B0A00000B0D00000B1000000B1200000B15
00000B1800000B1B00000B1D00000B2000000B22
00000B2600000B29

応答戻ってきた!!

ECHONET Liteにはオブジェクト指向的な設計思想が入ってます。個々のスマートメーターは「低圧スマート電力量メータクラス」のインスタンスで、これは「機器オブジェクトスパークラス」を継承していることになってます。そのため通信相手がスマートメーターであれ照明であれエアコンであれ、機器オブジェクトスーパークラスが提供するプロパティは、共通してGet/Setすることができます。

そこでGETプロパティマップを取り寄せてみる

SKSENDTO 1 FE80:0000:0000:0000:XXXX:XXXX:XXXX:XXXX 0E1A 1 0 000E 108112340EF00102880162019F00

応答:

108112340288010EF00172019F111941414160404000624300414040430202


*Tipsをご紹介 [#e3ad0cfc]

以下ではBルートアプリケーション開発のコツをいくつかご紹介いたします。

●長期間の運用

ドングルを長時間放置していると、いつのまにか通信できなくなってることがあります。これの仕組みを簡単に解説しますと、Bルートでは互いの機器が「セッション」を維持します。セッションは定期的にリフレッシュされ、同時に暗号鍵が切り替わるのですが、頻度は1日に1回が推奨値です。リフレッシュ処理で無線通信の具合が悪かったりすると、セッションの貼り直しに失敗して、切断状態になってしまいます。

つまり「いつのまにか通信できなくなる」契機は、1日に1回、訪れますので、このタイミングでリフレッシュが成功したか確認し、うまくいっていないようであれば、リカバリ処理を入れると良いと思います。リカバリ処理としてはスキャンしてJOINコマンド発行という普通の接続手順を冒頭から再度実行するのが一番簡単です。

●セッション切れをどう確認するか

通信状態によっては、片側はセッションを維持しているつもりだけれど、もう片側は切れている、という状態になってしまうこともあります。こうなるとイベントだけでは判定できず、通信によって確認する必要がでてきます。方法としてはだいたい2種類の選択肢があるのではないかと思います。

必ず応答があることが分かっているECHONET Lite電文を投げて、応答のありなしを確かめる。一定回数、応答がなければ、スキャンから接続をやり直すのが良いです。

SKPINGを使う。SKPINGコマンドはIP通信におけるICMP Echo requestを発信して、スマメからのEcho replyを要求します。そこでSA1レジスタ=0、とした上で、SKPINGコマンドを周期的に実行してEPONGイベントの発生を確認することで、セッション切れを判定することができます。

SA1レジスタ=0とする理由ですが、スマートメーターによってはセッションがない状態だとEcho replyを平文で返してくる場合も考えられます。SA1=0として暗号化されたEcho replyだけをEPONGイベントで拾うようにすると、スマメとのセッションのあり・なしが、簡単なコマンドで確認できます。SA1設定はいつ行っても害はないので、USBドングルの初期設定時に設定しておくのが簡単でいいかと思います。

●通信頻度はどのくらいか良いか

セッションの更新処理は、通信状態が悪いと再送を繰り返すので、結果がでるまで1分以上かかる場合があります。この間、アプリケーションレベルの通信はなるべく控えた方が良いです。アプリケーションの通信(ECHONET LiteのGET要求など)を頻繁に実行しすぎていると、PANAの再認証の通信を邪魔してしまい、結果的にセッションが切れやすくなります。

アプリケーションによるGET要求の発行は、1分に1回程度以上の間隔にする

EVENT 29でセッションの更新が始まったら、次にEVENT 24か25が出るまで、一時的にECOHNET Lite送信を停止する

といった制御をすると、より安定すると思います。

●通信は必要最低限で

Wi-SUNをはじめとする920MHz通信では「1時間あたりに360秒までしか電波をだせない」という送信時間総和の制限が電波法で規程されています。実際のところ、ECHONET Lite程度の通信で360秒制限を超えることはまずありえないわけですが、法令面でみても「必要最小限以外の通信はしない」という運用が求められており、920MHzは何かと制約があります。決して無線LANと同じに考えない方がいいです。

そのため、実現したいアプリケーションを考えた時に、たとえば瞬時電力計測値、瞬時電流計測値の取得の周期や、また本当にこれらを常に取得し続ける必要があるかなどは、慎重に検討する必要がありそうです。せっかく定期的にスマートメーターから積算電力量が送信されていますので、

これを受信毎に保存しておけば、1個前のデータとの差分で30分間の消費電力はいつでもローカルで計算できます。ドングル側の送信時間は消費されないで済みます。

欠測の可能性は常にありますが、0xE5, 0xE2プロパティの履歴情報をうまく使えば、欠けた部分は後から補填できます。

いかに少ない通信で必要な情報を揃えるかが、アプリケーション開発の腕のみせどころになります。


*プログラムが面倒という方には・・・ [#p2908901]
無線モジュールを入手してプログラムを作るなんて面倒!すぐにスマメを活用したい!という方には、Bルート接続をサポートした製品がおすすめです。

□[[NextDrive社 CubeJ1>https://www.iij.ad.jp/nextdrive/]]

自宅のWi-Fiに接続すれば、外出先からもスマホで電力がチェックできます。オプション品も非常に豊富で、カメラ、モーションセンサーなどを追加で取り付も可能。筐体は手のひらサイズで非常に小さく、「コンセント直差し」タイプのため、使い勝手がとても良いです。

□[[グラモ社 iRemocon Wi-Fi (SM)>https://shop.softbankselection.jp/?sku=4580388240169/]]

ご存知、万能リモコンのiRemoconにも実はBルートサポートモデルがあります。こちらもスマホアプリが充実しており、外出先からの電力チェックはもちろん、使いすぎにはアラートを出してくれて、赤外線リモコンによる家電コントロールとも連動して至れり尽くせりです。

□[[Nature社 Nature Remo E>https://nature.global/nature-remo-e/]]

こちらもコンセント直挿しタイプのBルート対応機。スマートメーターからの電力情報がスマホでチェックできるだけでなく、太陽光発電や蓄電池といったECHONET Lite対応機器もコントロールできるようです。また廉価版でBルート専用の「Nature Remo E lite」も発売予定されており、用途に応じて選択できるのが嬉しいですね。

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS