Hueを最近触ってるのでCylon.js経由で操作してみます。
あと、Milkcocoaも使ってWebとつなげてみたいと思います。
Philips Hue
Webの人向けに簡単に言うとプログラミングで制御できる照明です。
http://www2.meethue.com/ja-JP
過去のIoTLTでカヤックのネロさんがデモを見せてくれてましたが、Web開発者でも扱いやすいAPIインターフェイスがあるのが特長です。
HTTPリクエストでAPIを叩けるのでどんな言語でも問題無く制御できると思います。
Cylon.js
前にJSオジサンで紹介したNode.jsのIoT向けフレームワーク(ライブラリ)です。
Hue向けのアダプタも存在します。
HueのAPIを使うにあたって
色々遊べるハイテク照明 「Philips hue」のAPIを叩いてみた。
こちらのブログを参考にしました。
ユーザー名とhueブリッジのIPアドレスを確認しましょう。
Cylon.jsでHueを操作してみる。
- 準備
npm経由でいつもどおり
$ npm install cylon cylon-hue
var Cylon = require('cylon');
Cylon.robot({
connections: {
hue: { adaptor: 'hue', host: '192.168.1.85', username: 'XXX' }
},
devices: {
bulb: { driver: 'hue-light', lightId: 2 }
},
work: function(my) {
every((1).second(), function() {
my.bulb.toggle();
});
}
}).start();
サンプルどおりに書いて実行します。
$ node hue-cylon
会社の電球につけてやってみました↑
簡単です。
MilkcocoaとつなげてWebから操作
Milkcocoaはリアルタイム通信/IoT向けのバックエンドを提供してくれるサービスです。
いつも思うけど、Milkcocoaのトップページのドット絵と連携すると、Web側を作らなくていいから凄く楽ですw
$ npm i milkcocoa
var Cylon = require('cylon');
var Milkcocoa = require('milkcocoa');
var milkcocoa = new Milkcocoa('dogi9jz8c16.mlkcca.com');
var ds = milkcocoa.dataStore('dots');
var hue;
Cylon.robot({
connections: {
hue: { adaptor: 'hue', host: '192.168.2.2', username: 'newdeveloper' }
},
devices: {
bulb: { driver: 'hue-light', lightId: 1 }
},
work: function(my) {
my.bulb.turnOn(); //点灯
hue = my; //hue変数に操作メソッド諸々を渡しておく
}
}).start();
ds.on('push',function(data){
switch (data.value.color){
case '#ce071b':
console.log('赤');
hue.bulb.rgb(255,0,0); //赤
break;
case '#fdbc00':
console.log('黄');
hue.bulb.rgb(255, 165, 0); //黄
break;
case '#097b28':
console.log('緑');
hue.bulb.rgb(107, 142, 35); //緑
break;
case '#0f5aa6':
console.log('青');
hue.bulb.rgb(30, 144, 255); //青
break;
default:
hue.bulb.rgb(255, 255, 255);
break;
}
});
実行するとこんな感じです。
Milkcocoaのトップページのドット絵は操作するとpushイベントが発火してdata.value.color
に色の情報が渡ってくるのでハンドリングしています。
APIドキュメントとかをそこまで読んでないのでこんな感じで振り分けてるけど、16進の値をそのまま色情報に渡せるメソッドもあるかも
http://www.developers.meethue.com/documentation/core-concepts
##まとめ
HueのAPIがHTTPリクエストで叩けるのがいいですね。
BLEだけじゃなくてこういったインターフェイスも増えてくるとJavascriptだけじゃなくてPHPとかでもIoTできそう。