空気を読むUIを作る

この記事は [おうちハック Advent Calendar 2016](http://qiita.com/advent-calendar/2016/ouch-hack) の15日目の記事です。

昨日は @kopanitsa さん の [妻のためにインターネットに繋がるデバイスを作ってみたお話](http://qiita.com/kopanitsa/items/08a26271a0845214502b) でした。基板発注からクラウドの利用、スマートフォンアプリの製作までと盛りだくさんの内容で何度でも読み返したくなりますね！

### 今日のおうちハックは
家にある家電を意識的に操作しなくてもいい感じに動いてくれるような仕組みを作っていきましょう。空気を読んで勝手に動いてくれるのはとても気持ちが良いです。

# データ収集・配信の仕組みを作る
何はともあれ、まずはデータの収集・配信の仕組みを作ります。Node.js / Socket.io のチャットのサンプルコードなどを参照して、簡単なサーバを作ります。

- [ソースコード](https://gist.github.com/ksasao/6f17df02d239f59576b481fd34ca292a)

後の分析のためにチャットメッセージのログを残しておくのがポイントです。Windows の方はログファイルの拡張子を .csv .txt などの登録済み拡張子にしてしまうと、Windows indexer がひたすら動いてしまいますので、他の拡張子にするとよいでしょう。

# センシングする
まず家の中で人間がどんな行動をしているのかをセンシングしていきます。

## スマートメーター
スマートメーターは電力会社に依頼すると無料で取り付けてくれます。導入すると、家庭内の電気使用量がほぼリアルタイムで分かります。これにより、おおよそどのような家電が利用されているかが推定できます。

![1.png](https://qiita-image-store.s3.amazonaws.com/0/43450/ee43a429-8fb5-9871-4769-441abe57953c.png)

例えば、

- 照明やテレビがつけっぱなし
- 洗濯中
- 別室にある電子レンジの温めが終わった

などといったことがわかります。

@rukihena さん [スマートメーターの情報を最安ハードウェアで引っこ抜く](http://qiita.com/rukihena/items/82266ed3a43e4b652adb)

の記事を参考に電力量を測定するコードを記述しました。測定結果は上記サーバに逐次投げていきます。

## キーボード・マウスの操作ログ
パソコンを家で日常的に利用する習慣のある方は、キーボードやマウスがどの程度操作されているかを見ることで、その人の活動状態が見えてきます。例えば、

- 1時間くらいPCを操作しっぱなし
- 深夜なのにまだ寝ていない

といったことが把握できます。万一ログが流出してしまった場合に備え、文字そのものではなく１分当たり何文字入力したか、といったザックリとした情報にしています。これも逐次上記サーバに投げていきます。以下も同様に取得したデータはサーバに投げていきます。

## 人感センサー
人感センサーは人の動きを検出するセンサーです。人がじっとしていたり集中していたりすると反応しません。

- [秋月電子　焦電型赤外線（人感）センサーモジュール　ＳＢ４１２Ａ](http://akizukidenshi.com/catalog/g/gM-09002/)

![3.jpg](https://qiita-image-store.s3.amazonaws.com/0/43450/0ed09ab3-7b58-9cfb-d799-8daf8edc6af5.jpeg)

いつもいる机の上に設置しておくことで

- [音ゲーなど、一定時間で完了するタスクを繰り返すようなもの検出](https://twitter.com/ksasao/status/803237260061642752)
- 寝落ちを検出

といったことができます。

![2.jpg](https://qiita-image-store.s3.amazonaws.com/0/43450/0c8ea924-0876-7d2a-3994-053dc4b903a6.jpeg)


## ドア開閉センサー
ドアの開閉を検知するセンサーを作成します。TWE-Liteがおすすめです。電池交換がほぼ不要になります。

- [ボタン電池1個で数年持つ無線ドア開閉センサを作る](http://qiita.com/ksasao/items/1a221843894fdb57677b)

これを居室の扉だけでなく、ごみ箱のふた、冷蔵庫のドアなどにつけていくとその人の行動が見えてきます。

- トイレに行った
- ごみを捨てた
- コンビニに出かけていたかも

といったことがわかります。

![5.png](https://qiita-image-store.s3.amazonaws.com/0/43450/d0e588dc-433c-0b82-aca8-57f946b43d06.png)

- [おうちセンサでキャラクターと暮らしてみた](http://www.slideshare.net/ksasao/ss-53491169)

また、TWE-Liteを利用したドア開閉センサーを利用している場合には、電池電圧が容易に取得できるので、部屋の温度の変動がわかります。これをお風呂場に設置しておけば、

- いつお風呂を沸かしたのか
- いつ入ったのか、もしくは、入らずに寝てしまった

などもわかります。

![4.png](https://qiita-image-store.s3.amazonaws.com/0/43450/62e9c7e2-8c49-a4fb-815c-9903b047b154.png)



## 温度・湿度・気圧・照度センサー
暖冷房のON/OFF状況、照明のON/OFF状況などがわかります。赤外線リモコンのON/OFF操作が正しくできたかどうかのチェックにもなりますので、よくいる部屋に設置しておくとよいでしょう。

## 赤外線リモコンの操作ログ
学習型赤外線リモコンを常に学習状態にしておき、どんな赤外線操作があったかを記録しておきます。照明のON/OFFやテレビやエアコンの操作などがどういった手順で行われているかが記録できます。

- [USB赤外線リモコンアドバンス](http://bit-trade-one.co.jp/product/module/adir01p/)

![6.jpg](https://qiita-image-store.s3.amazonaws.com/0/43450/1bc436a5-fef4-49a8-ccc2-8e3ab1915335.jpeg)


これを記録しておくと、

- 夜家に帰ってきたらいつも電気をつけてエアコンをつけているから,
電気をつけたら先回りして操作しよう
- 朝テレビをつけたらまず録画予約を確認するから、起きたことを確認して録画画面に切り替えておこう

といったことができます。

## 音声認識
空気をうまく読んでくれなかったときにキーボードなどを操作するのは興ざめです。やめてー、といったら操作を止める、といったことをするために音声認識を利用します。

Windows10の場合は、Cortanaの連続音声認識を常に有効にすることができますので、とりあえず認識し続けるようにしましょう。

- [ソースコード](https://gist.github.com/ksasao/c864192eb25494dd95e553015cb12acf)

この音声認識は比較的新しい語も[それなりにきちんと認識してくれます](https://twitter.com/ksasao/status/801064280380489728)。

## Webの利用
天気予報や交通情報、Twitterのタイムラインなどを取得することで、早起きすべきかどうかを調べたりできます。

# 出力
上記の結果をまとめて機械学習を行うと、空気を読んでくれる家電の出来上がりです。出力デバイスには以下のようなものがあります。

## 赤外線操作
既存の照明を赤外線リモコンで操作できるようなスイッチがあります。

- [天井照明器具専用 リモコンスイッチOCR-04 07-0154](http://amzn.to/2hR2YEw)

その他、エアコンやテレビのリモコンなどを上述の学習型赤外線リモコンなどで学習しておくと様々な機器の遠隔操作が可能です。

## 表示装置・音声入出力装置
余ったスマホなどを活用すると電気代もあまり気になりません。

![7.jpg](https://qiita-image-store.s3.amazonaws.com/0/43450/76d4a1c6-47cc-9cae-bfb7-f0766e6301d5.jpeg)

- [実行例](https://twitter.com/search?f=tweets&vertical=default&q=from%3Aksasao%20%E3%81%8D%E3%82%8A%E3%81%9F%E3%82%93&src=typd)

なお、音声合成には、[東北きりたん](http://amzn.to/2hJ04Wh) を利用しています。高品質な音声合成と[ひきこもりな設定](http://dic.nicovideo.jp/a/%E6%9D%B1%E5%8C%97%E3%81%8D%E3%82%8A%E3%81%9F%E3%82%93)が、おうちハックにピッタリですね！

# まとめ
家の中にセンシング機器やコントロール機器を導入し、適切な処理をすることで、

- いつまでも寝ないと勝手に電気を消す
- 二度寝していたらたたき起こす

といったことも実現できるようになりました。

やりましたね！

### 明日のおうちハックは
@interestor さんの [おうちを拡張しようとしている話](http://interestor2012.hatenablog.com/entry/2016/12/16/121953) です！