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」といえばこちら、
iOS 10になって、統合的なインターフェースとしてHomeが提供され、より「家 x IoT」プラットフォームの立ち位置が強くなったHomeKit。
ふむ。。これはもう組み合わせるしかない!!!
と、いうことで以下手順。
使うもの
- Raspberry Pi 3
- Home Bot (詳しい機能はこちら。Slack Bot x Raspberry Piを用いた自作のIoTデバイス)
- Homebridge (←今回はこれがメイン)
手順
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アプリを開きます。
すると、写真のようにデバイスを認識するはず。
あとはpinコードを入れて、細かな設定を行えばOKです。
アクセサリの設定をしたら完了!
動作確認
以下動作結果。
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
【告知】突然ですが、Maker Faire Tokyo 2016にHome Botを出展します
ご無沙汰しています。
こんにちは。
突然ですが、タイトルの通りMaker Faire Tokyo 2016に出展します!
出展内容はHome Botです。
Home Botとは、家電などを操作できるチャットボット。
操作はメッセージアプリケーションからHome Botにメッセージを送るだけ。
Home Botがメッセージに合わせて家電を操作します。
例えば、「電気をけして」とHome Botに送れば、家の電気を消灯してくれる。
「あつい」といえば、Home Botがエアコンをつけてくれる。
「ただいま」と挨拶すれば、状況に合わせて、家の電気やエアコン、さまざまな操作を一括で調節してくれる。
Home Botは家での生活をアシストするチャットボット。
Home Botは個人のライフスタイルに合わせて、反応を変化させ学習します。
まだまだ、開発途中 *1ですが、Maker Faireにお披露目できるよう作り込みたいとおもいます。
よろしくお願いします!
*1:気がつけば、6月も終わり。やばい!がんばります!
SlackとRaspberry PiをつかってHome Botをつくる
はじめまして。こんにちは。
SlackとRaspberry Piをつかって、家電などを制御するHome Botを作りました。
まずは概要。
イメージはこんな感じ。
メッセージアプリ(Slack)からHome Botへメッセージを送ると、
メッセージ内容に応じて家電などが制御できる。
家電などの制御にはRaspberry Piを使います。
メッセージ画面。
基本的に今できることは、
- 室内の電気のオンorオフ
- 室内の温度の測定
- エアコンのオンorオフ
まだまだできることは少ないですが、
これから機能を追加していく予定。
つかっているもの
- Raspberry Pi 3
- Slack
- Slack AppのReal Time MessageのBots
- python-rtmbot (https://github.com/slackhq/python-rtmbot)
ざっと機能の説明だけになってしまいましたが、
時間ができたら製作手順もまとめていく予定です。