CybeleでHueを制御する

投稿日:2019年04月15日 08時54分35秒

Hueって知ってますか?philipsから発売されているIoTのLEDライトです。…ざっくり書いても何も伝わりませんね。LEDの電球なんですが、別売のコントローラからON/OFF、輝度、色相なんかがコントロールできるもんです。コントローラはローカルのLANに接続され、コントローラから電球はLow power bluetoothで接続されます。さらに電球から電球の間もbluetoothでつながるので、ある程度の電球を数用意しておくとどれだけ広い部屋でも全部制御できるってわけですね。

Raspberry PIからPhytonで制御する記事とか散見しますが、今回はアプリケーションサーバCybeleから制御します。RaspberryPI版のCybele使えばそのままいけると思いますが、とりあえずWindows版でやります。

Hueってどうやって制御するんでしょうか。どうやらHttp RestfulなAPIがあるようです。よってまずはコントローラのアドレスを調べます。ここはuPnP Discoveryでアドレスを取ります。Cybeleからはssdp関数でデータを取得します。

var data = eval(ssdp());

ssdpはuPnPでM-SEARCHをマルチキャストした結果をJSONの配列で返します。よってdataは文字型の配列になります。このなかにHueという文字列があればHueからの返信となります。Locationが含まれる行を見てもいいですがいきなりhttp://を探します。これからアドレスを取得します。
取得したアドレスにデバイスタイプをPOSTで問い合わせると、コントローラで使用可能なユーザ名を返してきます。ただしコントローラのリンクボタンを押下する必要があります。リンクボタンが押下されてない場合にはその旨がエラーメッセージに入るので、適宜リンクボタンを押下したのちに再度実行します。するとユーザ名が返ってきます。
あとはhttpのAPIに取得したユーザ名をアドレスに入れて、状態の取得、設定ができます。
取得はGET,設定はPOSTデータはJSONとなります。
とても簡単ですね。

[<< 人工知能は避けて通れない]

[centos8初期化覚書 >>]