Macと一緒に部屋を起動する
TL;DR
これです。
そうです!Macを起動すると同時に電気をつけて部屋を起動しました!
なんかかっこいい!なんかかっこいい!
これ以上言いたいことはないのですが、技術記事なのでどうやってこれを実現しているかをご紹介します。
レシピ
材料
名前 | 数量 |
---|---|
部屋 | 1 |
Hue | 部屋の電球の数だけ |
Hueブリッジ | 1 |
Hueアプリ | 1 |
(セットも購入できます。)
手順
やっていることはとても単純です。以下の流れで進めます。
① Hueをプログラムでつける/消す
② Macの起動/スリープ時にプログラムを実行する
③ ①と②をくっつける
① Hueをプログラムでつける/消す
HueブリッジのIPアドレスを調べる
Hueの操作は、HueブリッジにHTTPリクエストを送ることで実現できます。
そのために、まずはHueブリッジのIPアドレスを調べます。
方法
- Hueのアプリを開きます。
-
設定
>わたしのHueシステム
> Hueブリッジを選択します。 - 画面からIPアドレスを確認できます。
IPアドレスはこの後のリクエストで使用するので、控えておきます。
デバッガーを使ってHueを操作する
Hueブリッジ上にはAPIを試せるデバッガー(CLIP API Debugger)が用意されています
こちらを使ってHueの操作を試していきます。
http://<ブリッジのIPアドレス>/debug/clip.html
にアクセスすることで、以下のような画面が表示されるはずです。
ユーザーを作成する
最初にAPIを利用するユーザーを作成します。
- Hue ブリッジの真ん中のボタンを押します。(※ 押さないと次のステップで認証エラーになります。)
- URL:
/api
Body:{”devicetype”: “{任意の文字列}”}
メソッド:POST
でリクエスト送ります。
成功すると以下のようにusername
が返ります。
このusername
をこの後のリクエストで利用するのでコピーしておきます。
Hueの一覧を取得する
Hueの一覧を取得するには
メソッド: GET
URL: /api/{username}/lights
で取得することができます。
登録してあるHueの一覧が数字をキーにして返却されます。
{
"3": {
"state": {
"on": true,
"bri": 254,
"alert": "select",
"mode": "homeautomation",
"reachable": true
}
},
"4": {
"state": {
"on": true,
"bri": 254,
"alert": "select",
"mode": "homeautomation",
"reachable": true
}
}
}
stateのonのBooleanが電気のついている/ついていない状態を表します。
この後つけたり消したりできるように部屋の電球の番号を控えておいてください。
Hueをつける、消す
いよいよHueを操作します。
操作したいhueのstateをPUT
で更新することでHueををつけたり消したりできます。
つける場合
メソッド: PUT
URL: /api/{username}/lights/{hueの番号}/state
Body: {"on": true}
消す場合
メソッド: PUT
URL: /api/{username}/lights/{hueの番号}/state
Body: {"on": false}
プログラムを作成する
HueをAPIから操作できるようになりました💡
最後に部屋の電気をつけたり消したりするプログラムを作成しておきます。
と言っても簡単でhttpリクエストをcurlで実行するshellを書くだけです。
ブリッジのIP: 192.168.1.20
username:sAWVQqrYVAUgrOfpGBqphwvEr2suYZWZruc4wFGi
Hueの番号: 1
と2
の場合プログラムは以下のようになります。
wakeup_room.sh
// Hue1と2をつける
curl -X PUT http://192.168.1.20/api/sAWVQqrYVAUgrOfpGBqphwvEr2suYZWZruc4wFGi/lights/1/state -d '{"on":true}'
curl -X PUT http://192.168.1.20/api/sAWVQqrYVAUgrOfpGBqphwvEr2suYZWZruc4wFGi/lights/2/state -d '{"on":true}'
sleep_room.sh
// Hue1と2を消す
curl -X PUT http://192.168.1.20/api/sAWVQqrYVAUgrOfpGBqphwvEr2suYZWZruc4wFGi/lights/1/state -d '{"on":false}'
curl -X PUT http://192.168.1.20/api/sAWVQqrYVAUgrOfpGBqphwvEr2suYZWZruc4wFGi/lights/2/state -d '{"on":false}'
② Macの起動/スリープ時にプログラムを実行する
自前でやろうとすると大変なので、サードパーティーのsleepwatcherを使用します。
- sleepwatcherをインストールします。
brew install sleepwatcher
これで、sleepwatcherコマンドを使ってMacの起動/スリープ時に任意のスクリプトを実行できるようになります。
sleepwatcher -w '起動時に実行したいプログラム' -s 'スリープ時に実行したいプログラム'
動作するか確認しておきましょう。
sleepwatcher -V -w 'echo wakeup' -s 'echo sleep'
スリープ、スリープから復帰させてみて以下のように表示されればOKです。
③①と②をくっつける
最後に①と②をくっつけて、
起動(※ログイン/電源をつけた場合の起動)時に
- 起動(※スリープから復帰した時)時 → wakeup_room.sh
- スリープ時 → sleep_room.sh
が実行されるように以下のコマンドをbashrcなどに貼り付けて完成です!
sleepwatcher -w path/to/wakeup_room.sh -s path/to/sleep_room.sh
まとめ
部屋を起動するともうなんかかっこいいですね!
今回はHueのみでしたが、エアコンやカーテンなども操作できれば、さらにいい感じに部屋を起動できそうです!お試しあれ!
参考リンク:
Discussion