Posted at

4. echonet-lite-convの使い方

More than 1 year has passed since last update.


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すれば解析結果がコールバックされるよ。