0.0.5 • Published 8 years ago

hue-echonet-lite v0.0.5

Weekly downloads
1
License
MIT
Repository
github
Last release
8 years ago

Overview

このモジュールはPhilips hueをECHONET Liteプロトコルに対応させるプログラムを作るものです. ECHONET Liteプロトコルはスマートハウス機器の通信プロトコルです.

内部ではnode-hue-apiとechonet-liteモジュールに依存しています.

The module 'hue-echonet-lite' depends on node-hue-api.js and echonet-lite.js.

Install

下記コマンドでモジュールをインストールできます.

You can install the module as following command.

> npm install node-hue-api
> npm install echonet-lite
> npm install hue-echonet-lite

Demos

// ECHONET Lite
var EL = require('echonet-lite');
objList = ['029001', '029002', '029003'];

// Philips hue
var hueEL = require('hue-echonet-lite');
hueEL.initialize("hue-developper", 3, EL);  // developer name, number of lightings

// ノードプロファイルに関しては内部処理するので,ユーザーはエアコンに関する受信処理だけを記述する.
var elsocket = EL.initialize( objList, function( rinfo, els ) {

	switch( els.DEOJ ) {
	  case '029000':  /// 一般照明か確認しておく
	  case '029001':
	  case '029002':
	  case '029003':
		hueEL.ELprocess( rinfo, els );
		break;

	  case '0ef000':  // ノードプロファイル
	  case '0ef001':
		break;

	  default:
		console.log( "EOJ is not found: " + els.DEOJ );
		break;
	}

	// console.dir( EL.facilities );
});

//////////////////////////////////////////////////////////////////////
// 全て立ち上がったのでINFで照明ONの宣言,本当はゲートウェイから点灯状態を持ってくるべきかも
EL.sendOPC1( '224.0.23.0', [0x02,0x90,0x01], [0x0e,0xf0,0x01], 0x73, 0x80, [0x30]);
EL.sendOPC1( '224.0.23.0', [0x02,0x90,0x02], [0x0e,0xf0,0x01], 0x73, 0x80, [0x30]);
EL.sendOPC1( '224.0.23.0', [0x02,0x90,0x03], [0x0e,0xf0,0x01], 0x73, 0x80, [0x30]);

Data stracture

各hueのライトは下記のオブジェクトを基礎として生成されます。

// 照明オブジェクトのクラス(のようなもの)
var lightingsObj = {
	// super
	"80": [0x30],  // 動作状態
	"81": [0xff],  // 設置場所
	"82": [0x00, 0x00, 0x66, 0x00], // EL version, 1.1
	"88": [0x42],  // 異常状態
	"8a": [0x00, 0x00, 0x77], // maker code
	"9d": [0x04, 0x80, 0xc0],        // inf map, 1 Byte目は個数
	"9e": [0x04, 0x80, 0xc0],        // set map, 1 Byte目は個数
	"9f": [0x0b, 0x80, 0x81, 0x82, 0x88, 0x8a, 0x9d, 0x9e, 0x9f, 0xb6, 0xc0], // get map, 1 Byte目は個数
	// child
	"b6": [0x45], // 点灯モード設定
	"c0": [0x40, 0x40, 0x40] // カラー灯モード時RGB設定
};

このオブジェクトが配列になったものが,

HC.lightsArray: []

です。

APIs

//////////////////////////////////////////////////////////////////////
// 基本的なAPI

// initialize
HC.initialize = function(developper, num, el)
// 全情報のJSON取得
HC.getHueJSON = function(callback)


//////////////////////////////////////////////////////////////////////
// 電源状態
HC.setHueOn = function(channel)
HC.setHueOff = function(channel)
HC.getHueOnOff = function(channel, callback)


//////////////////////////////////////////////////////////////////////
// HSV形式
HC.setHueHue = function(channel, hue)
HC.setHueSaturation = function(channel, saturation)
HC.setHueBrightness = function(channel, brightness)
HC.setHueHSV = function(channel, hue, saturation, brightness)
HC.getHueHSV = function(channel, callback)


//////////////////////////////////////////////////////////////////////
// RGB入力を受けつけて内部ではxyYに変換して利用する,ただしYはbri
HC.setHueRGB = function(channel, red, green, blue)
// xyYをとってRGBをゲットする,ただしYはbri
HC.getHueRGB = function(channel, callback)


//////////////////////////////////////////////////////////////////////
// XY方式
HC.setHueXY = function(channel, x, y)
HC.getHueXY = function(channel, callback)

攻略情報

Demosを見てください。 なお,RGBとHSV,xyYに関する計算についてはPhilips Hueスターターセットに入ってるランプの測定値から式を作っています。 この電球は緑を持っていないのでGが出ませんし,実はランプそのものがy=2.0のガンマ特性を持っているので,そのあたりの補正が入っています。 Philips Hue Lightstripあたりを使う場合は通常のRGB LEDランプのように使用できると思いますから,計算式を変えたほうがよいかもしれません。

Author

神奈川工科大学 創造工学部 ホームエレクトロニクス開発学科.

Dept. of Home Electronics, Faculty of Creative Engineering, Kanagawa Institute of Technology.

杉村 博

SUGIMURA, Hiroshi

Log

0.0.5 developer nameを確認するようにした。lan内に複数ブリッジある時にうまくゆく。

0.0.4 dependenciesが理想とちがったのでやめる。

0.0.3 bug fix

0.0.2 node-hue-api 2.3.0に対応,dependenciesの追加とnupnpSearch対応。

0.0.1 とりあえず作る.

0.0.5

8 years ago

0.0.4

8 years ago

0.0.3

8 years ago

0.0.2

8 years ago

0.0.1

8 years ago