こんにちは、たねやつです。3記事目でこれがほぼほぼ最後の記事となります。
前の記事
準備
- Google Homeの初期設定が完了していること
- 前回記事までのExpressで作成したサーバーが起動していること
- Expressが動いているサーバーへ外部からアクセスできること。 ドメインの取得、DNSへの登録、自宅に割り当てられたIPアドレスが変更された際にDNSへ再登録する仕組みが常時稼働させるために必要となります。
MyDNSを使用すれば毎回変化する自宅のIPアドレスをDNSサーバーに登録するのは簡単なのですが自宅で公開するためのセキュリティ面に関してはこの記事では触れません。
作業
IFTTTで設定
IFTTTに登録する部分は割愛します。登録フォームを使用しなくてもGoogleアカウントと連携することで簡単に登録できるようです。
左上のユーザーのドロップメニューを押してNew Applet
を選択し、新規で登録します。this
の部分をクリックすると条件を指定する画面に移動します。そこでGoogle Assistant
を選択し、次の画面でConnect
をクリックします。
クリックすると初めて利用する場合、IFTTTとGoogleアカウントを紐づけるためのポップアップが出てきますので許可
を押します。これで紐づけは完了です。
次に表示される画面は認識する語句の設定例について書いてあります。
数値や単語を含んだ文章(「おはよう」とツイートして
)などが設定できるようです。今回使用するのはフレーズも単語も使用しない単純なものを使用します。(左上)
クリックすると認識する単語の設定に移ります。
項目 | 設定値 |
---|---|
What do you want to say? | Google Homeで認識する単語 |
What's another way to say it? (optional) | 同上(必須ではない) |
And another way? (optional) | 同上(必須ではない) |
What do you want the Assistant to say in response? | Google Homeの返事 |
Language | 日本語 |
という感じです。一つのコマンドに対して最大3パターンまで認識してくれるようです。IFTTTで連携する場合曖昧な命令に対しては反応してくれませんので注意してください!(「電気を消して」と設定して「電気消して」といっても反応しない)
Google Homeからのレスポンスの設定は空にしたままだとデフォルトの文言を発してきます(OK。アクションを実行します。
)。レスポンスが必要ない場合は裏技的な感じになりますが¿
を指定することで無音になります。¿は全角の?
を変換することで入力できます。スペイン語の疑問文で使うやつですね(;'∀')
設定したらCreate trigger
をクリックするとifの部分の設定が完了します。次にthat
の設定を進めてきます。
that
をクリックしてWebhooks
というサービスを選択します。これによりHTTPリクエストを送ったりすることができます。さらにMake a web request
をクリックして進めてきます。
項目 | 説明 | 値の例 |
---|---|---|
URL | HTTPリクエストを投げるURL | http://example:5432/lightOn |
Method | HTTPメソッド | GET |
Content Type | 取得できる値の種類 | text/plain |
Body | ボディメッセージ | (空) |
今までで作成したExpressの処理はアクセスしたら処理を実行するだけのものだったのでメソッドはGETでOKです。認証としてPOSTで何かしらトークンをのっけて送るのもアリなのかもしれません(;'∀')
Create action
をクリックすると確認画面が表示されます。Receive notification when this Applet runs
をオフにしておくといちいち通知が飛んで来ないようになります。
Finish
を押して作成完了です。実際に話しかけてみて動作を確認しましょう!
ラグについて
一つ気になるのが発話してから実際にリモコン操作が行われるまでの 遅延です(;'∀')
私の環境では言い終わってから約6~7秒ほどかかります。Google Homeからの返事を空にしても約6秒かかります。Express内での処理で1秒ちょっとかかっているのでIFTTT側の処理(言語解析など?)で5秒ぐらいかかっている様子です。
GET /lightOff 200 1208.929 ms - 10 GET /lightOn 200 1713.517 ms - 10 GET /lightOff 200 1179.990 ms - 10 GET /lightOn 200 1727.170 ms - 10 GET /lightOff 200 1162.553 ms - 10
6秒の遅延といえばWEBページであれば致命的な大きさですがスマートスピーカーにおいては意外と気にならないものですね!もう少しレスポンスを改善しようかと思ったのですがこのままにしておきます。
最後に
Google HomeとIFTTT、Raspberry Piで動かすExpressによって安価に環境を作ることはできました!一番のネックは環境を外部にさらす部分かもしれませんが声で家電が操作できるようになるのはかなり便利ですね。正直こんなことしなくても対応している家電(Philips Fueなど)を購入すればもっと敷居は下がるのかもしれないですが。。。作ることに意義があるのです!(笑)
参考
https://www.reddit.com/r/ifttt/comments/9zu6to/google_home_no_response_option/