Node.jsでBルートから消費電力を取得する

趣味

我が家の電気料金が高い!

我が家は三井ホームで建てた戸建て住居で全館空調が入っており、かつオール電化ということもあって、ごく一般的な家庭と比較すると電力需要は大きいと思う。

特に夏冬の空調がガンガン稼働する時期は電気代が3万円を軽く超えてくる。

電力会社は東電エナジーパートナーで、電化上手というプランの契約になっている。
このプランは昼間>朝晩>夜間の3つの時間帯で料金が別れていて、この順に高い。

他のプランも検討してみたが、電化上手以上にお得なプランはなさそう。
全館空調は常時運転が基本らしいので(不快になるのも嫌だし)頻繁にON/OFFして節約することは避けたい。

ということで、将来的にはソーラーパネルを屋根に載っけて太陽光発電によって最も料金の高い昼間の買電量を減らしたいと考えている。
売電はせず、自家消費目的で。

もっと言えば、屋根に目一杯載せたソーラーパネルでどれだけ発電できるのか、使い切れないほど発電してくれるようなら、さらに買電量を減らせるよう蓄電池を追加で導入したいとも思っている。

蓄電池に関してはテスラのパワーウォールが容量あたりのコスパが最強で、2020年4月からやっと日本でも販売開始になるようなので、色々と事例が出てきたら第一候補として検討したい。

テスラの家庭用蓄電池「パワーウォール」を導入する際のメリットと ...

前置きが長くなったが、将来の太陽光発電に向けて、我が家の電力消費量と買電量をモニタリングできるようにしておきたいと思ったのがきっかけ。

今は電力消費量=買電量だけど、太陽光発電が入ったら電力消費量 ー 太陽光発電量=買電量となるはず。

というわけでまずは買電量をトレースできるようにする。

Bルートの申請とWi-SUNのUSBドングルモジュールの入手

Bルートの申し込み

東電の場合は下記リンクより申し込みが行える。

電力メーター情報発信サービス(Bルートサービス)|電力自由化への対応|東京電力パワーグリッド株式会社
東京電力パワーグリッド「Bルートサービス」ページ。東京電力パワーグリッド株式会社は、経済・産業の中心である首都圏エリアで、送配電ネットワークを活用し、電力の供給等を行う送配電事業会社です。

申し込み後、しばらくすると書面でIDが、登録したメールアドレス宛にパスワードが届くので大切に保管しておこう。

また、自宅の電力メーターがスマートメーターでない場合にはBルートの申し込みと同時にスマートメーターへの切り替え工事の申請もしたことになる。

工事とはいっても家の壁面に取り付けてあるメーターを交換するだけなので、立ち会いは不要なので在宅でないといけないということはない。

ちなみに無料で交換してくれます。

事前に書面で「〇月○日に取り替え工事しますね。ご不在でもやっておきますね。」旨な内容が書かれていたように思う。

    

(左が交換前、右が交換後)

USBドングルモジュール

Bルートでスマートメーターから情報を取得するにはWi-SUNという規格に対応した通信モジュールが必要。

複数メーカーから似た製品が発売されているけど、現在入手しやすくて最も安価なのは以下だと思う。

RL7023 Stick-D/IPS

単に電力消費量を見たいだけならでんき家計簿で見れるし、
フレッツ光 ミルエネとかNatureのRemo-eでも良いと思う。
初期コストがちょっとお高めだったり、ランニングコストがかかったりするけど、導入はすごく楽だと思う。

NTT東日本 | フレッツ・ミルエネ サービス内容 | フレッツ光
「サービス内容」(フレッツ・ミルエネ)のページです。FLET'S光で、光インターネットをはじめよう!光回線、Wi-Fi(無線LAN)、IP電話など【フレッツ光公式 | NTT東日本】
Nature Remo E(ネイチャーリモイー)
Nature Remo E(ネイチャーリモイー)は、家庭のエネルギーマネジメントを、安価で手軽に行える次世代型HEMSです。蓄電池や太陽光発電システムの稼働状況をリアルタイムに把握したり、過去の消費電力量のモニタリング、接続機器のコントロールが簡単に行えます。

