目次

スマートメーターから消費電力をリアルタイムに取得するbgetsの使用方法を説明する。


前提環境
※Ruby環境のインストールは様々なサイトで紹介されているのでそちらを参照してほしい
主な仕様


bgetsダウンロード

bgets ソースコード rev.3 (bgets.rb) (右クリック -> 名前を付けて保存)
BSDライセンスで。
2016/5/7 rev.3 一部nil判定がgetWしかなかったのを修正

bgets使用手順

受信データ表示設定(1回だけ)

WSR35A1-00 の受信データの表示形式をテキストモードにする。
TeraTermを使った手順は下記の通り。

1. WSR35A1-00 のシリアルポートに接続する。

2. 通信速度を 115200kbps にする。メニュー [設定] - [シリアルポート] で設定する。

3. 「SKVER」+ Enter を入力して、バージョンが表示されれば接続できている。

SKVER(enter)


4. 「WOPT 01」+ Enter を入力して、受信データの表示形式を16進テキスト形式に変更する。(デフォルトはバイナリをそのまま表示する形式)

WOPT 01(enter)
※WOPTは書き換え回数の制限があるので注意


5. 「ROPT」+ Enter を入力して、01(Cでの設定内容)が設定されていることを確認する。

ROPT(enter)


スマートメーターのIPアドレス取得(1回だけ)
(シリアルポートの通信設定は「受信データ表示設定」と同じ)
下記コマンドを順番に入力する。
SKSETPWD C [Bルート認証パスワード](enter)

SKSETRBID [Bルート認証 ID](enter)

SKSCAN 2 FFFFFFFF 6(enter)

スマートメーターが見つかると、「EPANDESC・・・」というメッセージが表示される。


SKLL64でAddr(MACアドレス)をIPアドレス(ipv6)に変換する。
IPアドレスが接続に必要となる。
SKLL64 [SKSCANで取得したAddr](enter)




bgets の起動

手元の環境だと、RubyのserialportはTeraTermで一度 WSR35A1-00 に接続しておかないと動作しなかった。
(USB接続のたびに発生。シリアルポートをopenしても処理がserialportから返ってこない)
原因はよくわからない。

以下コマンドラインでbgetsを起動する。

ruby bget.rb run <シリアルポート名> <チャネル> <Pan ID> <接続アドレス> <BルートID> <パスワード>

チャネル, Pan ID は、SKSCANで取得したChannel, Pan IDを指定する。
接続アドセスは SKLL64 で取得したIPアドレスを指定する。
BルートID, パスワードは電力会社からもらったものを指定する。

EVENT 25 がWSR35A1-00から返ってくれば接続OK。

2016/05/03_16:44:45 [debug] >> EVENT 25 [スマートメータのIPアドレス(ipv6)]

その後、スマートメーターの情報が取得できれば次のような表示になり、続いて電力計測がはじまる。

2016/05/03_16:44:53 [info] 係数 = 1 有効桁数 = 6 単位 = 1(0.100000倍)
2016/05/03_16:44:56 [info] 2016/05/03 16:44:56,1780,556.7,2016/05/03 16:30:00
・・・

日付ごとにCSVファイルに計測結果を保存する。

data_[yyyymmdd].csv


(手順おしまい)
Bルートの接続について
以下、手順とは関係のない情報やらなんやらを書く。

つなぐのはBルート

スマートメーターが何者かはググってほしい。
導入にはいろんな背景があると思うけど(電力自由化、検針自動化とか)、Bルートといわれる電力の消費者が直接電力計にアクセスできるのが特徴だ。
(Aルート、Cルートもある。詳細はGoogle先生へ...)

Bルートは家電を制御する機器(ホームゲートウェイ)につなぐのを想定していると思うけど、全然盛り上がってない。
お金を払ってまで家電制御をネットワーク化したい人はいないということだろう...
後述するECHONET liteという家電制御の規格があり、スマートメーターと誰でも通信できるのを使わないとは、なんてもったいない。
(ECHONETは家電・屋内設備を仮想的なクラスとみなし制御するようなプロトコル。温水便座クラスとかシャッタークラスとかポットクラスとか・・・不思議な感じのする規格)

それを利用して、スマートメーターから電力をリアルタイムに取得してみることにした。

電力会社への申請

Bルートでアクセスするためには、スマートメーターへ接続するための認証情報が必要だ。
(PANAという認証の仕組み))
認証情報は電力会社(関東だと東電の送電会社である東京電力パワーグリッド)へ申請して情報をもらう。

# 東電の場合はユーザIDが郵送で、パスワードがメールに平文で送られてきたのにはびっくりした。
# まぁIDとパスワードがそろわないと不正使用はできないけどさ・・・


wi-sunアダプター

スマートメーターへはwi-sunという無線の通信規格で接続する。
Ethernetと同じトランスポート層の規格だ。
wi-sunはPCでは一般的な規格でないため、接続には専用の通信インタフェースが必要となる。
wi-sunで接続した上で、IPプロトコル(TCP/UDP)でスマートメーターと通信する。
スマートメーターとの通信にはPANAという仕組みの認証を行う。IP層の認証らしい。

通信インタフェースは調べてみたけど製品の種類が少なく、個人で手軽に扱えそうなのはロームの
BP35A1
という製品だけだった。
PCからシリアルで接続してwi-sunの制御コマンドを送信する。結果もシリアルで受信する。
ただ、BP35A1とPCとの配線を自作する必要があるようで、それをより簡単にしたのが Jorjin Technologies Inc. の
WSR35A1-00
だ。
こいつはUSBに接続すると、PCからはシリアルポートとして見えて、BP35A1 の制御コマンドが簡単に送受信できるもので、今回はこれを使ってみることにした。

BP35A1 の仕様はロームのサイトで公開されていて、スタートアップガイドまであるのでとても助かった。
日本語ドキュメントということもとてもありがたい。


スマートメーターへ接続
ロームのスタートアップガイドを参照してほしい。丁寧に解説してある。
ポイントは
こんな感じ。

制御はECHONET liteで

BP35A1の制御コマンドでスマートメーターと接続を確立した後は、TCPまたはUDPでECHONET liteの電文(バイナリ)を送受信することで
スマートメータと通信できる。

電文は

固定ヘッダ + TID(命令の通し番号。同じTIDがレスポンスに含まれる) + 宛先(クラスのID) + 命令

といったわかりやすい感じのバイナリ形式となる。
受信時も同様の形式だ。

1つの電文に複数の宛先や命令を含めたりもできるが、簡単に作りたいこともあり今回は1電文1命令にすることにした。

WSR35A1-0(BP35A1)の使い方は下記とした。

ECHONET liteの仕様はECHONETのサイトからダウンロードできる。
これもありがたいことに日本語ドキュメントだ。

せっかくオープンな規格なのにもったないなと思う。
いろいろ便利そうなことができると思うのだけど。

実際に動かしてみて

昔ながらの(スマートメーターではない)電力系のクルクル回る円盤が
ちょうど標準出力に出ているような感じだった。
(スマートメーターはクルクルがないのでそっけない)

ブレーカーを落としたら瞬時電力が 0W になるので、ちゃんと動いてるとは思う。

こんなのがあれば、東電のスマートプランなんてうまく使えそうなんだけどね。


inserted by FC2 system
戻る