セカイノカタチ

世界のカタチを探求するブログ。関数型言語に興味があり、HaskellやScalaを勉強中。最近はカメラの話題も多め

スマートメーターから消費電力を取得してMetabaseでグラフ化した

久しぶりにプログラミング的な話題です。

最近、各ご家庭の電気メーターは、スマートメーターに置き換わっているようで、電力会社の検針とかが楽になるっぽいですが、ついでに「Bルートサービス」というサービスがあって、電気の利用者が電気メータの利用状況をリアルタイムに取得することができます。

電力会社へ情報を送るのがAルートで、家庭内に送るのがBルートという事らしいです。申し込むとIDとパスワードが発行されて使えるようになります。各社申し込み窓口を用意していると思いますので、お住いの地域の電力会社のHPなどを確認すると良いと思います。ちなみに自分の場合は、東京電力はWebで完結しましたが、東北電力は申込書を印刷して郵送でした。正確にはサポート窓口に電話して「え?」とか言われてドギマギした対応の上、担当部署から折り返し電話が来て、ようやく申込書の送付先を教えてもらえる感じでした。東北地方にはスマートメーターのBルートを利用しようとする人があまりいなかったようです。

スマートメーターは、外部危機から無線接続できるようになっていて、申し込みで貰えるのはそのためのIDとパスワードになります。接続するためには、Wifiとは違う規格の無線機器が必要になるので、購入する必要があります。

自分は、チップワンストップで、これを購入しました。

www.chip1stop.com

実は、今回のチャレンジを行うにあたり、下記のQiita記事を参考にさせてもらっています。ここで紹介されていた一番安い機器という事で購入しました。

qiita.com

この記事の通りに進めたらうまくいったので、素晴らしいです。感謝しかありません。

ということで、電力会社からIDとパスワードが届いて、USBドングルが届いたら準備完了です。

接続する

ドングルが届いたら開封してマシンに刺します。見た目はUBSメモリーみたいな機器です。

Linuxだとcuというコマンドがあってシリアルポートにコマンドが送れます。

cu -s 115200 -l /dev/ttyUSB0

「SKVER」と入力してエンターを叩くと何やらバージョン番号が表示されたら、とりあえず疎通確認は成功です。

シリアル通信機器というのは、古式ゆかしき仕様の周辺機器で、古くて遅いですが、仕組みが単純なんで案外あっさり繋がります。

シリアル通信って素晴らしいと思いました。

使う

上記サイトのソースコードにエラー処理や、積算電力量の取得処理などを加え、MySQLに投げるところまで機能追加したコードをgithubに公開しました。

github.com

自分のご家庭では、リモートのMySQLサーバーにデータを投げたかったので、sshトンネリングもしています。あと、実験でFirebaseの Cloud Firestore にも投げられるコード片が埋まっています。試したい方はどうぞ。

Metabase でグラフ化する

Metabase は、OSSなデータ可視化ツールです。本格的なデータ分析が簡単に行えるツールで、jarを展開して起動するだけです。

metabase.com

後は、「http://localhost:3000」にアクセスすると初期アカウント作成に移るので、作成してログインして使うだけです。DB接続も設定を作ればすぐできますし、グラフ化も適当にポチポチいじっていると出来ると思います(適当すぎる?)。

そうすると、こんな感じで電力消費量をグラフ化できる!やった!!

f:id:qtamaki:20190619195953p:plain

感想

やってみた感想ですが、「やってみてよかった」と思いました。

普段から「節電しなきゃ」という気持ちは心のどこかにあるのですが、電力消費量が分からないので、何が電力を消費しているのか?は、うすぼんやりとしかわかりません。

リアルタイムにフィードバックがあると、必要な処置というのもより具体的にハッキリとわかります。

現状のソースコードでは、非エンジニアの方にはちょっとハードルが高いと思いますので、できればもっと簡単に使えるように改良したいという気持ちです。