Google Homeで家の照明制御をするときのログを見てみたいのでenebularで可視化

外部ライター ワンフットシーバス 田中正吾です。今回はGoogle Homeで家の照明制御をするときのログを見てみたいのでenebularで可視化します。

私の家にもGoogle Home Miniが届いていまして、予定を確認したり、ラジオを聞いたり、タイマーを使ったり(これが思いの外重宝!)など使っています。音声UIの片鱗を体験するにはうってつけですね。

さて、その中で、いま試しているのが家の家電制御です。音声で制御した使い勝手を感じて行きたく、まずは制御の足場を作るため部屋にRaspberryPi Zero WとNode-REDとirMagicianで家の照明をリモコン制御をベースにして、実装を試しているところです。

image

現状の暫定の構成ですが、IFTTTのGoogle AssistantでGoogle HomeとlittleBitsをシンプルに連携してみるIFTTTの知見を使いつつWebHookアクションでenebularとも連携し、先ほどの家の中のNode-REDにMilkcocoaで連絡しています。

家のNode-REDのしくみ

今回はenebularの橋渡しがメインですので手短に。

image

家のNode-REDの全体のフローはこのようになっていて、

image

ちょうどRaspberryPi Zero WとNode-REDとirMagicianで家の照明をリモコン制御に右下のところでMilkcocoaのところでenebularと連携します。

たとえば、常夜灯にする場合は image のswitchノードで enebular から来る payload.value.light_type を判定します。

image

可視化を見据えると照明命令の使用具合が変化として分かりたいので、ひとつのデータストアの中のJSONの値で分配する方法にしました。

enebularのしくみ

enebularはIFTTTと家のNode-REDを橋渡しします。IFTTTのWebHookからenebularの持つHerokuのURLにデータを受け取るところが入り口です。

image

加えて、IFTTTから家の照明へは文字列で命令を飛ばすので、家の照明制御をするときのログを可視化したい場合には扱いやすいように、数値で別途light_logを送るMilkcocoaデータストアの流れも作っておきます。

こうすることで後述するGoogle Homeの発話を捉えるIFTTTのアプレットか家へら橋渡しつつも、InfoMotionで可視化出来るようにログも残すことが出来ます。

IFTTTのenebularへ送るしくみ

つづいて、IFTTTの設定です。

image

今回は照明を全点灯する「明るく照明をつけて」というGoogle Homeへの命令をフックしてenebularのURLへデータを投げる仕組みです。

This

ThisのGoogle Assistantの発動する部分です。

image

image

素直に、What do you want to say のところに日本語で入力します。言語設定を日本語にするのを忘れないようにしましょう。

That

ThatのWebHookでenebularにデータを送る部分です。

image

まず、enebularのフローエディタ右上のアイコンからenebularのURLを把握しておきます。

image

WebHookの設定でURLのところにコピーします。

image

他はメソッドをPOST、ContentTypeをJSONにして、送るデータを全点灯を示す {"light_type":"all_light"} にします。

実際に動かしてみましょう

IFTTT・enebular・家のNode-REDの設定が出来ましたので、早速動かしてみましょう。

image

リアルな家の中が見えにくいように、手に掲げて命令します!

うまくいきました。Google Home結構フレーズ理解してくれる。

可視化してみる

そして、念願の使用状況のログを取ってみました。

image

テストで何度も動かしてみたので全点灯3・普段点灯2・常夜灯1が頻繁に動いています。数日しばらく利用してみると、ちょうど自分の寝る時間に常夜灯にする生活ログが分かりやすくとれました。

まとめ

ということで、Google Homeで家の照明制御をするときのログを見てみたいのでenebularで可視化してみました。

構想としてはイメージできていたのですが、IFTTTを経由したとは言えenebularでGoogleHomeの命令を家に引き入れてログを取るというのはやってみるとかなり楽しかったです。

ですが、IFTTTの部分はワンフレーズで命令するため、今後、家のいろいろな制御をしたいときに制約がでると予想されます。また、命令も今回は家電を指し示すものがなく、ひとつの明かりを指しているため、複数を動かす際にはもっと丁寧に設計を考えなければならないでしょう。

IFTTTでは2017/12/28現在、GoogleHomeに何かを話させる仕組みはまだありません。つまり、なにかのセンサーの値を「ねえGoogle、今日の部屋の温度は?(と、部屋センサーに聞く)」といったことは難しいです。となると、いずれちゃんとGCP内のDialogFlowやFIrebaseを利用してもっと柔軟に引き出してみたいと思いました。