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

Siriに身の回りのお世話をしてもらう

Ruby SpeeeKaigi IoT

こんにちは、id:takanamito です。
私は海外事業部のエンジニアで、普段業務ではインドネシア向けのメディア開発に携わっています。
今回は、SpeeeKaigiで話したSiriを使ったお家ハックについて話していきます。

SpeeeKaigiについてはこちら↓

tech.speee.jp

発表資料

はじめに

今回はSiri経由で

  • TV
  • エアコン
  • 電気

を操作してみました。

またMackerelで温度管理をすることで
お部屋を快適な温度に保つことにも挑戦してみました。

動機

とにかく電気を消すために布団から出てリモコンをとりにいくのがだるかったのと
インフルエンザ予防のためにお部屋の温度管理を厳密にしたかったのがきっかけです。

構成

  • Siri
  • HomeKit
  • Raspberry Pi (Homebridge)
  • IRKit

を使った構成でいきます。

中核をなすのがRaspberry Piの中で稼働しているHomebridge

GitHub - nfarina/homebridge: HomeKit support for the impatient

GitHub - senyoltw/homebridge-irkit: Supports IRKit on Homebridge Platform. IRKitをSiri(Homekit)で操作するやつ。

HomeKit互換のNode.js製サーバーで
設定ファイルにIRKitから取得した赤外線情報をjsonで定義することで
HomeKitから各家電の操作ができるようになります。

個人ブログに詳しい解説記事があるのでそちらも合わせてご参照ください。

takanamito.hateblo.jp

Mackerelを使った温度管理

無事にSiriから家電を操作できるようになってからは、より進んだ自動化を考えるようになりました。
今回はエアコンの温度設定を自動で調整して、快適な室温維持を実現しています。

発表資料にも記載しているのですが、最初は愚直に温度を取得して定期バッチで温度設定の上下を操作していたところ
ドアを開けたときに一瞬入り込む冷気や、室温の変化自体がすごくゆっくりで過剰に温度操作を繰り返してしまう。といった問題が発生し
「一定時間 xx℃を下回った場合に温度設定を上げる」みたいな処理をつくる必要がありました。

もちろんDBやファイルなどに一定期間の温度レコードを保持しておいてそれを元に判断してもよかったのですが

  • Raspberry Pi上で稼働させているため、立ち上げるミドルウェアの数は増やしたくなかった(メモリ不足などの懸念)
  • 温度の記録を取るなら可視化までやってしまいたい

みたいな理由からMackerelを採用しました。

f:id:takanamito:20170211235420p:plain

最終的にMackerel上で 「10分間連続で xx℃を下回ったらアラート」という監視モニターを作ることで、先程の問題を解決しています。

こちらについても個人ブログに詳しい解説記事があるので、気になる方はご参照ください。
サムネは室温が低くアラート判定を食らっている様子です↓ takanamito.hateblo.jp

まとめ

この仕組みのおかげか、この冬はインフルエンザなどの大きな病気にならずに乗り切れそうです。