Wi-SUN規格を使ったスマートメーターBルート通信にチャレンジ
導入が進んでいるスマートメーターですが、調べてみますと、設置を待たなくても申し込めばすぐ用意してもらえるらしく、さっそく前のめりで手続きしてみました。これで念願のBルートがようやく体験できます。
ご利用の電力会社のウェブページから、スマートメーターの設置を申し込みます。すでに設置済みの場合は、Bルートの利用開始の申し込みをして下さい。申請してから3週間くらいでメーターが交換になりましたが、立ち会いは必要ありませんでした。
気になる設置場所ですが、下のように金属扉の向こう側にすっぽり収まってます。電波的になかなか厳しそう・・・。
メーカーはGE・富士電機製の模様
設置と同時にBルート認証IDが郵送されてきます。またBルートパスワードが、メールで送られてきます。 この2つは、非常に重要な秘密情報なので、大切に保管してください。パスワードは、東電の上記ウェブサイトから変更の申し込みができるようです。
次にスマートメーターに接続するための無線デバイスを入手します。お手軽に試したい時はUSBドングルタイプが良さそうです。Amazonで1個から買えてしまうという点で「WSR35A1-00」か「BP35C2」が圧倒的に入手し易いです。 発売時期はBP35C2の方が後ですが、以下のような違いがあります。
並べてみた図(上がWSR35A1-00、下がBP35C2)
ドキュメントやTera Termのサンプルマクロも非常に豊富なので、いちどはサポートページにアクセスしてみることをお勧めします。
Wi-SUN Bルート向けUSBドングルですが、他にも下記製品は1個から購入可能で入手しやすいかと思います。いずれもWi-SUN認証済みなのでスマートメータとの接続性には全く問題ありません。またコマンド体系が「WSR35A1-00」と同じなので、以下の解説がそのまま当てはまります。
知らない間に続々と便利なキットが販売されていました。LCD付きで単体利用できる機器が人気のようです。
ラズパイとBP35C0-T01を使ったゲートウェイ (ラズパイとWi-SUNモジュールは別売)LCDの視認性が良くて便利!
M5Stackに接続して使えるWi-SUNプラグインデバイス。M5Stack使いの方に最適!開発主様のBlogも大変参考になります。合わせてどうぞ。
接続前のセットアップ、基本的なコマンドシーケンスは下記の記事が大変参考になります。
スマートメーターの情報を最安ハードウェアで引っこ抜く(WSR35A1-00、BP35A1をお使いの方はこちら)
ミルエネのUSBドングルでスマートメーターからリアルタイムに消費電力を取得する(コマンド体系がBP35C2と同じ)
WSR35A1-00とBP35C2で、よく使うコマンドの違いを簡単にまとめてみました。BP35C2では、
追加された引数は、発行するコマンドやイベントがBルートとHANどちらを対象とするか指定するためのものですが、ここでは0(Bルート側)固定で処理してOKです。ERXUDPイベント形式が変更になっていますので、WSR35A1-00でアプリケーションを作られている方は若干、解析処理の手直しが必要です。
またJavaに慣れている方は、SKコマンド用のJavaライブラリがあります。
ドングルコマンドの「EVENT XX」がjavaの作法でイベントリスナでハンドリング出来たりなど、なれるととても楽です。ラズベリーパイでも動作します。(WSR35A1-00はOKですが、残念ながら引数の多いBP35C2タイプのコマンドセットには未対応です)
接続までのサンプルコード(.javaファイル)です。
いくつかチェックポイントがありますので、どうも接続が安定しないという時に確認してみてください。
さいわい我が家は、ドングルがスマートメーターと近い部屋にあるためか、パケロスはほとんどなく通信環境的には良好でした。
スマートメーターにいろんな要求を投げてどんな応答が戻ってくるのか試すのが面白くて、これだけで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
以下では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の再認証の通信を邪魔してしまい、結果的にセッションが切れやすくなります。
といった制御をすると、より安定すると思います。
Wi-SUNをはじめとする920MHz通信では「1時間あたりに360秒までしか電波をだせない」という送信時間総和の制限が電波法で規程されています。実際のところ、ECHONET Lite程度の通信で360秒制限を超えることはまずありえないわけですが、法令面でみても「必要最小限以外の通信はしない」という運用が求められており、920MHzは何かと制約があります。決して無線LANと同じに考えない方がいいです。
そのため、実現したいアプリケーションを考えた時に、たとえば瞬時電力計測値、瞬時電流計測値の取得の周期や、また本当にこれらを常に取得し続ける必要があるかなどは、慎重に検討する必要がありそうです。せっかく定期的にスマートメーターから積算電力量が送信されていますので、これを受信毎に保存しておけば、1個前のデータとの差分で30分間の消費電力はいつでもローカルで計算できます。受信のみなので、ドングル側の送信時間は消費されないで済みます。
欠測の可能性は常にありますが、0xE5, 0xE2プロパティの履歴情報をうまく使えば、欠けた部分は後から補填できます。
いかに少ない通信で必要な情報を揃えるかが、アプリケーション開発の腕のみせどころになります。
無線モジュールを入手してプログラムを作るなんて面倒!すぐにスマメを活用したい!という方には、Bルート接続をサポートした製品がおすすめです。
自宅のWi-Fiに接続すれば、外出先からもスマホで電力がチェックできます。オプション品も非常に豊富で、カメラ、モーションセンサーなどを追加で取り付も可能。筐体は手のひらサイズで非常に小さく、「コンセント直差し」タイプのため、使い勝手がとても良いです。
ご存知、万能リモコンのiRemoconにも実はBルートサポートモデルがあります。こちらもスマホアプリが充実しており、外出先からの電力チェックはもちろん、使いすぎにはアラートを出してくれて、赤外線リモコンによる家電コントロールとも連動して至れり尽くせりです。
こちらもコンセント直挿しタイプのBルート対応機。スマートメーターからの電力情報がスマホでチェックできるだけでなく、太陽光発電や蓄電池といったECHONET Lite対応機器もコントロールできるようです。また廉価版でBルート専用の「Nature Remo E lite」も発売予定されており、用途に応じて選択できるのが嬉しいですね。