Help us understand the problem. What is going on with this article?

4. echonet-lite-convの使い方

More than 3 years have 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すれば解析結果がコールバックされるよ。
Sugimura-Laboratory
ホームエレクトロニクス開発学科です。家電の学科ですよ~
https://www.he.kanagawa-it.ac.jp/~sugimura/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away