SiriにDroneの離着陸をお願いする (homebridge + node-rolling-spider)

# 概要
遅ればせながらHomeKitを調べていたところ`homebridge`というすばらしいものがあることを知ったので、それを使ってDroneを飛ばせるようにしてみました。

# 開発環境

## 使ったデバイス
- [Parrot Rolling Spider](http://www.parrot.com/jp/products/rolling-spider/)
- iPhone 6
     - Apple Watch (あってもなくてもよし)

## 必要なもの
- [nfarina/homebridge](https://github.com/nfarina/homebridge)
  - [homebridge-rolling-spider](https://github.com/syug/homebridge-rolling-spider)
- HomeKit対応アプリ
  - [Insteon+](https://itunes.apple.com/jp/app/insteon+/id919270334)など

# 仕組み
Siri --> HomeKit --> homebridge --> homebridge-rolling-spider <--> Drone (Rolling Spider)

Siriからhomebridgeのコマンドを起動し、そこからRolling SpiderへTakeoff / Landのコマンドを飛ばします。homebridgeに対応するため、[voodootikigod/node-rolling-spider](https://github.com/voodootikigod/node-rolling-spider)を組み込んだ簡単なプラグインを作りました。

[syug/homebridge-rolling-spider](https://github.com/syug/homebridge-rolling-spider)

HomeKitやhomebridgeに関しては、下記の記事が詳しいです。
[Siriで部屋中の家電を操作できるようにして未来のお部屋を作ってみた](http://senyoltw.hatenablog.jp/entry/2015/12/07/052951)

# [前準備] HomeKit対応アプリのインストール
お好みで[Insteon+](https://itunes.apple.com/jp/app/insteon+/id919270334)などをiPhoneにインストールしておきます。


# インストールと起動

### インストール
```
$ sudo npm install -g homebridge
$ sudo npm install -g homebridge-rolling-spider
```

#### config.jsを設置
ホームディレクトリに```.homebridge```ディレクトリが出来ているので、config.jsを設置します。
[sample-config.json](https://github.com/syug/homebridge-rolling-spider/blob/master/sample-config.json)を参考にしてください。

```
"accessories": [
  {
    "accessory": "RollingSpider",
    "name": "rolling spider",
    "uuid": ""
  }
]
```
uuidはなくても大丈夫です。
ここのnameがSiriに呼びかける名前に対応するので、呼びかけやすい名前に変更すると良いと思います。
もしくは、前述のアプリ(Insteon+)からも変更できました。

### 起動 & アクセサリを登録
下記コマンドでhomebridgeが起動するので、HomeKit対応アプリを使って登録すれば準備完了です。

```
$ homebridge
```

[HomeKit 対応アクセサリを iPhone、iPad、および iPod touch で使う](https://support.apple.com/ja-jp/HT204893)

# 実際にやってみる

### MacとDroneを接続
Drone(Rolling Spider)の電源をオンにしてしばらく待ってください。node-rolling-spiderが自動的に接続してくれます。

### Siriにお願いする

「ドローンをオンにして」
「ドローンをオフにして」
などすると、SiriがDroneを飛ばしてくれます。

![IMG_8036.jpg](https://qiita-image-store.s3.amazonaws.com/0/5934/56941a9c-44ce-88c2-30b1-0f39b0d22085.jpeg)


### もう少しそれっぽくしてみる
HomeKitでは、アクセサリをまとめたシーンを設定できます。
これを利用するとそれっぽいセリフでSiriにお願いすることができます。
「テイクオフ」
「ドローン着陸」
などお好みのセリフ(シーン名)で登録すると良いかと思われます。

![siri2.jpg](https://qiita-image-store.s3.amazonaws.com/0/5934/eebdccbf-a5e0-475e-73c3-f4adf28513ad.jpeg)

Apple Watchを使うとさらにそれっぽいです。

![IMG_8044.PNG](https://qiita-image-store.s3.amazonaws.com/0/5934/ce3de5d0-7e0d-d679-f4f5-3318fb771648.png)

# デモ
![takeoff1_-compressor.gif](https://qiita-image-store.s3.amazonaws.com/0/5934/50dc43ea-dd4f-92f4-5930-4ab24485eb4c.gif)

![land1_-compressor.gif](https://qiita-image-store.s3.amazonaws.com/0/5934/4e0b43ad-768f-14b8-d675-a3984124f493.gif)


# 感想
Siriにお願いしてから実行されるまでの間が結構あるのでもどかしく、
完全に使いかたを間違ってる感があります。

現在はOn / OffをTakeoff / Landに対応させているだけなので、
もうちょっと操作できるようにしたいところです。


# 参考リンク
- [nfarina/homebridge](https://github.com/nfarina/homebridge)
  - [Example Plugins](https://github.com/nfarina/homebridge/tree/master/example-plugins)
  - [senyoltw/homebridge-irkit](https://github.com/senyoltw/homebridge-irkit)
- [voodootikigod/node-rolling-spider](https://github.com/voodootikigod/node-rolling-spider)


- [Siriで部屋中の家電を操作できるようにして未来のお部屋を作ってみた](http://senyoltw.hatenablog.jp/entry/2015/12/07/052951)