Hubot に照明を on/off させる

Hubot に照明を on/off させる

この記事は CAMPHOR- Advent Calendar 2015 19日目の記事です。

こんにちは@siriusjack です。今日はCAMPHOR- HOUSE に導入された スマート電球 Philips Hue の活用事例について紹介します!

Philips Hue とは Philips から発売されているLED電球で、巷ではスマート電球とかスマート照明とか呼ばれている製品です。一般にはスマートフォンアプリを利用してスイッチの on/off 、色味、明るさを変更することができる製品として2014年頃から本格的に世の中に出回り始め、一部の人々の間で話題になっているようでした。

そんなスマート照明 Hue ですが、実はインターネット界の共通語 HTTP を話すことのできる電球として設計されており、自身の(on/off、hue、brightness)と行った States を Restful な API で取得したり変更することが可能となっています。Internet of Things (IoT) という言葉が最近はありますが、まさにこれのことですね。ただし、残念ながら、僕ら人間は Internet に接続されていないので彼らと直接 HTTP で話をすることはできません。はやく Internet of Humans の時代が来ることを願うばかりですが、ここでは素直に既に接続されている Hubot に僕らの代行をお願いしてみることにしました。

準備:

さあ、今すぐ API を叩くぞ!と言いたいところですが。Hue は local network 内でしか話ができません。そのため外出時に「あ、Hue 消してくるの忘れた気がする…」というような事態になった場合、 物理的に Hue のある場所へ帰ってくるか、VPN 等々で local network に接続するかしなければならず少し手間です。また、そもそも Hubot に代理で話をしてもらうにも、そもそも Hue が会話できる場所に居なくては話になりません。まずは Hue にどこからでもアクセスできるようにしてしまいたいところです。ここではシンプルにHTTPリクエストのプロキシ処理に Nginx の reverse_proxy、localネットワークからのNAT超えに SSH tunnel を使うことでそのまま Hue のAPIを外部に公開してしまうことにしました。Internet を通る部分は HTTPS化し、Basic Auth によりセキュリティーを担保することにしています。

Nginxの設定は公式ドキュメント、SSH tunnelは KMCの2013年アドベントカレンダー記事が分かりやすいかと思います。実際の構成は以下のようになります。

https://gyazo.com/fe93f3141a037bf9c0dd99429d6e57c6

さて、これでインターネットのどこからでも Hue にアクセスできるようになりました。あとは Hubot や Siri にお願いすれば(お願いする処理を書けば) Hue の API を叩くことが可能です。Hue の API は Philips の開発者向けページで公開されているのでそれをそのまま用いれば良いでしょう。

Hubot に照明を on/off させてみる

https://gyazo.com/b558061732584c8da13025fb6ae6c4ed

画像通りです。bot lights [on|off] : (意訳「botさん、lights を[on|off]にしてくれませんか?」)と Hubot にお願いすると Hubot が House の Hue へ向かって「あなたの State を [on|off] してもらえませんか?」と僕らの代わりに伝えてくれます。これで Slack にいる人は誰でも hubot を介して照明をつけたり消したりすることができます。

最後に:

CAMPHOR- HOUSE に導入されている Philips Hue という IoT の一例を紹介してみました。また、今回紹介はしていませんが CAMPHOR- HOUSE では Hue 以外にも色々なデバイスが集まっています。興味のある方は是非一度現地に遊びにいらしてみてください。

明日は @morishin の記事です。お楽しみに!


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です