前提条件
「google-home-notifier」利用に向けて、Raspberry PiへNode.jsとnpmをインストールします。 参考ページ
@raspberrypi:~/google-home-notifier $ node -v v10.16.0 @raspberrypi:~/google-home-notifier $ node npm -v 6.9.0
参考にさせていただいたページです。
GoogleHomeスピーカーに外部からプッシュして自発的に話してもらいます
Google Home に任意のテキストを喋らせる
GitHub-google-home-notifier
google-home-notifierで"Error: get key failed from google"とエラーが出る問題の対処法
google-home-notifierインストール
@raspberrypi $ curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash - @raspberrypi$ sudo apt-get install nodejs @raspberrypi $ sudo apt-get install git-core libnss-mdns libavahi-compat-libdnssd-dev @raspberrypi$ git clone https://github.com/noelportugal/google-home-notifier @raspberrypi $ cd google-home-notifier/ @raspberrypi $ npm install
GoogleTTSの仕様変更対応
GoogleTTSの新バージョンがリリースされており、このままでは、うまく動作しません。仕様変更により、今まで利用していたユーザーも利用できなくなり、関連する記事がWEBに複数出ておりました。
Error: get key failed from google
at /home/user/google-home-notifier/node_modules/google-tts-api/lib/key.js:23:23
at process._tickCallback (internal/process/next_tick.js:68:7)
package.jsonのバージョン情報を変更。(0.0.2から0.0.4に変更)
"keywords": [ "google home", "notifications", "notifier" ], "license": "MIT", "dependencies": { "body-parser": "^1.15.2", "castv2-client": "^1.1.2", "express": "^4.14.0", "google-tts-api": "0.0.4",// ここを0.0.4に書き換える "mdns": "^2.3.3", "ngrok": "^2.2.4" },
pakage.jason変更後に、google-tts-apiのアップデートを実施。
@raspberrypi:~/google-home-notifier $ npm update google-tts-api
Webhook(WEBリクエスト)形式での運用準備
google-home-notifierフォルダにあるexample.jsを流用して、以下の形式でのリクエストによりGoogleホームより音声出力を実現します。以下のコマンドで、WEBアクセスの待ち状態となります。
node.js example.js
Endpoints:
http://192.168.xxx.xxx:9081/google-home-notifier
GET example:
curl -X GET http://192.168.xxx.xxx:9081/google-home-notifier?text=Hello+Google+Home
POST example:
curl -X POST -d "text=Hello Google Home" http://192.168.xxx.xxx:9081/google-home-notifier
起動時に以下のWARNINGが出るのですが、ほかの方もWARNINGが出たまま運用しているようです。(WARNINGを消す情報は見つけられませんでした)
*** WARNING *** The program 'node' uses the Apple Bonjour compatibility layer of Avahi. *** WARNING *** Please fix your application to use the native API of Avahi! *** WARNING *** For more information see <http://0pointer.de/blog/projects/avahi-compat.html> *** WARNING *** The program 'node' called 'DNSServiceRegister()' which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi. *** WARNING *** Please fix your application to use the native API of Avahi! *** WARNING *** For more information see <http://0pointer.de/blog/projects/avahi-compat.html>Endpoints:
それでは設定です。google-home-notifierフォルダにあるexample.jsの言語設定を2か所変更します。
var language = 'ja'; // default language code
後は、Google HomeのIPアドレスと、WEBアクセスを受けるポートをexample.jsに設定します。
今回は3台分のGoogle Home Miniを運用したいので、example.jsを3個コピーして、3個のスクリプトを起動する方式にしました。
- Google-Home-1:192.168.xxx.81:ポート番号9081
http://192.168.xxx.xxx:9081/google-home-notifier?text= Hello+Google+Home - Google-Home-2:192.168.xxx.82:ポート番号9082
http://192.168.xxx.xxx:9082/google-home-notifier?text=Hello+Google+Home
- Google-Home3:192.168.xxx.83:ポート番号9083
http://192.168.xxx.xxx:9083/google-home-notifier?text=Hello+Google+Home
forever導入による常時起動化とサーバー再起動時の自動起動
【Node.js入門】foreverの使い方とデーモン化による永続化・自動起動まとめ!
Node.js製のアプリをforeverで永続化する
foreverモジュールの導入方法
@raspberrypi:~/google-home-notifier $ sudo npm install -g forever
起動時のコマンドは、以下となります。
/usr/local/bin/forever start /home/user/google-home-notifier/google-home-1.js
再起動時にスクリプトが自動起動するようにクーロン登録します。
@raspberrypi:~/google-home-notifier $ crontab -e
以下を登録します。
@reboot /usr/local/bin/forever start /home/user/google-home-notifier/google-home-1.js @reboot /usr/local/bin/forever start /home/user/google-home-notifier/google-home-2.js @reboot /usr/local/bin/forever start /home/user/google-home-notifier/google-home-3.js
以上、上手く行ったら良いですね。
時間があれば、HOYAのVoiceText Web APIを利用する方法へ変更する予定です。
【うまく動作しなかった際に、実行したコマンドです】
@raspberrypi:~ $ sudo npm install -g npm @raspberrypi:~/google-home-notifier $ npm update