Node-REDでGoogle Homeにテキストをしゃべらせる

Google Home Notify Flow
Node-REDでGoogle Homeをしゃべらせてみます。
検索するとNode.jsの例がたくさんあります。ならばNode-REDでも同じはずです。ライブラリを見るとノードがあるようなので試してみます。


Google Homeに話しかけるだけではつまらないので、何かしゃべらせてみます。検索するとすぐにNode.jsのライブラリgoogle-home-notifierを使った例が見つかるでしょう。
noelportugal/google-home-notifier | GitHub
Send notifications to Google Home
という事はNode-REDでもすぐにできるのでは?

Node-REDは簡単にライブラリのノードやflowを追加インストールする事ができます。ライブラリに何があるかは次のリンクで探すことができます。
Node-RED Library | Node-RED
検索文字に"google-home"と入れてみましょう。スペースではなくハイフンにしないと検索にひっかからないです。
node-red-contrib-google-home-notify
たぶんこれですね。Daniel Kapplerさん、ありがとう!
早速入れてみましょう。

google-home-notifyのインストール

Node-REDの編集画面を開いて右端のメニューからパレットの管理を選びます。
パレットの管理を選択

表示された画面の"ノードを追加"タブをクリックするとライブラリを検索する事ができます。"google-home"と入れてみましょう。
ライブラリの検索

"ノードを追加"をクリックするとノードが追加できます。追加してみましょう。
しばらくするとノードをパレットへ追加した事を知らせるメッセージが表示されます。
インストール作業は終わりですので閉じるを押します。

画面左のノード一覧をスクロールして出力ノードを見てみます。
google home notify
"googlehome notify"ノードが追加されているでしょう。

Google Homeにしゃべらせてみる

Google Home Noitifyノードの初期設定

googlehome notifyをドラッグしてflow編集画面へドロップします。
ドロップしたノードをダブルクリックして設定を行います。まずはGoogle HomeのIPアドレスを教えます。

googlehome notifyの設定

IPアドレスを編集します。

Google HomeのIPアドレス

IPアドレスを入力します。この時、LanguageはEnglishしか選択できません。Google Homeを見つけて関連付けされないと選べないようです。
IPアドレスを入力したら設定を一度追わらせます。完了ボタンを押して閉じてください。

Google Home Notifyだけでデプロイします。するとノードの下に"ready"と出るでしょう。
google home notify ready

Google Homeが見つかったようです。もう一度ノードをダブルクリックします。
そしてIPアドレスの検索ボタンを押してみます。
Google Home Notify IP設定
すると今度はGoogle HomeのIPアドレスが表示されます。Chromecastも表示されていました。Google Homeを選択します。
今度はLanguageを選択できます。Japaneseを選択して更新します。
これでノードの初期設定ができました。

flowを作る

Google Home Notifyノードは文字列を受け取りしゃべります。
入力パレットから"inject"ノードをドロップします。
injectノードの追加

injectノードの初期値はDate型のタイムスタンプを出力する設定になっているようです。injectノードをダブルクリックして設定を開きます。

injectノードの設定
ペイロードの型を文字列にし、しゃべらせたい文字列を入力します。

injectノードとGoogle Home Notifyノードを接続します。
Flow
これで完成です。
デプロイします。

flowを流す

実際に動かしてみます。
injectノードの一番左側をクリックするとペイロードがflowへ流されます。
Flowのトリガ
クリックしてしばらくするとGoogle Homeがしゃべるでしょう。

調子に乗ってリクエストを送るとGoogle Homeが応答しなくなります。

まとめ

Node-REDでライブラリからGoogle Home Notifyノードを追加してGoogle Homeからしゃべらせる事ができました。
とても簡単でした。

Node-REDはjavascriptのライブラリを簡単に使うことができます。javascriptのままでは関数の名前や引数が何だったかすぐに忘れたりして面倒なところがあります。Node-REDではflowのpayloadに引数が詰め込まれるため理解がしやすくなりますね。実際にどんなデータが流れているかはデバッグノードですぐに見ることができ便利です。

インターネットの情報を取得するノードもありますから、その情報を切り取ってGoogle Homeでしゃべらせる事も可能です。Yahoo!ニュースのトピックスを取ってきてしゃべらせるなんて事もあっというまに出来ました。

IoTごっこが簡単にできるのでネットにつながるセンサーを増やしたくなります。

コメント

  1. こんにちは。
    Windows10にNode-REDをインストールして、GoogleHomeにテキスト文字列をしゃべらせようとしています。

    本ページに書かれていることを実施したのですが、Google Home Nofifyの下側に「get key failed from google」とエラー?が表示され、音声が再生されません。

    どのように修正すればよいのかご教授いただければ幸いです。

    よろしくお願い致します。

    返信削除
    返信
    1. こんにちは!
      返信遅れましたが解決したでしょうか?
      使っていないのでエラーを追っていませんが、軽く調べるとgoogle-ttsの仕様が変わったようですね。
      https://github.com/noelportugal/google-home-notifier/pull/47
      レポジトリの修正はまだのようなので自力で修正しなければならないようです。
      ググると対処法が見つかるでしょう。

      削除
    2. こちらのリンクの方が良かったですね。
      https://github.com/nabbl/node-red-contrib-google-home-notify/issues/27
      作者はもう修正する気が無いそうですが、修正方法が書いてあります。

      削除

コメントを投稿

最近のコメント

Threaded Recent Comments will be here.