凹みTips

C++、JavaScript、Unity、ガジェット等の Tips について雑多に書いています。

node-iRemocon つくった

はじめに

前回(http://d.hatena.ne.jp/hecomi/20120930/1349018540)、iRemocon の IP 調べるのどうやれば良いのかな…、という締めだったので、やってみました。ついでに iRemocon を便利に使える Node.js モジュールも書きました。
iRemocon?という方は一番下の補足を御覧ください。

インストール

$ git clone git://github.com/hecomi/node-iRemocon
$ cd node-iRemocon
$ npm install

使い方

まず、以下のようにモジュールを読み込みます。

var iRemocon = require('iRemocon')
  , iremocon = new iRemocon('192.168.0.2') // iRemocon の IP を指定
;

あとは iRemocon のコマンドを叩けば OK です。コマンドはひと通り揃えてあります。
各コマンドの詳細については公式サイトのマニュアルをご参照ください m(_ _)m。

まず、例として接続確認の au コマンドを叩いてみます。

iremocon.au(function(err, msg) {
	if (!err) console.log('DETECTED!');
})

すべてのメソッドにはコールバックを指定することができ、コールバック時のエラーは code, error, detail の3つの情報を保持しています。
例として赤外線信号の学習コマンド ic を叩いてエラーを見てみます。

// code   : エラーコード(999 は iRemocon で定義されていないエラー)
// error  : エラーの概略
// detail : エラーの詳細
iremocon.ic(1 /* 1〜1500 の ID */, function(err, msg) {
	if (err) {
		console.error(err.code, err.error, err.detail);
		// e.g. 003 受信エラー 不正なリモコンデータを受信した
		return;
	}
	console.log(msg);
	// e.g. ic;ok
});

エラーは公式マニュアルに書いてある文言が表示されます。
コールバックは省略することもできます。

iremocon.is(1);

で、お待ちかねのネットワーク内の iRemocon を見つけ方です。これかな?という IP をぐわっ配列に突っ込んで、その IP へ順番に au コマンドを送って、iRemocon の応答があれば即座に探索を中止、その IP をコールバック経由で返してくれます。

var iRemocon = require('iRemocon');

var ips = []
for (var i = 1; i < 255; ++i) {
	ips.push('192.168.0.' + i);
}
iRemocon.search(ips, function(ip) {
	var iremocon = new iRemocon(ip);
	iremocon.is(10);
})

という感じでできます。

おわりに

エラーテーブル作るのが苦行だった…。

補足

iRemocon はネットワークにつながる学習リモコンです。

iPhoneiPad から外出先でも操作できたりと便利です。またローカルネットワーク内の仕様が公開されているので、色々と遊ぶことができます。

今回は、仕様を元に Node.js から簡単に iRemocon を利用できるようにしてみた、という内容です。