我々はおうちハックに何を求めているのか
若干釣り気味のタイトルにしてしまいました。反省はしていない。(๑•̀ㅁ•́๑)✧
この記事はおうちハック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から「僕が何するか」指示するボタンを作ってみた
作ってみました。
こんな感じで動いています。
- 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にすべて寄せられることを願っています。