スマートメータのBルート接続とRaspberry PiとZabbix3.0で電力消費量をモニタリングする

最近暑くなってきてエアコン回すようになったので、消費電力が気になってきました。

スマートメータへ聞きに行く。

最初はカレントトランスとADコンバータ使って電流測ろうって思っていたんですが、家の電気メーターがスマートメータになってた。

先達
chappnet.hateblo.jp
www.higebu.com
d.hatena.ne.jp

どうやらいけそう。自分で計測メカ作ろうとすると校正がめんどいんですよね。

ということで、Raspberry PiにWi-SUN通信でスマートメータと会話して消費電力情報を取ってきてもらうことにしました。

Bルート接続

東電Webから申し込めます。

何故かパスワードがメールできてIDは手紙で来る。普通逆でしょ。東京都水道局のWebサービスはIDがメールできてパスワードが圧着葉書で来ました。

アレだなぁと思うけど他社はこんなものではなく、例えば関電は申し込みからお手紙。申込システムを作るお金が勿体無いんですかね。

Wi-SUN接続をどうするか

ROHMのモジュールBP35A1ぐらいしか入手できなさそう。
www.rohm.co.jp

で、USBドングルで探すと上記のBP35A1を仕込んだROHMのWSR35A1-00がヒットする。
www.rohm.co.jp

こいつはぷらっとホームの通販で買えた。Web上では「納期お問い合わせ」って書いてあるけどすぐに発送されました。
online.plathome.co.jp
ちなみに価格が税込み16200になっていますが、実際に買うと送料1000円(+消費税80円)かかって総計は17280円になります。

他にも探すと東芝のドングルとか出てるんだけど買い方がわからん。

届きました。

繋いでみる。

[walkure@altair]~% dmesg
(中略)
[    3.370616] usb 1-1.2.1: new full-speed USB device number 6 using dwc_otg
[    3.518316] usb 1-1.2.1: New USB device found, idVendor=0403, idProduct=6001
[    3.527341] usb 1-1.2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    3.538313] usb 1-1.2.1: Product: FT232R USB UART
[    3.544866] usb 1-1.2.1: Manufacturer: FTDI
[    3.550802] usb 1-1.2.1: SerialNumber: ほげほげ

BP35A1とUSBの変換は、この手の用途で定番のFT232を使っているようです。なので、デバドラなどを探す必要が無いから楽。

楽なんですが、定番なのでFT232を複数個ぶら下げるとttyUSBが区別できなくなる。
そこで、udevでデバイパーミッションの設定をする際のATTRSにidVendorとidProductと、もう一つserialを加えて識別することに。serialは前掲のdmesgにも出てますし、udevadm infoで見ても良い*1

[walkure@altair]~% cat /etc/udev/rules.d/61-FT232.rules
ATTRS{idVendor}=="0403",ATTRS{idProduct}=="6001",ATTRS{serial}=="ほげほげ",KERNEL=="ttyUSB*",SYMLINK+="ttyWiSUN",MODE="0666"

udev周りの参考
http://kuma35-memo.readthedocs.io/en/latest/fix-devicename.html

で、デバイスが見えたところでターミナルエミュレータminicom使って適当にお話が出来るのを確認。

観測する

minicomで情報取れたので、前掲のblogとECHONET Liteの仕様書、そしてSKSTACKの説明を元にちまちまとperlで読み出す実装を書いてみた。

スマートメータとUDP(SKSTACKがtelnetで伝えてくる)で会話して、Zabbixエージェントで観測することを前提にしています。ログ取りの選択肢はいくつかありますが、最近仕事でZabbixと戯れてるのでZabbixにしました。

github.com

Zabbixでグラフ書くとこんな感じになります。Zabbixには室内と室外の気温も監視させてるので、エアコンの動きがわかって面白いですね。
f:id:W53SA:20160819230044p:plain

電気代は描画するとこんな感じになります。
f:id:W53SA:20160819230416p:plain
月途中からの観測開始なので、先月分の電気代請求書に書いてあったメータ読み値を別途DB放り込んで算出しています。ちなみに締め日はWeb見たら割とバラバラだったんですが実装では26日固定です。

電気代が(たとえば)4000円越えたら警告みたいなことを最初考えてたんですが警告されたところで暑いもんは暑いんだしどうしよって感じ。

*1:ID_SERIAL_SHORTにあたる。