Google Homeに喋らせてみた
さいしょに
本記事はただの学習記録です。
環境
- Ubuntu 18.04.1 LTS
- node.js v10.14.1
失敗編
この記事の内容を実行してみたかっただけ
https://qiita.com/SatoTakumi/items/c9de7ff27e5b70508066
必要なライブラリ
1 | `sudo apt install libavahi-compat-libdnssd-dev |
蛇足
もし、 apt install がエラーになった場合は、 /etc/apt/source.list が以下のようになっているか確認して下さい。
標準では、 main だけになっているはずです。
1 | `deb http://archive.ubuntu.com/ubuntu bionic main universe multiverse |
コードを実行してみると・・・ 動かない(その 1)
Error: get key failed from google
API の返り値が変わってしまった為に、google-tts-api ライブラリがエラーを吐いている模様。
原因は以下の Qiita に詳しく書いてありました。
https://qiita.com/ezmscrap/items/24b3a9a8548da0ab9ff5
google-tts-api の新しいバージョンでは対応済みのようなので、 package.json の以下の行を書き換えてバージョンアップさせます。
1 | `# 20行目付近 |
コードを実行してみると・・・ 動かない(その 2)
Web ブラウザから、 http://<host>:8091/google-home-notifier?text=Hello+Google+Home
を実行してみると、(大量の WARNING はとりあえず無視して)
1 | `Error: connect ECONNREFUSED 192.168.1.20:8009 |
これは割と単純で、Google Home の IP アドレスが分かっていない時に起きる。
example.js の先頭に var ip = '192.168.1.20'; // default IP というところがあるので
それを書き換える。
なお、Google Home の IP アドレスは、Google Home アプリの設定画面の一番下に表示されている。
これを直せばとりあえず動くはず。
蛇足:
すぐ上に Google Home のデバイス名が設定されているが、これは間違っていても IP アドレスが正しければ動く。
(とりあえず初版)
IP アドレスが固定なのはさすがに酷い
対応その 1
そもそも、README に書いてある通りの事をやっていなかった。
https://github.com/noelportugal/google-home-notifier#after-npm-install
・・・やっても効果はなく、しかも npm で入れたものに対して修正かけるのは反則なのでは・・・
原理から考えてみる
Google Home アプリは普通に自動的に Google Home を発見できるので、何かのプロトコルで探索できるはず。
というか、普通に example.js が mDNS を呼んでいるのでこれで見つかるはず。
でも、先にググってみたら既に Qiita にお書きになってる人がいらっしゃいました。
https://qiita.com/tinoue@github/items/ecb8b6211bee686a75e8
要するに、example.js の devicename に書く値が・・・というよりもう探索の仕方が(今となっては)正しくない。
example.js のコードでは、現状実質 IP アドレスベースで動かすしかない。