Gravioでドア開けた時にPhilips hueライトの色を変える設定をしてみたホステルの宿直です

#経緯
とあるホステルで宿直をしております。
ロビーにPhilips Hueライトが30個ぐらいありまして。
さすがに何か遊びたいなと思い、アステリアさんのGravioの力をお借りして、簡単にIoTの設定をしてみました。

#ゴール
https://www.youtube.com/watch?v=-lT8GYSkTFI
[![デモ動画](http://img.youtube.com/vi/-lT8GYSkTFI/0.jpg)](https://www.youtube.com/watch?v=-lT8GYSkTFI)

#使ったもの
  - Mac
  - Gravioの振動センサー
  - [Gravio Hubkit, Gravio Studio](https://www.gravio.com/jp/product#Gravio-Server)
  - Philips Hueライト(IKEAとかで廉価版が売っているらしいです)
 
#設定する中で工夫が必要だったこと
下記の内容を拝見し、設定することが出来ました。
[最初に必要なセンサーのセットアップ](https://www.gravio.com/jp/sensor-setup-guide)
[ドキュメント](https://doc.gravio.com/manuals/gravio-setup-guide/1/ja/topic/introduction)

この記事では、その中で工夫が必要だったことだけ書こうと思います。
主にhueが難しかったです。

|流れ|工夫した？|
|:---|:---:|
|Gravio Hubkitとセンサーの連携||
|Gravio Studioでトリガーの設定||
|HueブリッジのIPアドレス取得||
|ブリッジへリクエストを送れるようuser name取得|○|
|Hueライトのgroup id取得|○|
|Gravio Studioでブリッジにhttpリクエストを送る設定||

#ブリッジへリクエストを送れるようuser name取得
元々、Hueの方でusernameを取得できるClip API Debuggerは作ってたようです。
http://ブリッジのIPアドレス/debug/clip.html

ところが、不具合があって、今このツールが使えません。
HueのForumでも「対応する」と書かれており、今後は使えるようになるかもしれません。

しかし、今設定したかったので、まず[Post manみたいにリクエストを送ってレスポンスを得られるアプリ](https://apps.apple.com/jp/app/simple-requests/id1157557497)をiPhoneにインストールしました。
元々Macでやりたかったのですが上手く行かなかったため、iPhoneを用いました。

その後の手順
１. [Philips Hueアプリ](https://www2.meethue.com/ja-jp/philips-hue-app)をiPhoneにインストールし、ブリッジとiPhoneを連携
２. Post man的アプリで下記URLにPOSTを送信
http://<ブリッジのIPアドレス>/api/newdeveloper

```json:body
{"devicetype":"my_hue_app#iphone"}
```
３. エラーが返ってくる。ブリッジのボタンを押す。
４. Post man的アプリで下記アドレスにPOSTを送信
http://<ブリッジのIPアドレス>/api

```json:body
{"devicetype":"my_hue_app#iphone"}
```

結果、下記のレスポンスが得られ、usernameを取得できます。
このusernameを用いることで、hueライトの彩度・明度を変更するリクエストをブリッジに送ることが出来ます。なお、取得したusernameはiPhoneだけでなくPCでも使えます。

```json:responce
[
    {
        "success": {
            "username": "ホニャララ"
        }
    }
]
```

#Hueライトのgroup id取得
複数のライトを一度に変更するために、[先程のPhilipsアプリ](https://www2.meethue.com/ja-jp/philips-hue-app)を用いて、ゾーン(group)を設定する必要がありました。

アプリを開いて、「設定>ルームとゾーン>新規作成」から、複数のライトで構成されるゾーンを追加できます。

そのゾーンのIDを/api/<取得したusername>/groupsを開くことで、閲覧出来ました。1,2,3・・・といった番号でした。

```json:例
{
    "1": {
        "name": "Group 1",
        "lights": [
            "1",
            "2"
        ],
        "type": "LightGroup",
        "action": {
            "on": true,
            "bri": 254,
            "hue": 10000,
            "sat": 254,
            "effect": "none",
            "xy": [
                0.5,
                0.5
            ],
            "ct": 250,
            "alert": "select",
            "colormode": "ct"
        }
    },
    "2": {
        "name": "Group 2",
        "lights": [
            "3",
            "4",
            "5"
        ],
        "type": "LightGroup",
        "action": {
            "on": true,
            "bri": 153,
            "hue": 4345,
            "sat": 254,
            "effect": "none",
            "xy": [
                0.5,
                0.5
            ],
            "ct": 250,
            "alert": "select",
            "colormode": "ct"
        }
    }
}
```

番号を得ることで、該当グループのライトの色を変えられるようにhttpリクエストを送るフローを設定できました。リクエストに必要な内容は[hue APIのドキュメント](https://developers.meethue.com/develop/hue-api/groupds-api/)にあります。

#感想
Philipsは[映画や音楽、ゲームと電灯を連動させるアプリ](https://www2.meethue.com/ja-jp/entertainment/hue-sync)も出していました。試してみましたが、中々にロマンチックで良かったです。

ですので、他にも色々出来るかもしれない、という希望を抱いています。
ご覧頂き、ありがとうございました。