Google Homeで作ったスマートホームを自慢したい男たち

この記事は
[DMM.com #1 Advent Calendar 2017](https://qiita.com/advent-calendar/2017/dmm)兼
[RCC OBOG Advent Calendar 2017](https://adventar.org/calendars/2245) 5日目の記事です。
DMMの前の記事は@doutoriさんの[自分が入社してからのフロントエンドの変遷をつらつらと書きなぐる](https://qiita.com/doutori/items/e8fc2d7c273d59ae336f)で
RCCの前の記事は@Mekapikuの[モダンな登山環境構築のススメ - Corona@はてな](http://mekapiku.hatenablog.com/entry/2017/12/03/214440)です。

最近はGoogle Homeにハマっております、nokkiiです。
業務ではIoTの研究、新規事業開発と大規模サーバミドルウェア開発、採用活動などをやっています。
本日はGoogle Homeを導入してみてどんなことが便利か、どんなハックを行ったか、スマートホームを一通りやってみてどんな利点が見いだせたかをお話しようと思います。

## GoogleHomeを普通に使ってみて
普段からChromecastを使っているので、Google HomeからYouTubeを再生させたり、Google Play MusicをGoogle Homeからではなく、ステレオに繋いでいるChromecastから再生させられるのが便利で使っています。NetFlixもGoogle Homeから再生したいのですが、日本語タイトルの認識精度はまだまだですね。料理中にタイマーをお願いしたり、現在時刻を聞けるので部屋の置き時計を無くしたりしました。

標準機能でも既存のプラットフォームと連携して便利なGoogle Homeですが、おうちハッカーとしての魅力は何と言っても高い音声認識精度でスマート家電と連携できるところにあります。
とはいえ日本には技適の壁があり、欧米のスマート家電が少ないほかGoogleが買収したNestのようなサーモスタットを使う文化もありません。APIが公開されている家電も少なく高価なので日本だと技適の通ってない機器を使うか、通っている機器を組み合わせて頑張るか、DIYしている方が多いです。

## デモ動画(音ありで御覧ください)
[![IMAGE ALT TEXT HERE](http://img.youtube.com/vi/crLektyQH04/0.jpg)](http://www.youtube.com/watch?v=crLektyQH04)

### コマンド1「ただいま」
「全部つけて」とaliasを掛けてあり、シーリングライト、エアコン、プロジェクター、あと最近は暖炉の加湿機能がオンになるようにしています。
### コマンド2「テレビに変えて」
プロジェクターにはHDMIセレクタとFireTV Stickを接続しており、HDMIセレクタにはChromecastとテレビチューナーが接続されています。動画ではプロジェクターの入力をHDMIセレクタに変えて、HDMIセレクタではテレビを選択しています。
### コマンド3「パーティーモードにして」
照明とプロジェクターがついていればOFFにし、ブラックライトとレーザーをつけます。ステレオで音楽を鳴らすのも検討中です。
### コマンド4「お出かけモードにして」
「全部けして」とaliasになっており、電源がオンになっている全ての家電の電源を切ります。外出時のほかに寝る前にも便利です。


## 最新作
### トースター
昔作った「[好きな焼き色を選んで焼けるトースター](https://www.youtube.com/watch?v=ZBsoqYi4cpA)」をGoogleHomeから制御できるようにしました
[![IMAGE ALT TEXT HERE](http://img.youtube.com/vi/iX2Fg2jd_ZY/0.jpg)](http://www.youtube.com/watch?v=iX2Fg2jd_ZY)
動画では「パンを(時間)にトーストして」と命令を送ると炊飯器の予約のように時間を逆算して、タイマーを掛ける動作をしています。GoogleHomeに「朝ごはんはトーストにして」とお願いすると翌朝7：30にパンを焼いてくれます。課題としてはトースターにパンを刺しておかないといけないので、衛生面に不安がありますが2日くらいなら大丈夫でしょう(多分)。
### 電気暖炉
[![IMAGE ALT TEXT HERE](http://img.youtube.com/vi/_YBL381joXg/0.jpg)](http://www.youtube.com/watch?v=_YBL381joXg)
Dimplexの電気暖炉にESP32でHTTP APIを生やして制御できるようにしました。このシリーズは炎のゆらめきを水蒸気で表現していて、加湿機能だけ使うこともできます。芯まで冷える季節になったら直接当たれますが、消費電力の割に部屋は温まらないのでいまは加湿器モードにしています。

### 最新作ハードウェア解説
ハードウェア詳解が長くなったので[Google Homeで家電制御するためのお手軽マイコンハック](https://qiita.com/nokkii/items/abf5088487d569097ab3)に記事を分けました。



## 技術的な話
### Google HomeはグローバルIPしか叩くことができない
Homeとは...と言いたくもなりますが、これはおそらくGoogle　HomeのコマンドはGoogle Assistant用のコマンドを叩いているからで、Google HomeがなくてもGoogle Assistant単体で動作するようにグローバルIPしか叩くことができない仕様になっているのでしょう。デバイス各社は独自にPushとか実装しているのかな。うちの場合はRaspberryPiでBasic認証付きのWebエントリポイントを切ってIFTTT連携していますが、言語処理に限界を感じているのでDialogflowでえいやっとしてやりたいと思います。
### システム構成
<img width="640" alt="hw" src="https://qiita-image-store.s3.amazonaws.com/0/40630/003607a0-2930-33f1-9a9c-fcd72ea3c6fe.png">
WebエントリポイントからWeMoをPOSTで操作したり、eRemoteを操ったりしています。


## 気づき
ホームオートメーションをゴールとするならば、前段階として音声コマンド入力は有力なインターフェースであると言えます。この前段階にはスマートフォンがありましたが、スマホから操作できてもいちいちアプリを開いてボタンを選んで〜という作業は非常に手間が多いです。逆に音声コマンドでは同じボタンを連続で押して微調整する動作がとても手間になります。
e.g.「音量上げて、下げて、やっぱ上げて」

向いている動作としてはソファーに沈み込んでPCを抱えているときや、急いで家を出たい場面など、ハンズフリーで操作をしたい場合や家の中を動いているときに非常に便利です。また、スマートホームの利点として複数の操作をまとめた操作（全部つけて、など）が得意で、特に複雑な操作はバックグラウンドで抽象化できたりするので「複数機器の入力切り替えがお父さんにしかわからない」ということもなくなります。また、Google Assistantで操作できるのでGoogleHome用に作ったコマンドは外からAndroid端末でも使えます。寒くなってきたのでエアコンの操作は最近重宝しています。

個人的には着メロがスマホプラットフォームに乗り遅れたようにスマートスピーカープラットフォームも次の乗り遅れるとやばい市場になるのではないかと考えています。IoTでDMMと事業ができる可能性を感じた方はぜひ私宛にご連絡ください。個人的に「うちの製品をハックして！」みたいなご提案も歓迎です。

明日はDMMのほうは@sinnershikiでRCCのほうは@gol19です。よろしくおねがいしまーす。