ECHONET Liteを解析するプログラムを使ってみる
ECHONET Liteを解析するためのechonet lite converterを使ってみるための情報です。
README.mdだけではわかりにくいとおもうので。
準備
console
> npm i echonet-lite
> npm i echonet-lite-conv
テストコード
test.js
var util = require('util');
var EL = require('echonet-lite');
var ELconv = require('echonet-lite-conv');
ELconv.initialize();
var objList = ['05ff01'];
var elsocket = EL.initialize( objList, function( rinfo, els ) {
// データを受信するたび,このブロックが実行される
});
// 10秒に1回情報を表示(内部データは常時更新されている)
setInterval(function() {
console.log('====');
ELconv.refer( EL.facilities, function( devs ) {
console.log(util.inspect(devs,false,null));
});
}, 10000);
EL.search();
実行
実行しましょう。受信待ちで無限ループになるので自動的には終了しません。
10秒待っていると出力されて,そのあとも10秒間隔で何度も出力されます。
満足したらCtrl-Cで終了しましょう。
> node test.js
出力
何も機器がなくても,自分がコントローラなので下記1つはあります。
IPアドレスは例です。実行環境に依存します。
output
====
{ IPs: [ '192.168.2.152' ],
'192.168.2.152':
{ EOJs: [ 'ノードプロファイル01(0ef001)' ],
'ノードプロファイル01(0ef001)':
{ EPCs:
[ '動作状態(80)',
'Version情報(82)',
'識別番号(83)',
'インスタンスリスト通知(D5)',
'自ノードインスタンスリストS(D6)',
'状変アナウンスプロパティマップ(9D)',
'Setプロパティマップ(9E)',
'Getプロパティマップ(9F)',
'メーカコード(8A)',
'自ノードインスタンス数(D3)',
'自ノードクラス数(D4)',
'自ノードクラスリストS(D7)' ],
'動作状態(80)': 'ON(30)',
'Version情報(82)': 'Ver. 1.10 規定電文形式(010A0100)',
'識別番号(83)': 'referSpec(FE00000000000000000000000000000000)',
'インスタンスリスト通知(D5)': 'keyValues(0105FF01)',
'自ノードインスタンスリストS(D6)': 'コントローラ01(0105FF01)',
'状変アナウンスプロパティマップ(9D)': '02[80, d5](0280D5)',
'Setプロパティマップ(9E)': '00[](00)',
'Getプロパティマップ(9F)': '09[80, 82, 83, 8a, d3, d4, d5, d6, d7](098082838AD3D4D5D6D7)',
'メーカコード(8A)': '学校法人幾徳学園 神奈川工科大学(000077)',
'自ノードインスタンス数(D3)': '1(000001)',
'自ノードクラス数(D4)': '2(0002)',
'自ノードクラスリストS(D7)': 'コントローラ(0105FF)' } } }
ポイント
- echonet-liteモジュール内部にある「EL.facilities」を読んでしまう事。EL.facilitiesは書き込んではダメよ,受信データと不一致が出てしまうよ。
- ELconv.referすれば解析結果がコールバックされるよ。