FC2ブログ

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 6

There are no comments yet.
HIROKI MASUZAKI  
HA-Bridgeについて

はじめまして
Raspbery pi 3にHA-Bridgeの環境を作りました。自宅のX10 Control Switchとamazon Alexaをブリッジする計画です。素人質問で申し訳ありませんが、HA-Bridgeを使うには、Philips Hue Bridgeが必要ということなんでしょうか?amazon Alexaでデバイス検出できません。ご教示頂けると有難いです。よろしく、お願いします。

2018/11/13 (Tue) 22:49 | EDIT | REPLY |   
k8  
Re: HUE REST APIでHA-Bridgeを制御する

こんにちは。
Phillips Hue Bridgeですが、無くてもHA-Bridgeを使う事はできます。但し、このHA-Bridgeは日本のAmazon Echo(いわゆる2nd gen)ではデバイス検出に一癖あります。

↓参考
https://github.com/bwssytems/ha-bridge/wiki/Trouble-Shooting#nodiscover

HA-Bridgeの「Bridge Devices」にある「Link」ボタンをクリックしないとAlexaで検出できないようです。
Linkボタンは「Bridge Control」→「Update Security Settings」から「Use Link Button」にチェック、「Update」をクリックすると「Bridge Devices」に出てきます。

以下のページに本件に関して加筆しておきました。
http://k8311759.blog.fc2.com/blog-entry-51.html

2018/11/14 (Wed) 06:34 | EDIT | REPLY |   
HIROKI MASUZAKI  
To k8さん

ご教示ありがとうございます。Phillips Hue Bridgeが必要ないことはわかりました。
HP内の参考URLにて接続確認をしておりますが、デバイスが検出できません。
もう少し、私の環境について説明しますとAmazon Echo dot(3rd) + Nature Remo + Raspbery pi 3(HA-Bridge)です。Nature Remo は特に関係ないと思いますが、どこに問題があるか?再度、ご教示頂けると有難いです。よろしく、お願いします。

2018/11/14 (Wed) 16:42 | EDIT | REPLY |   
k8  
Re: HUE REST APIでHA-Bridgeを制御する

環境には特におかしなところはないと思うのですが…
Linkボタンでないとすると、HA-BridgeのUPNP IP Address(Bridge Controlタブ)がraspberry piのアドレスと異なっている、という可能性はないでしょうか?
以前、raspberry piのアドレスを固定し忘れて、設定したUPNP IP Addressといつの間にかずれてデバイスが見つからなくなった事があります。

あとは、echo dot(v2)ですが、再起動で直ったと言っている人もいます。
https://github.com/bwssytems/ha-bridge/issues/1003

2018/11/14 (Wed) 18:14 | EDIT | REPLY |   
MASUZAKI HIROKI  
To k8さん

会社でこっそり海外サイトで検索して調べてたら、AlexaにてAmazon Echoを再登録するとHA-Bridgeをデバイス検出可能になるという書き込みがあったので、早速試したら、デバイス検出できました。いろいろとご教示ありがとうございます。半分、心が折れて諦めかけてました。週末までにX10デバイス(単身赴任中なので環境開発用)とリレーボード(RFリモコン操作用)が届くので、次のステップへ進めそうです。

2018/11/14 (Wed) 18:53 | EDIT | REPLY |   
k8  
Re: HUE REST APIでHA-Bridgeを制御する

あまりお役に立てませんでしたが、解決できて良かったです。また、貴重な情報ありがとうございます。Amazon echoの再登録というのが必要になるケースがあるのですね。

2018/11/14 (Wed) 19:33 | EDIT | REPLY |   

Leave a reply