読者です 読者をやめる 読者になる 読者になる

メモ書きブログ

日々調べたことや興味あることをメモのごとく、淡々と書くだけの気晴らしブログです

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)を入れます
OK

SKLL64 001C64000xxxxxxx ←上のAddrの値を入れます
FE80:0000:0000:0000:021C:6400:0xxx:xxxx ←IPv6アドレスが返ってきます

SKJOIN FE80:0000:0000:0000:021C:6400:0xxx:xxxx ←上のIPv6アドレス
OK

EVENT 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の詳細は、次のホームページで公開されています。

エコーネット規格(一般公開版):ECHONET CONSORTIUM