この記事は IoTLT Advent Calendar 2018 22 日目です。
本当は、↓のツイートを見て、Moddable SDK を試して、それを書こうと思ってました。
M5StackをECMAscriptでプログラミングできようになるかも知れない…Webエンジニア向けの最強IoTデバイスになるよコレ。
— Kimio Kosaka (@kimio_kosaka) 2018年12月2日
でも、時間がなくて試せなかったことと、11 日目にいい感じの記事が書かれていますので、esp8266-google-home-notifier について書こうと思います。
esp8266-google-home-notifier は、GitHub や Arduino Libraries に公開しています。
作って公開した割には、イマイチいい使い方のアイデアが浮かばず、放置気味だったので、製造者責任として、自分でも何か作ってみました。
作ったものは、Google Home を使って、「決まった時間&決まった言葉を、Google Home に喋ってもらう」です。
まぁ、なんつーか、鳩時計ですよね。
esp8266 と、この手のシステム作りではお馴染みの Node-RED を使いました。
予め Node-RED の websocket ノードに ESP8266 を繋げておいて、Google Home に喋らせたいフレーズを Node-RED から Web Socket 経由で ESP8266 へ渡し、ESP8266 が Google Home を喋らせます。
決まった時間をトリガーにするのも、Node-RED にやってもらいました。
こんな感じで、「○○の時間」という inject ノードで定期的に実行しています。
稼働させてみるとすぐ気づくんですが、この構成だとトリガーを増やしたいと思った時に、inject ノードを増やさないといけません。
そうなると、どんどんノードが増え、あまり見栄えが良くありません。
なので、Google カレンダーでトリガーしたいタイミングを管理してみました。
下記の node-red-node-google
にあるノードを使って Google カレンダーのイベントを取得します。
この Google カレンダーで管理する方式だと、イベントの繰り返しも含めて簡単に管理できます。
あとは以前と同じ流れで Google Home を喋らせています。
と、ここまで作って使ってみたところ、ふと「そもそも Google カレンダーと Google Home って、ここまで頑張らないと連携できないの?」と我に返りました。
少し調べてみたところ、Google カレンダーの「リマインダー」を使えば、何らかの通知を Google Home に送れるそうです。
でも、あまり柔軟なことはできなそうです。試してないですけど。
上の仕組みだと、好きなメッセージを再生できますし、なんだったら 17時半に蛍の光を流すとか、Google Home で再生する内容を柔軟に変えることが可能です。
# そーまでしてやりたいかどうかは別として。
と、自分のアイデアではここまでで精一杯なので、もしこれを使って何か作ってる人がいたら、メンテナンスするモチベーションにもなるので、Twitter とかでつぶやいてもらえるとありがたいです。
年末年始に向けては、ちゃんと Moddable SDK をいじってみようかと思います。
ではでは。