Google Home + Nature Remo API で室温を喋らせる
Google Home と Nature Remo の温度センサーを組み合わせることで、現在の室温を Google Home から喋らせることに成功しました。
実現方法
Google Home に任意の固定メッセージを喋らせるだけであれば IFTTT で実現できますが、今回は「室温」という動的な要素が含まれるため IFTTT 単体では不可能です。
通常であれば Google Home 用のアプリ開発が必要ですが、今回は少し変わったアプローチでチャレンジしてみました。以下の流れです。
- (1) Google Home に室温を尋ねる
- (2) IFTTT の Webhook で ngrok を叩く
- (3) ngrok がローカルの node.js を呼び出し
- (4) Nature Remo API から室温を取得
- (5) google-home-notifier 経由で Google Home を喋らせる
準備するもの
- Google Home もしくは Google Home mini
- Nature Remo もしくは Nature Remo mini
- node.js が動くローカルサーバ
- google-home-notifier
- IFTTT アカウント
1. google-home-notifier の準備
まずは google-home-notifier が動作する node.js 環境を用意します。
詳細な手順については、以前の記事 で解説しています。
簡単な動作確認スクリプトを実行し、Google Home が喋ることを確認。
// Google Home が「テストメッセージです。」と喋る
$ node step01.js
2. Nature Remo API の準備
室温を取得するため、Nature Remo API を準備します。
アクセストークンを用意し、curl で実行できることを確認します。
// 情報が取得できることを確認
$ curl https://api.nature.global/1/devices -H "Authorization: Bearer XXXXX"
// 室温のみに絞り込む
$ curl https://api.nature.global/1/devices -H "Authorization: Bearer XXXXX" | jq .[].newest_events.te.val
こちらも、以前の記事 で詳しい手順を紹介しています。
3. 室温取得スクリプト作成
まずは室温を取得する部分のみ、node.js で書いてみました。
12-14行目で Nature Remo API から取得、16行目で jq を使って絞り込んでいます。
$ node step02.js
現在の室温は27度です。
4. Google Home 応答処理追加
取得した室温を Google Home が喋るように書き換えます。
実行すると、Google Home が室温を喋ってくれました。
$ node step03.js
Device notified
5. ngrok 対応
このままではローカルでしか実行できないため、あまり意味がありません。
ngrok を利用して外部からのアクセスを待ち受けるようにします。
実行すると、ngrok のエンドポイントが表示されます。
$ node step04.js
Endpoint: https://123abcde.ngrok.io
この URL(https://123abcde.ngrok.io) にアクセスすることでスクリプトが実行され、Google Home が喋りだします。
6. IFTTT 登録
ここまで来たらあと一歩です。
Google Home をトリガーに Webhook を実行 するように、IFTTT の設定(アプレット)を作成します。
IFTTT の登録手順については、以前の記事 にて画像付きで詳しく解説しています。
7. 完成
もう一度動画を貼っておきます。
多少のラグはありますが、Google Home が現在の室温を教えてくれるようになりました。
まとめ
- Google Home + Nature Remo で室温を喋らせました
- IFTTT, ngrok, nodejs, Nature Remo API, google-home-notifier を組み合わせました
Google Home から動的なメッセージを返したい場合、google-home-notifier を使うと楽に実現できるためオススメです。
関連記事
google-home-notifier ではなく Google Home アプリとして開発した例↓