monolog

スタック・オーバーフロー・エンジニアのなかにしゆうが思うことを書いていきます。

我々はおうちハックに何を求めているのか

若干釣り気味のタイトルにしてしまいました。反省はしていない。(๑•̀ㅁ•́๑)✧

この記事はおうちハックAdvent Calendar 2015の12日目の記事です。

家電は人間の指示に従順すぎた

私は、エアコンをONにしたまま外出してしまい、帰ってきたら「あーやってしまった!」となることがよくあります。多くの場合、外出していたらエアコンがONである必要はありません。

一方、朝、布団から出るのがつらい時期になってきました。寒い日には部屋が暖かい状態で目覚められればいいのに、と思ったりもします。

つまり、確かにエアコンをONにはしたが、やっぱりOFFが良かったということもあり、逆に、ONにしてはいなかったものの、ONになっていてほしかったと思うことがあります。つまり、「ON/OFFの操作」と「実際にONになっていてほしかったか?」は完全に独立していることになります。20世紀に生み出された家電の延長線上にある現代の家電たちは、人間の指示に従順すぎたのです。

家電自身に判断させるのが正しい

家電の操作にはよくリモコンが使われます。しかし、そもそもエアコンを動作させるとき、「暖房21度にセットしたい」と思ってエアコンの電源を入れるのではありません。「寒さを感じないようにしたい」という目的で電源を入れているはずです。

もっと言うと、暑いか寒いかは機械的に判断できることであり、ここに人間の意思を介在させる必要はありません。したがって、「エアコン側でON/OFFすべきかどうかを判断すべきではないか?」という発想になってきます。

ただ、在宅していないのに、

エアコン「部屋が寒いから部屋暖めといたっスよー」

とかは困ります。「部屋が」寒い、のように、「部屋」を主語にして判断して動くのはよくありません。

あるべき姿は「僕が主語」

そこで、主語を「僕」と考えることにします。たとえば、私が「寝る」ということをすると、各家電においては次のように自分で判断して動作すべきです。

  • エアコン:OFFにする。明日の天気予報を調べて、最低気温が一定以下、または、一定以上なら適温になるようタイマーをセットする(一定時間後にONにせず、寝る時点でタイマーをONにするのは、リモコンの電波を受信したらエアコンから音が鳴るからです)。
  • 照明:OFFにする
  • 家の鍵:施錠する

「外出する」場合は次のような感じでしょうか。

  • エアコン:OFFにする
  • 照明:OFFにする
  • 家の鍵:施錠する
  • ルンバ:過去24時間起動していなかったら掃除を始める

いずれも「家電に動いてもらうためにどう操作するか」ではなく「僕がどう動くかを知って、家電はどうすればよいか自分で判断してね」という「僕が主語」の思想になります。

Webから「僕が何するか」指示するボタンを作ってみた

作ってみました。

f:id:youcune:20151210222214j:plain

こんな感じで動いています。

  • Raspberry Pi上でSinatraを動かす
  • すべての家電を操作できるようにする
  • エアコン、ルンバはIRKit経由(私の環境では、ルンバのリモコンは少し長押ししないと学習できませんでした)
  • 照明はHueを直接操作する

たとえばおやすみボタンはこんな感じで実装されています。

post '/oyasumi' do
  HueService.off!

  # TODO 起きる時刻をカレンダーから予定を読み取って判断するようにしたい
  if WeatherService.cold_tomorrow?
    AirConService.heat_after_5_hours!
  elsif WeatherService.hot_tomorrow?
    AirConService.cold_after_5_hours!
  else
    AirConService.off!
  end

  json(status: 'OK', message: 'おつかれさまでした!')
end

ぜんぜん使い回しが効かなさそうですが、すべてGitHubで公開しています。

今後の展望

  • カレンダーの予定を確認して起きる時刻を予測し、エアコンや照明の時刻を変える
  • 家の鍵をHTTPリクエストで開閉する仕組みがほしい
  • 位置情報に連動して自動化させたい(ボタンを押す必要がないようにしたい)

すべての家電が HomeKit に対応するのが理想

この思想にかなり近いのが HomeKit でしょう。ただ、対応している家電が(とくに日本では)まだまだ限られています。

おうちハックの記事を書いてる人はだいたいHueを使っているようですが、最近出たHue Bridge 2.0 は HomeKit 対応のようです。技適マークがないと思うので日本では使うと違法ですが、仮に技適マークさえあれば電源も電球の規格(E26)もOKだし、アプリも日本語対応しているのでHomeKitでSiriに日本語で指示でき、普通に使えそうですね。

来年はHomeKitにすべて寄せられることを願っています。