僕の場合は電力消費データを貯めて、先々他のデータ(気温や天気、太陽光発電量などなど)をまとめてグラフ化してダッシュボード作りたいと思っているのと、手元に使ってないRaspberry Pi 3Bがあったのでこいつで遊びたいと思ったから。

Raspberry Pi 3B

スマートメーターとUSBドングルの間でデータ送受信を行うプログラムを書くことになる。
先人達のナレッジがインターネット上にはゴロゴロとあるので感謝しかない。

特に以下の記事はとても参考にさせていただいた。

スマートメーターの情報を最安ハードウェアで引っこ抜く - Qiita
はじめに 電力自由化にともない、スマートメーターの設置が進められています。 電力会社が設置したスマートメーターと、各社から販売されているHEMS見える化端末的なモノを導入すると消費電力などをリアルタイムに見ることができるように...
M5Stackでスマートメーターの電力量を取得してAmbientでグラフ表示 - Qiita
はじめに 前回の記事M5Stackでスマートメーターの瞬時電力をBP35A1から取得して表示してみたの続きです。 今回は瞬時電力量, 定時積算電力量計測値 をBP35A1経由で取得して、Ambientという簡単にデータを...
RaspberryPiでスマートメータの電力を取得する - Qiita
電力自由化によって電力会社を選べるようになったものの 我が家で契約している半日お得プランよりお得なプランは無さそう シミュレーションも従量制のみで他のプランのシミュレーションは出てこない。。 そんな中色々と調べてみると、以下のページ...

この他にもいくつか記事が存在するが、ほとんどがPythonで書かれたコードだった。

僕は個人的に好きなJavascriptで、つまりNode.jsで動かしたいのだが、こちらはPythonに比べてとても情報が少ない。

加えてBルートで通信するための仕様がEchonet Liteというもので、これが日本独自のものっぽいので海外の情報はヒットしない。
少ないながらもほぼ唯一といっても良い情報がこちら。

こちらのソースコードをcloneさせてもらって起動してみたところ、完走せずにどこかで止まってしまっている様子…

コードを眺めているとRL7023以外のモジュールにも対応していたり、シリアル通信以外の方式にも対応していたりで、スマートメーター含めたEchonet Lite全般に対応されているライブラリっぽいので、ただ消費電力を取りたいだけの目的にはちょっと大げさかもしれないと思い、コードを参考にさせていただきながら自分に必要な処理だけをゼロから書くことにした。

開発

準備

OSはRaspbianでインターネット接続が可能なところまでセットアップ。
Node.jsで開発するので、nodeおよびnpmをインストール。
ただapt-getで入れるとv12ではなくv10が入ったので、nodenvをインストールしてその上でv12を動かすことにした。

開発

ソースコードは以下に置いてあるので見てもらうのが早いと思う。

npmでserialportを追加して使っているくらいで、基本は電文送って応答捌いてって感じ。

最後に日時で出力するためにdayjsを入れて使っているけど、電文処理自体にはまったく必要のないものなので不要なら削除で良いです。

スマートメーターからは他にも瞬時電力計測値売電量なども取れるみたい。

基本的にSKSENDTOあたりの電文を弄ってもらえればデータを取得できるようになると思う。

★全体的にエラー処理は甘いけどご勘弁を…

GitHub - chaki1019/broute-js
Contribute to chaki1019/broute-js development by creating an account on GitHub.

アウトプットイメージ

このプログラムでは2日前積算電力量計測値履歴1というデータを取得するようにしており、これによって30分区切りで24時間分の消費電力が取れる。

なので、実際に運用するにはcronで日次実行すれば良いはず。

あと肝心のデータをどこに置くかだけど、インターネット越しにダッシュボードとか見れるようにしたいので、データベースもクラウドに置いた方が使い勝手が良さそう。

今のところDBのマネージドサービスを使うのがベターかと思っていて、無償で使える範囲が実用的っぽいのは以下3つ。

Amazon DynamoDB

Azure Cosmos DB

MongoDB Atlas

参考

ECHONET

ECHONET Lite 通信ミドルウェア仕様(PDF)

ECHONET 機器オブジェクト詳細規定 Release H(PDF)

コメント

タイトルとURLをコピーしました