Raspberry PiとWi-SUNモジュールでスマートメーターから情報取得
今回は、前回の「スマートメーターと通信するための機器について」で紹介したWi-SUNモジュールを、Raspberry Piに接続し、スマートメーターから情報取得してみます。
Wi-SUNモジュールとRaspberry Piの接続
Wi-SUNモジュールは、USB接続にてRaspberry Piと繋ぎます。
(Wi-SUNモジュールの電源もUSBからとれるので、ケーブル1本でOK)
あらかじめ、Wi-SUNモジュール(厳密にはマザーボードのBP359C)の ディップスイッチやジャンパーピンを適切に、通信:USB、電源:USBとなるように設定してください。
今回使用するRaspberry Piは、余っていたRaspberry Pi 1 B modelになります。
OS(Raspbian)は次の通りです。
Linux raspberrypi 3.18.11+ #781 PREEMPT Tue Apr 21 18:02:18 BST 2015 armv6l
あらかじめWi-SUNモジュールのUSBを接続してからRaspberry Piの電源を投入した方が良いようです。
(電源不足なのか、USB接続時のOSがリブートしてしまうことがありました…)
Raspberry Piから接続確認
OSが起動したら、下記コマンドで認識されているか確認します。
$ dmesg | grep ttyUSB
[ 7.343848] usb 1-1.3: FTDI USB Serial Device converter now attached to ttyUSB0 ←ttyUSB0で認識されています$ ls -l /dev/ttyUSB0
crw-rw---T 1 root dialout 188, 0 8月 20 00:59 /dev/ttyUSB0
シリアルコンソール(minicom)のインストール
Wi-SUNモジュールとシリアル通信するためminicomを使用したいと思います。
インストールされていない場合は、apt-getでインストールしてください。
$ sudo apt-get install minicom
Wi-SUNモジュールの動作確認と出力設定変更
ここでWi-SUNモジュールと正しく通信できているか確認したいと思います。
minicomコマンドで接続し、SKVERとSKINFOを打ってみます。
$ minicom -D /dev/ttyUSB0 -b 115200
SKVER
EVER 1.2.10
OK
SKINFO
EINFO FE80:0000:0000:0000:021D:1290:xxxx:xxxx 001D1290xxxxxxx 22 7490 FFFE ←一部(IPv6アドレス、MACアドレス)はxxxxで伏せています
OK
EVERやEINFOが帰ってくれば成功です。
ついでに、デバッグしやすいようWi-SUNモジュールの出力設定を変更しておきます。
WOPT 1
OK
WOPT 1で、スマートメーターから受信したバイナリデータが16進ASCII文字で表示されます。
minicomを終了するときは、Ctrl-aを押した後、zを押して、xを押して、Enterです。
ECHONET Liteコマンドの作成
もう一つ準備があります。
スマートメーターから情報取得するためのコマンド(ECHONET Lite)がバイナリデータのため、あらかじめファイルとして作成しておきます。
今回は、スマートメーターから瞬時電力計測値(W)[EPC:0xE7]を取得するためのコマンドを作成します。
$ echo -ne '\x10\x81\x00\x01\x05\xFF\x01\x02\x88\x01\x62\x01\xE7\x00' > getE7.dat
$ ls -l getE7.dat
-rw-r--r-- 1 pi pi 14 8月 20 00:36 getE7.dat ←ファイルサイズが14バイトであること
いよいよスマートメーターから情報取得
スマートメーターに接続して、情報取得してみます。
$ minicom -D /dev/ttyUSB0 -b 115200
minicomファイル転送プロトコル設定
ここまでは、先ほどと同じですが、次にminicomのファイル転送プロトコルを設定します。
Ctrl-aを押した後、zを押して、oを押して、[設定]画面に入ってください。
[設定]の”ファイル転送プロトコル”を選択してください。
Jの設定が空いていましたので、jキーを押して、Jを次の通りに設定します。
- 名前:rawfile ←あとでこの名称を選択するので覚えといてください
- プログラム:/bin/cat
- NAME:Y
- U/D:U
- 全画面:N
- IO-Red.:Y
- 複数:N
ESCキーを2回押して、minicom起動直後の画面まで戻ります。
スマートメーターと接続
ようやくスマートメーターと接続を開始します。
SKSETPWD C xxxxxxxxxxxx ←Bルートサービスのパスワード
OK
SKSETRBID xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ←Bルートサービスの認証ID
OK
SKSCAN 2 FFFFFFFF 6 ←スマートメータを探します
OK
EVENT 20 FE80:0000:0000:0000:021D:1290:0003:C7B2
EPANDESC ←スマートメータが見つかりました
Channel:31
Channel Page:09
Pan ID:7999
Addr:001C64000xxxxxxx
LQI:51
PairID:004790AC
EVENT 22 FE80:0000:0000:0000:021D:1290:0003:C7B2
SKSREG S2 31 ←上のChannelの値(31)を入れます
OK
SKSREG S3 7999 ←上のPan IDの値(7999)を入れます
OKSKLL64 001C64000xxxxxxx ←上のAddrの値を入れます
FE80:0000:0000:0000:021C:6400:0xxx:xxxx ←IPv6アドレスが返ってきますSKJOIN FE80:0000:0000:0000:021C:6400:0xxx:xxxx ←上のIPv6アドレス
OKEVENT 21 FE80:0000:0000:0000:021C:6400:0xxx:xxxxx
~~中略(いろいろ返ってきます)~~
EVENT 25 FE80:0000:0000:0000:021C:6400:0xxx:xxxx ←EVENT 25が返ってくれば接続成功
SKSENDTO 1 FE80:0000:0000:0000:021C:6400:0xxx:xxxx 0E1A 1 000E ←(1)
EVENT 21 FE80:0000:0000:0000:021C:6400:0xxx:xxxx 00
OK
ERXUDP FE80:0000:0000:0000:021C:6400:0xxx:xxxx FE80:0000:0000:0000:021D:1290:0xxx:xxxx 0E1A 0E1A 001C64000xxxxxxx 1 0012 1081000102880105FF017201E70400000282 ←(2)SKTERM ←スマートメーターとの接続切断
(1)の入力方法について
”SKSENDTO 1 FE80:0000:0000:0000:021C:6400:0xxx:xxxx 0E1A 1 000E ”の最後の000Eの後に半角スペース含めて入力します。
その後、Ctrl-aを押した後、zを押して、sを押してファイルアップロードをします。
先ほど設定追加したした、rawfileを選択します。
getE7.datファイルのところで、スペースキーを押下して、Okeyでファイルアップロードします。
(2)の出力結果について
この出力結果の最後の8文字(4バイト)が、スマートメーターから取得した瞬時電力計測値(W)になります。
16進数表記なので、今回の00000282は、642W(ワット)ということになります。
かなり駆け足になりましたが、スマートメーターから情報取得することができました。
途中で出てきたECHONET Liteの詳細は、次のホームページで公開されています。