読者です 読者をやめる 読者になる 読者になる

kei-s@ブログ苦手

苦手だけど書くときは書きます

家庭 Chatops #家庭を支える技術

このエントリは、家庭を支える技術 Advent Calendar 2015 の6日目です。

シーズン2

昨年につづいて、「家庭を支える技術」アドベントカレンダーを立てました。いろんなかたちの家庭があり、それぞれ違う課題を解決していて、とても楽しいです。あともう少しだけ空いてますので、よろしければご参加ください。

外から家庭のもろもろを操作したい

私達は共働きで、帰宅の時間がほぼ一緒になったりします。そうするとこの季節、帰宅時に部屋が寒くてつらい、という問題があります。
タイマーで起動するにも、帰宅時間は一定ではないですし、無駄につけっぱなしにするのも気が引けます...

そこでまず IRKit を導入して、外からエアコンなどを操作できるようにしました。

エアコンの赤外線受光部が高い位置にあるため、部屋の反対側の壁上部に貼り付けるようにして設置しました。

f:id:kei-s:20151206171938j:plain

貼り付けシールはこちらが便利でした。買っておいて損はないです。

3M コマンド タブ(はがせる両面粘着) S 16枚 CMR2

3M コマンド タブ(はがせる両面粘着) S 16枚 CMR2

IRKit は USB 電源なので、長めの USB ケーブルと小さめの AC アダプタも準備しました。*1

IRKit のセットアップが出来たので、外からエアコンをつけることが可能になりました。

家庭 Chatops

hubot から IRKit を操作できるようにする

私達の家庭では、情報共有に Slack を使っています。Slack に hubot を立て、Slack から IRKit を操作するために ngs/hubot-irkit を導入しました。(下記、妻の発表から抜粋)


最寄り駅についたら Slack に通知する

また、これとは別個に、IFTTT を使って最寄り駅に近づいたら Slack に通知する、というのもやっています。

f:id:kei-s:20151206211133p:plain

これは、IFTTT で "iOS Location" と "Slack" を組み合わせ、最寄り駅を中心とした一定範囲に Enter したら Slack のチャンネルにメッセージを送る、というレシピです。妻と二人とも設定しており、毎度「最寄り駅に着いたよ」という連絡をしなくてよいのでとても便利です。*2

最寄り駅についたらエアコンをつける

今回、上記ふたつを組み合わせて、「最寄り駅についたらエアコンをつける」ができるようにしました。
IFTTT のレシピを新たに作成し、最寄り駅についたら IRKit をキックする URL を叩く、としても実現可能ですが、Chatops の観点から hubot を使い Slack 上で動作を共有できるようにしました。

hitsuji/ifttt-irkit.coffee at master · shiratsuchi/hitsuji

面倒だった点を箇条書きにすると、

  • hubot プラグインの設計の問題で、hubot-irkit プラグインで設定された赤外線情報を、別のプラグインから参照したり実行するのが困難。
    • ほとんどの動作が robot.respond /.../, (msg) -> のように定義されるため、最後の callback だけ動作させるのが厳しい。
  • 幸運なことに hubot-irkit は Webhook を用意してくれているので、上記プラグインから hubot-irkit の Webhook を叩くようにする。
    • フルオープンにならないように、BASIC 認証をかける。
  • IFTTT が Slack に投げる発言を hubot で拾うためには、通常の robot.hear ではなく hubot-slackでbotの発言にも反応させる - 下林明正のブログ のように、SlackBotListener を作成して渡す必要がある。
  • 二人が同時に帰ってきたときに二重起動しないよう、最終起動時刻を記録してブロックするようにする。

というかんじです。

最終的に、

f:id:kei-s:20151206213835p:plain

のように、最寄り駅にたどり着いたらエアコンを起動することができ、家についた頃には部屋が暖かくなっているようになりました。
もし間違って起動していた場合は、Slack で hubot に停止するよう伝えることで止められます。

今後の展望

ホントはエアコンじゃなくて、床暖房をつけたいのですが、床暖房のコントローラには赤外線リモコンがないため、諦めてました。
しかし、最近話題になっている MicroBot Push を見つけて、即 back しました。これを使って床暖房をつけられるか楽しみです(到着予定は4月です...!)。

まとめ

IRKit + Slack + hubot + IFTTT で、最寄り駅に着いたらエアコンを起動できるようになりました。

明日の家庭を支える技術は becyn さんです。

*1:コンセントに直で USB が刺さってほしい。でも USB-C とか新しい規格出て無用になる

*2:範囲を調整すると、ある程度誤爆を防げるとおもいます