電力スマートメータとの通信をする機能が単体で利用できるものを,npmライブラリを開発・公開したので使い方を説明します。
パッケージ情報
基本的な使い方はこのREADMEに書いてありますが,一応こちらでも記事にしてみます。
事前準備
-
Bルート認証ID設定とBルート認証パスワード設定の準備:
お住まいの管轄の電力会社に連絡してBルート認証ID設定とBルート認証パスワード設定をもらってください。
小口契約(ドコモ電気とかそういうやつ)ではなく,最終的な電力会社(東京電力とか,そういう日本に11社くらいある大きいところ)です。電力メータの管理者にあたります。
そこそこ時間がかかります。 -
Wi-SUNドングルの購入:
スマートメータはWifiとかBluetoothとかではなくて,Wi-SUNという電波規格で通信します。普通のパソコンにはこの機能がないので,USBタイプのドングルを購入しましょう。このライブラリでは下記の2種類のデバイスでテストしているので,好きなほうを購入して使ってください。
- TESSERA RL7023
(https://www.tessera.co.jp/rl7023stick-d_ips.html) - ROHM BP35C2
(https://www.rohm.co.jp/products/wireless-communication/specified-low-power-radio-modules/bp35c2-product#productDetail)
(なお,このメーカー様と私は一切関わりがありません。デバイスに関する技術的な事の質疑は出来ませんし,これを使用したことによる責任や保証は私にはできません。また,私の記事やライブラリの利用についてメーカー様に質問しても何もご回答いただけないと思われます。常識と思いますが,一応。)
インストール方法
このコマンドでインストールします。
npm i e-smartmeter-echonet-lite
サンプルプログラム
app.js
//////////////////////////////////////////////////////////////////////
let eSM = require('e-smartmeter-echonet-lite');
////////////////////////////////////////////////////////////////////////////
// config
let config = {
donglePass: 'COM3', // ドングルのシリアルポート
dongleType: 'ROHM', // 'ROHM' or 'TESSERA',使ったメーカー
id:'01234567890QWERTYUIOPASDFGHJKLZX', // Bルート認証ID設定, Your B route ID.
password:'123456789ABC', // Bルート認証パスワード設定, Your B route password.
observationEPCs: ['80','81','82','88','8A','8D','97','98','9D','9E','9F',
'D3','D7','E0','E1','E2','E3','E4','E5','E7','E8','EA','EB','EC','ED']
}
// 初回起動のみ実施するためのフラグ, flag for first connection
let connected = false;
// 初期化, initializing
eSM.initialize( config, ( sm, rinfo, els, err) => {
try{
// 初回接続時, first connection
if( !connected && sm.state == 'available' ) {
connected = true;
// config.observationEPCsのEPCを定期的にGetする
eSM.startObservation( 60 * 1000 );
}
}catch(e){
console.error(e);
}
});
// 機器情報の変化の監視, observation for changing facilities
eSM.setObserveFacilities( 3 * 60 * 1000, () => {
console.log( '## == onChanged', (new Date()).toLocaleString(), '== ##' );
console.dir( eSM.facilities );
console.log( '## ============= ##' );
});
プログラム解説
この行で,スマートメータ通信ライブラリを使うことを宣言します。
宣言部分
let eSM = require('e-smartmeter-echonet-lite');
このconfig変数に,ユーザ毎の設定をしましょう。
ユーザ設定部分
let config = { ... }
この関数で,初期化,通信開始,受信したときの処理を書きます。
初期化,通信開始,受信データの処理
eSM.initialize( ... );
上の関数のところで,通信成功(初めての受信成功)したら定期的な監視をする設定をしています。
何をしてるかというと,60秒毎にobservationEPCsに設定したEPCに対してgetし続けるという設定です。スマートメータへのポーリング設定です。
定期的な監視(スマメのポーリング)
eSM.startObservation( 60 * 1000 );
もう一つ,定期的な監視の設定をしています。ライブラリ内部でスマートメータの全体情報を常に保持しているのでその変化を3分毎に監視しています。
定期的な状態監視(ライブラリ内部データのポーリング)
eSM.setObserveFacilities( ... );