makebox

ものつくりはじめました

Slack Bot (Home Bot) とHomeKitとRaspberry Piを組み合わせて家電を操作する!

はじめに

今年のMFT2016にて「Slackで家電を操作できる、Home Bot」を展示しましたが、あれからかれこれ3か月。
Home Botを使ってみての感想を簡単にまとめます。
 
[便利だった点]

  • 外出先から家電を操作できるのはかなり便利 (夏場など家に帰る前にエアコンをONにできる)
  • Slackを使っているので、クライアント(PC, スマートフォンなど)に依存せずに、どの機体からでも操作できる。
  • シーンに合わせた家電の一括操作ができる。(おやすみ、行ってきますなど)

[逆に不便を感じた点]

  • 家電を操作するには、いちいちSlackのアプリを立ち上げなければいけない。
  • テキスト入力がだんだん面倒に感じる。(音声入力のほうが早い)

 
以上が3か月ほどHome Botを使ってみた感想です。

うーむ。これは改善の余地あり。。。
以上を踏まえて、久々に時間も取れたことで、Home Botを拡張することに。
 

家 x IoTといえば...

「家 x IoT」といえばこちら、

www.apple.com

iOS 10になって、統合的なインターフェースとしてHomeが提供され、より「家 x IoT」プラットフォームの立ち位置が強くなったHomeKit。

ふむ。。これはもう組み合わせるしかない!!!
と、いうことで以下手順。

使うもの

手順

Raspberry PiにHomebridgeをインストールします。

NodeJSのインストール

Homebridgeを動かすためにはNodeJSが必要なのでインストールします。
Raspberry PiにはデフォルトでNodeJSが入っていますが、バージョンが古いので、ここでは別途NodeJSをインストールします。

デフォルトのNodeJSをアンインストール

$ sudo apt-get autoremove nodejs   

nvmのインストール

$ git clone https://github.com/creationix/nvm.git ~/.nvm

初期設定をする

$ source ~/.nvm/nvm.sh

インストール可能なNodeJSのバージョンの確認

$ nvm ls-remote
         v6.8.1  
         v6.9.0   (LTS: Boron)
         v6.9.1   (Latest LTS: Boron)
         v7.0.0  

最新バージョンを入れておく

$ nvm install v6.9.1

上記コマンド終了後、以下のようにnodeが入っていればOK

$ node -v
 v6.9.1

最後に、ログイン時にnvmを使用できるよう~/.bashrcに以下を追加

$ vi ~/.bashrc 
 source ~/.nvm/nvm.sh

npmのインストール

$ sudo apt-get install npm

 
以上でNodeJS周りのセットアップは終了です。
 

Homebridgeのインストール

Raspberry PiをHomeKitデバイスとして使えるように、Homebridgeをインストールします。

Avahiのインストール

$ sudo apt-get install libavahi-compat-libdnssd-dev

Homebridgeのインストール

$ npm install -g homebridge --unsafe-perm

上記でHomebridgeが問題なくインストールできれば、以下でHomebridgeが起動できるはず。

$ homebridge

 
以上でHomebridgeのインストールは終了。

Homebridge Pluginのインストール

HomebridgeにはPluginがたくさんあります。https://www.npmjs.com/search?q=homebridge-plugin
今回はこの中から、homebridge-cmd を使うことにします。

$ npm install -g homebridge-cmd

 
これで、Homebridge上からコマンドラインを叩けるようになります。
  
Homebridge Pluginの設定
Homebridgeの設定は~/.homebridge/config.jsonを配置することで可能。 config.jsonファイルは以下のように作成します。

$ vi ~/.homebridge/config.json
{
    "bridge": {
        "name": "Homebridge",
        "username": "CD:22:3D:E3:CE:30",
        "port": 51826,
        "pin": "031-45-154"
    },

    "description": "dummy",

    "accessories": [
        {
            "accessory": "CMD",
            "name": "電気",
            "on_cmd": "python3 ~/homekit.py '電気つけて'",
            "off_cmd": "python3 ~/homekit.py '電気消して'"
        }
    ]
}
  • ~/homekit.pyにはSlackのIncoming Webhooksを経由したPOSTスクリプトが書いてあります。
  • ここでは、引数の文字列をそのままSlackにPOSTしています。
  • 流れとしては、「HomeKit → Homebridge → Home Bot」になってます。

Homeアプリにてデバイスの認識

最後にiOS 10のHomeアプリにHomebridgeをデバイス登録します。

Homebridgeの起動

Homebridgeを起動します。

$ homebridge
[11/3/2016, 7:28:25 PM] Loaded plugin: homebridge-cmd
[11/3/2016, 7:28:25 PM] Registering accessory 'homebridge-cmd.CMD'
[11/3/2016, 7:28:25 PM] ---
[11/3/2016, 7:28:25 PM] Loaded config.json with 1 accessories and 0 platforms.
[11/3/2016, 7:28:25 PM] ---
[11/3/2016, 7:28:25 PM] Loading 1 accessories...
[11/3/2016, 7:28:25 PM] [電気] Initializing CMD accessory...
Scan this code with your HomeKit App on your iOS device to pair with Homebridge:
                       
    ┌────────────┐     
    │ 031-45-154 │     
    └────────────┘     
                       
[11/3/2016, 7:28:25 PM] Homebridge is running on port 51826.

バイスの登録

Raspberry Pi上でHomebridgeが起動した状態で、iOS 10のHomeアプリを開きます。
すると、写真のようにデバイスを認識するはず。
 
f:id:sawachon-21:20161103220553p:plain:w250 f:id:sawachon-21:20161103220542p:plain:w250
   
あとはpinコードを入れて、細かな設定を行えばOKです。
 
f:id:sawachon-21:20161103220630p:plain:w250 f:id:sawachon-21:20161103220626p:plain:w250
   
アクセサリの設定をしたら完了!
 
f:id:sawachon-21:20161103220622p:plain:w250 f:id:sawachon-21:20161103220616p:plain:w250

動作確認

以下動作結果。

HomeKit & Home Bot from sawachon on Vimeo.

 
*本当は照明が点灯するシーンも撮りたかったけど、ちょっぴり断念。。

まとめ

  • Home BotとHomeKitを連携してさらにIoTで便利な家になった!
  • Homebridgeを導入することで、Siriから家電を操作可能に!

所感

  • 今回の拡張で、最初に述べた二つの課題点を大幅にクリアできた。
  • これで家の中にいるときは、いちいちSlackのアプリを立ち上げずとも、Siriに話しかけることで家電を操作することが可能になった!!
  • 今まで通り、Slack Botとしての機能は生きているので、外出先からも家電の操作が可能。
  • HomebridgeはRaspberry Pi上で動いているので、Home Bot同様、拡張性は無限大!!
     

長くなりましたが、以上です!

参考

Raspberry Pi に Homebridge をインストールする
http://kainokikaede.hatenablog.com/entry/2016/07/03/154044