前回はechonet-liteモジュールのサンプルをそのまま動かしてみて,ネットワーク内の機器を発見してみた.
前回
「1. Node.jsのJavaScriptでECHONET Liteっていうネットワーク家電をコントロールしてみよう的な話」
今回は実際に空気清浄機を動かしてみたいとおもうのです.
前提条件
-
Windows
-
Node.jsはインストール済み
-
記事時点でのバージョンは,
- node v4.4.5
- npm v 2.15.5
- echonet-lite v0.0.12
-
使用する空気清浄機は,
- Sharp KI-EX100
- 家電ワイヤレスアダプター HW-A01
- ECHONET Liteモード設定のために,スマートフォンとスマートフォン専用アプリ「ココロボ~ド」
空気清浄機の設定
Sharp KI-EX100はECHONET Lite対応していますね.
Webサイトにもマークがついています.
しかし,この機器は最初シャープクラウドモードになっているので,ECHONET Liteモードに設定を変更する必要があります.
シャープ公式WebサイトのHW-A01のECHONETLite機能について解説されているページをそのまま参照して設定しましょう.
[HW-A01のECHONETLite機能について]
(http://www.sharp.co.jp/support/hms/doc/econetlite01.html)
- 無線LANボタンを押しながら電源スイッチを入にしてください。電源ランプと無線LANランプが点灯します。
- そのまま無線LANボタンを離さず3秒待つと、無線LANランプが点滅します。
- ボタンから手を離してください。以下のどちらかの状態になれば、「ECHONETLiteモード」に設定されています。
Node.jsでのECHONET Liteプログラミング
今回もNPMのechonet-liteモジュールを使っていきます.
Node.jsで簡単なECHONET Lite通信プログラムを作ってみましょう.
まず,新しいフォルダを作ってそのフォルダに移動しておきます.
ここでは下記のフォルダを作業フォルダとして進めます.
C:\SimpleEL2
echonet-liteというモジュールを利用しますが,このモジュールはインターネットでインストールする必要があります.
プログラムのフォルダにインストールするので,新しいプログラムを作るたびにインストールが必要です.
下記コマンドでインストールしましょう.
C:\SimpleEL> npm install echonet-lite
下記のようなプログラムを「SimpleEL2.js」として作成してみます.
文字コードはUTF-8Nで改行コードCrLfが僕は好きです.
//////////////////////////////////////////////////////////////////////
// EL最小構成
var EL = require('echonet-lite');
var objList = ['05ff01'];
var elsocket = EL.initialize( objList, function( rinfo, els ) {
console.log('----');
console.log( 'Found facilities are ' );
console.dir( EL.facilities );
});
//////////////////////////////////////////////////////////////////////
// 全て立ち上がったのでINFでコントローラONの宣言
EL.sendOPC1( '224.0.23.0', [0x05,0xff,0x01], [0x0e,0xf0,0x01], 0x73, 0x80, [0x30]);
// ネットワーク状況の検索と把握
EL.search();
// 空気清浄機操作をONにする
EL.sendOPC1( '192.168.2.150', [0x05,0xff,0x01], [0x01,0x35,0x01], 0x61, 0x80, [0x30]);
このスクリプトを動かすために下記のコマンドをコマンドプロンプトで実行します.
C:\SimpleEL> node SimpleEL.js
いかがでしょうか,ネットワーク内にあるECHONET Lite機器の状態を取得して出力できましたか?
もしECHONET Lite機器を持っていないのでしたら,次節のエアコンエミュレータを作成して別のパソコンで実行しておくとテストできます.
実行してみよー
こんな感じです.
ほそくー
今回は空気清浄機192.168.2.150のIPを持っていて,0ef001の中にいくつかプロパティ,013501の中にいくつかプロパティがあるのが分かります.
0ef001はノードプロファイルオブジェクトといってECHONET Liteノードとして生きていく中で必ず必要なものです.モジュールの中で自動的に処理してくれます.空気清浄機も持っていますね.
013501はECHONET Lite規格において空気清浄機と決まっています.
規格書のAppendixってのを見ると書いてあります.
次はECHONET LiteのJSONをもうちょっと人間にわかりやすいJSONに変換するプログラムあたりを記事にしてみたいです.