必要なもの
- BルートのIDとパスワード
- Wi-SUNの通信デバイス
- プログラムを実行するPCなど
BルートのIDとパスワード
契約している電力会社に申請します。
僕の場合は東電エリアなので以下のURLから申請を行いました。
2週間ほどで書面にいてBルートに接続するためのIDが送られてきます。
パスワードはメールにて送付されますので、IDと併せて大切に保管しましょう。
Wi-SUNの通信デバイス
僕はテセラテクノロジーのRL7023(8,000円 [税抜])を購入しました。
USBタイプのものは他にもいくつか製品がありますが1万円を超えるものばかりなので、この製品が最も安価だと思います。
プログラムを実行するPCなど
通信デバイスがUSBドングルタイプなのでPCでもMacでも何でも良いですが、僕は手元にRaspberry Pi 3Bが余っていたのでこれを使いました。
OSはRaspbianです。
Node.jsを入れたり、npmでモジュール追加したりするのでインターネットに繋がるくらいにはセットアップしておきます。
開発
Node.js
apt-getするとv10が入ったので、最新安定版のv12を使うためにnodenvを使うことにします。
nodenvからv12.16.2をインストールしました。
RL7023をRaspberry Piにセット
普通に挿しただけで使えるようになります。
シリアルポートを確認するには以下のようなコマンドで確認してみましょう。
pi@raspberrypi3:~ $ ls -l /dev/serial/by-id/usb-FTDI_FT230X_Basic_UART_DJ00RTB4-if00-port0
lrwxrwxrwx 1 root root 13 4月 21 17:17 /dev/serial/by-id/usb-FTDI_FT230X_Basic_UART_DJ00RTB4-if00-port0 -> ../../ttyUSB0
この場合は/dev/ttyUSB0
を使います。
Node.jsでシリアルポートに接続
serialportというモジュールを使います。
import SerialPort from 'serialport'
const port = new SerialPort('/dev/ttyUSB0', {
baudRate: 115200,
});
そして
port.once('open', async () => {
// Bルート認証パスワード設定
port.write(Buffer.from('SKSETPWD C <Bルートのパスワード>\r\n'))
// Bルート認証ID設定
port.write(Buffer.from('SKSETRBID <BルートのID>\r\n'))
}
というようにシリアルポートにメッセージを送って応答を受け取っていくのが基本になります。
積算電力量計測値履歴1
当日から99日前までの任意の1日の積算電力量を30分区切りで取得できます。
積算電力量なので、過去から未来にかけて増えていくものですが、例えばとある日の0時0分~0時30分時点の積算電力量を次の区切りである0時30分~1時00分の積算電力量から減算すれば、0時0分~0時30分の間で消費した電力がわかります。
こうして見える化できれば、電気代の高い昼間に沢山電気を使っていることがわかるので、洗濯機や掃除機の使用は昼間ではなく朝夕に変えようかな、といった具体的な行動に移すキッカケになると思います。
特に今は緊急事態宣言が発布されているので、在宅勤務をしている人も多いのではないでしょうか。
となると必然的に日中はPCをつけっぱなしになったりするわけで、平時よりも電気代は高くなっているはずですよね。
作ったソースコードは以下のリポジトリに置いてあります。
https://github.com/chaki1019/broute-js
今後
データを取得することができたので、今後は貯めて可視化することを狙っていきます。
貯める場所についてはまだ決めていませんが、クラウドのマネージドサービスを使いたいなあと思ってはいます。
最有力なのはAmazon DynamoDBかな。
参考
ここにある公式なドキュメントが参考になります。
https://echonet.jp/spec_v112_lite/
今回Bルートをやろうと思った背景などは別途ブログに書いています。
もし良かったら見てやってくださいませ。