FC2ブログ

スポンサーサイト

k8

-
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Posted byk8

HUE REST APIでHA-Bridgeを制御する

k8

HA-Bridgeを用いることで、Alexaからオン、オフ、明るさの値、を受け取って各種制御ができる。これを用いてエアコンの制御をしたいと考えた。
エアコンの温度を明るさの値として制御する場合、エアコンで設定できる範囲外の値になった時に、値を修正できるようにしたい。

例えば、デバイスとして「エアコン」「温度」を用意する。
Alexaに「エアコンつけて」でエアコンをオンにする信号を送信する。
Alexaに「温度を20にして」で明るさ値=20として受け取って、エアコンの20度設定信号を送る。
Alexaに「温度を上げて」で温度を1度上げたいが、実際は明るさ値+25の値を受け取ることになり、エアコンに45度設定の信号を送ることになってしまう。

そこで
(a)明るさ値としてエアコンの設定最大値(30度)を上回った値を受け取った場合は、現在の温度に1度足した温度を送信
(b)明るさ値としてエアコンの設定最小値(16度)を下回った値を受け取った場合は、現在の温度に1度引いた温度を送信
(c)HA-Bridgeが保持する明るさ値を設定した温度と同じにする
という処理をしたい。温度16~30度の範囲であれば±25度されると必ず範囲外になるので「温度を上げて、下げて」のフレーズに対しては(a)または(b)の処理が可能である。
但し、(c)の処理をしないと設定した温度とHA-Bridgeの保持する値が異なってしまうため、正しい処理ができない。この処理をするのにHUE REST APIが必要である。
今回は、このAPIの使用方法についてまとめた。

(1)ユーザーネームを取得する
各種APIの使用には「ユーザーネーム」が必要である。以下のようにして取得する。
HA-Bridgeをブラウザに開き、Bridge DevicesのLinkボタンを押す。
Teratermで以下のように入力する。
pi@raspberrypi:~ $ curl -X post http://192.168.0.128/api
以下のような応答が帰ってくる。
[{"success":{"username":"0123456789abcdef0123456789abcdef"}}]
この0123456789abcdef0123456789abcdef(環境によって変わる)という値がユーザーネームである。

(2)HUE REST APIを使用する
主な使い方は、HA-BridgeのReadmeに書いてある。
https://github.com/bwssytems/ha-bridge#user-content-hue-rest-api-usage これらのAPIをRaspberry piのコマンドで実行するのに以下のようにcurlを用いる。

☆全ライトの状態を取得
pi@raspberrypi:~ $ curl -X get http://192.168.0.128/api/0123456789abcdef0123456789abcdef/lights

☆ID:2のライトをオンにし明るさを20%(256階調で51)に設定する
pi@raspberrypi:~ $ curl -X put http://192.168.0.128/api/0123456789abcdef0123456789abcdef/lights/2/state -d '{"on":true,"bri":51}'
-Xオプションでget,put,postの設定をする。続くURLはHA-BridgeのReadmeに書いてある通りに、ユーザーネームやライトのIDを入れる。
jsonのbody部分({}で括られている部分)は-dオプションで指定する。値はパーセントではなく256階調の値(0~255)で指定する。Alexaアプリ上ではパーセント表示になり、上記51の場合は20%となる。

次回、これを利用してHA-Bridgeによるエアコンの制御を完成させたい。
関連記事
Posted byk8

Comments - 0

There are no comments yet.

Leave a reply

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。