makebox

ものつくりはじめました

【WIP】Home Bot を Update して Bot のある暮らしを再定義する

Home Botせっかく作ったので諸々Updateしたい。

とにもかくにも、こんなイメージ。

f:id:sawachon-21:20170502030719j:plain

トライしてみたいことは以下

  • ジェスチャによる操作
  • 音声対話の組み込み
  • APIの組み合わせによる、Home Bot の拡張
  • 機械学習による最適化

「Life with Bot.」 今後は、Botのある生活をテーマにトライしていきたい。

以上メモ書き。

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

【告知】突然ですが、Maker Faire Tokyo 2016にHome Botを出展します

ご無沙汰しています。

こんにちは。

 

突然ですが、タイトルの通りMaker Faire Tokyo 2016に出展します! 

makezine.jp

 

出展内容はHome Botです。

makebox.hatenablog.com

  

 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を作りました。

 

まずは概要。

イメージはこんな感じ。

f:id:sawachon-21:20160509041714p:plain

 

メッセージアプリ(Slack)からHome Botへメッセージを送ると、

メッセージ内容に応じて家電などが制御できる。

家電などの制御にはRaspberry Piを使います。

 

メッセージ画面。

 

f:id:sawachon-21:20160509053119j:plain

 

基本的に今できることは、

  • 室内の電気のオンorオフ
  • 室内の温度の測定
  • エアコンのオンorオフ

 

まだまだできることは少ないですが、

これから機能を追加していく予定。

 

 

つかっているもの

 

ざっと機能の説明だけになってしまいましたが、

時間ができたら製作手順もまとめていく予定です。