1
1

More than 1 year has passed since last update.

電力スマートメータとの通信をする機能が単体で利用できるものを,npmライブラリを開発・公開したので使い方を説明します。

パッケージ情報

基本的な使い方はこのREADMEに書いてありますが,一応こちらでも記事にしてみます。

事前準備

  1. Bルート認証ID設定とBルート認証パスワード設定の準備: お住まいの管轄の電力会社に連絡してBルート認証ID設定とBルート認証パスワード設定をもらってください。 小口契約(ドコモ電気とかそういうやつ)ではなく,最終的な電力会社(東京電力とか,そういう日本に11社くらいある大きいところ)です。電力メータの管理者にあたります。 そこそこ時間がかかります。
  2. Wi-SUNドングルの購入: スマートメータはWifiとかBluetoothとかではなくて,Wi-SUNという電波規格で通信します。普通のパソコンにはこの機能がないので,USBタイプのドングルを購入しましょう。このライブラリでは下記の2種類のデバイスでテストしているので,好きなほうを購入して使ってください。

(なお,このメーカー様と私は一切関わりがありません。デバイスに関する技術的な事の質疑は出来ませんし,これを使用したことによる責任や保証は私にはできません。また,私の記事やライブラリの利用についてメーカー様に質問しても何もご回答いただけないと思われます。常識と思いますが,一応。)

インストール方法

このコマンドでインストールします。

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( ... );
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1