照明を制御[Processing -> Philips hue]_その1


開発環境


言語

- Processing 3.1.1

eclipseを使用し、core.jarをインポートした環境でコーディングしているため、ProcessingのIDEでは実行できません。

参考URL

http://hiroyukitsuda.com/archives/1721

- java 1.8.0_91

Processingで使用しているバージョン

照明

- Philips Hue スターターセット v2

OS

- macOS sierra 10.12.2


hueのデバッグ画面にアクセスする。


hueのIPアドレスを調べる

次のURLにアクセスすると、IPアドレスが表示されます。

 

https://www.meethue.com/api/nupnp

[{"id":"xxxxxxxxxxxxxxxx","internalipaddress":"192.168.0.13"}]

hueのデバッグ画面を表示する

次のURLにIPアドレスをブラウザで指定しアクセスするとデバック画面が表示されます。

 

http://[hueのIPアドレス]/debug/clip.html



ユーザを作成


失敗例

サイトで紹介してくれている記事を参考に次の内容でユーザ作成すると

「Command Responseでparameter, username, not available」のエラーで失敗します。

 

以下、内容でPOST送信する。

URL:

/api

Message Body:

{"devicetype": "Procesing", "username": "test_user"}

Method:

post

Command Response:

[
        {
                "error": {
                        "type": 6,
                        "address": "/username",
                        "description": "parameter, username, not available"
                }
        }
]

エラーの原因を調べてみると、usernameのパラメータが使用できないようになったようです。

どのバージョンからは不明ですが、以下サイトを参照にしてください。

そのため、ランダムで設定されたユーザを使用します。

https://developers.meethue.com/documentation/important-whitelist-changes

 

api仕様

成功例

apiの仕様通り、devicetypeに<application_name>#<devicename>を指定しユーザを作成すると

link button not pressedのエラーが出力されるので

hueブリッジのリンクボタンを押してから、もう一度送信すると

ランダムなユーザネームを取得する事ができます。

URL:

/api

Message Body:

{"devicetype": "Processing_test_app#mac tetsu"}

Method:

post

結果:リンクボタンエラー Command Response:

[
        {
                "error": {
                        "type": 101,
                        "address": "",
                        "description": "link button not pressed"
                }
        }
]

結果:成功

[
        {
                "success": {
                        "username": "bqpn9A3MgqjglZ-oKpfHyOgA2sRsIJs4qOu7RvKH"
                }
        }
]

照明を制御


api仕様

ライトを点灯

次のURLで

/api/{ユーザ名}/lights/{電球のID}/state

Message Bodyに「"on": true」

を指定。

URL:

/api/bqpn9A3MgqjglZ-oKpfHyOgA2sRsIJs4qOu7RvKH/lights/2/state

Message Body:

{"on": true}

Method:

put

Command Response:

[
        {
                "success": {
                        "/lights/2/state/on": true
                }
        }
]

ライトの色を変更

Message Bodyに指定した「"on": true」に加えて

「"hue": 0, "bri": 255, "sat": 255」

を指定する事により、赤色で点灯します。

 

Hueでは、HSBカラーモデルのhue(色相:0~65535)、sat(彩度:0~254)、bri(明度:0~254)の3つの属性値でライトの色を指定します。

URL:

/api/bqpn9A3MgqjglZ-oKpfHyOgA2sRsIJs4qOu7RvKH/lights/2/state

Message Body:

{"on": true,"hue": 0, "bri": 254, "sat": 254}

Method:

put

Command Response:

[
        {
                "success": {
                        "/lights/2/state/on": true
                }
        },
        {
                "success": {
                        "/lights/2/state/hue": 0
                }
        },
        {
                "success": {
                        "/lights/2/state/sat": 254
                }
        },
        {
                "success": {
                        "/lights/2/state/bri": 254
                }
        }
]