ほりひログ

所属組織の製品 (Azure とか) に関連する内容が多めだけど、個人の見解であって、所属組織を代表する公式情報ではないです。

esp8266-google-home-notifier を製造者責任で使う

この記事は IoTLT Advent Calendar 2018 22 日目です。


本当は、↓のツイートを見て、Moddable SDK を試して、それを書こうと思ってました。

でも、時間がなくて試せなかったことと、11 日目にいい感じの記事が書かれていますので、esp8266-google-home-notifier について書こうと思います。

esp8266-google-home-notifier は、GitHubArduino Libraries に公開しています。

github.com

www.arduinolibraries.info

作って公開した割には、イマイチいい使い方のアイデアが浮かばず、放置気味だったので、製造者責任として、自分でも何か作ってみました。

作ったものは、Google Home を使って、「決まった時間&決まった言葉を、Google Home に喋ってもらう」です。
まぁ、なんつーか、鳩時計ですよね。

esp8266 と、この手のシステム作りではお馴染みの Node-RED を使いました。

予め Node-RED の websocket ノードに ESP8266 を繋げておいて、Google Home に喋らせたいフレーズを Node-RED から Web Socket 経由で ESP8266 へ渡し、ESP8266 が Google Home を喋らせます。
決まった時間をトリガーにするのも、Node-RED にやってもらいました。

こんな感じで、「○○の時間」という inject ノードで定期的に実行しています。 f:id:horihiro:20181216214801p:plain

稼働させてみるとすぐ気づくんですが、この構成だとトリガーを増やしたいと思った時に、inject ノードを増やさないといけません。
そうなると、どんどんノードが増え、あまり見栄えが良くありません。

なので、Google カレンダーでトリガーしたいタイミングを管理してみました。
下記の node-red-node-google にあるノードを使って Google カレンダーのイベントを取得します。

flows.nodered.org

この Google カレンダーで管理する方式だと、イベントの繰り返しも含めて簡単に管理できます。

あとは以前と同じ流れで Google Home を喋らせています。

f:id:horihiro:20181216214916p:plain

と、ここまで作って使ってみたところ、ふと「そもそも Google カレンダーと Google Home って、ここまで頑張らないと連携できないの?」と我に返りました。

少し調べてみたところ、Google カレンダーの「リマインダー」を使えば、何らかの通知を Google Home に送れるそうです。
でも、あまり柔軟なことはできなそうです。試してないですけど。

上の仕組みだと、好きなメッセージを再生できますし、なんだったら 17時半に蛍の光を流すとか、Google Home で再生する内容を柔軟に変えることが可能です。
# そーまでしてやりたいかどうかは別として。

と、自分のアイデアではここまでで精一杯なので、もしこれを使って何か作ってる人がいたら、メンテナンスするモチベーションにもなるので、Twitter とかでつぶやいてもらえるとありがたいです。

年末年始に向けては、ちゃんと Moddable SDK をいじってみようかと思います。

ではでは。