我が家では、照明コントロールにHueのブリッジを複数使って、家中のライトをコントロールしているのだ
SiriでもAlexaでもコントロールできるので楽ちん
はい、前はそれで十分でした。使いやすいGUIアプリだったし
ところがiOS13あたりから改悪されて、アプリケーションは長時間起動し続ける事ができなくなったのだ!アリエン
寝る前に30分だけタイマーして電気を徐々に暗くしていただけどそれができなくなった
ムキー
iOSのショートカットを作ってもiPadがスリープすると「ショートカットアプリ」自体がkill processされちゃう。iOS 裏アプリは5秒しか動けない制限。
つまり「スクリプト」をアラームにしても「アラームアプリ」までは目覚ましの機能で起動するんだけど、その後「ショートカットアプリ」がすでに死んでるんでその先の「Hueの照明を消す」に進まない。
「アラームアプリ」はスーパースペシャルで、「ショートカット」なんて新参者にはあまり権限がないようだ
しかたない、自作するか
V1 APIとV2 APIがあるんだけど、V1は古いAPIなので、もうじきなくなるよ、と脅し文句がAPIリファレンスに書いてあるけど、告知されてから早10年以上たってる気がする
家電なので10年や20年は使うから、そうそう無くせないよね
またV1じゃないとできない機能があるらしい。はよ解決しろ
V1 API
http://192.168.0.127/debug/clip.html
httpでもアクセスできるよ、いいんかい。確か初代のブリッジはCPUとメモリがしょぼすぎて httpしかできなかったのでAppleのHomeに公式登録する事ができなかったんだよな
初代ブリッジはhttpsの実装ができないので、新しくブリッジに買い直したんだよ
1万円近かったよ
海外は初代ブリッジ下取りするサービスがあるんだけど、日本のサポートに問い合わせたら
「そんなサービスの予定はありません、フヒヒ」
と言われてがっかりした
フヒヒは言ってなかった気がする
V2 API
前準備
まずはブリッジのDHCPのアドレスが必要なのだ
Hueブリッジは勝手にインターネットにつないでくれてちゃって
https://discovery.meethue.com/
にブラウザでアクセスするとどういう仕組みなんだか、自宅のブリッジが全部出てくる
[{"id":"002992aaae7ee5c3","internalipaddress":"192,168.0.115","port":443},{"id":"00354ffe299d29","internalipaddress":"192.168.0.127","port":443}]
うむ、怖いww
まぁルーターのDHCPリストとmacアドレスを老眼で突き合わせてショボショボ IPを探すよりは楽なんだけど
このidはいつ使うのかな。自分のアプリでブリッジを見分ける時に使うのかも
複数のルーターを使っている人は知識あるから説明は不要でしょう
postmanなるツールを使うなら、SETTINGSの
Headers 項目
Send no-cache header をon
Send Postman Token Headerをon
Trim keys and values in requst body をoff
SSL certificate verification を off. (俺俺証明書だから)
としときなさいよ、と
ハイカラなGUIが不得意な8bitおじさんなのでcurlで作業するのじゃ、ヨボボ
1は -H 'Cache-Control: no-cache'
2と3は無視
4は -k をくっつけとけばよさそうじゃのぅ
ブリッジにIDを作る
まずREST APIをアクセスできるように、ブリッジに適当な名前で「アプリ#ユーザー名」の登録をする
urlを /api
Message Body の中に
{"devicetype":"my_app#mydebug"}
とか入れる。
my_app が 今回決めたアプリケーション名(適当)で、
mydebugがそのアプリのユーザー名という事らしい
何個作れるんですかね
curl -X POST -H 'Cache-Control: no-cache' -k "https://192.168.0.127/api" --data '{"devicetype":"my_app#mydebug", "generateclientkey":true}'
を送信すると
[{"error":{"type":101,"address":"","description":"link button not pressed"}}]
hueブリッジのボタンを押せ、とな。押入れまで歩いて一回だけポチする
30秒くらいでこの呪文の効果が切れるらしいのでダッシュで戻り、さっきのcurlをもう一度たたくと
[{"success":{"username":"LuY7AOkGozQTotCstgya28EUddfYpSflIr-CCPc","clientkey":"007E618660B3464232C29946A01CE3DF"}}]
なんか手に入ったっぽい!
これ何人くらい登録できるんすかね。ブリッジのメモリーなんてたかが知れてるし
で、このusernameをヘッダーにくっつけとくとGETができるようだ
返ってくるのが一本グソのjsonなので jq で整形する
# brewはおググりください
% brew install jq
usernameはさっき手に入れてたので、-H "hue-application-key: LuY7AOkGozQTotCstgya28EUddfYpSflIr-CCPc"をくっつけて、/clip/v2/resource/device のリクエスト
curl -H 'Cache-Control: no-cache' -k "https://192,168.0.127/clip/v2/resource/device" -H "hue-application-key:LuY7AOkGozQTotCstgya28EUddfYpSflIr-CCPc" | jq
でっかいjsonキター
このjsonはランプのuuidとか入ってて、これがバレると外からアクセスできちゃうからhueの画面を貼っとく
APIの一覧
ユーザー登録すると、以下のurlでapi一覧を見る事ができる
https://developers.meethue.com/develop/hue-api-v2/
よし、これを使って30分で消えるタイマーをRaspberyy PIで作るぞ
今年度中には