Google Homeを自発的に喋らせるために
この記事でやること
GoogleHomeを自発的に喋らせるためには事前に以下の設定をする必要がありました。
コマンドを入力することで、Google Homeが喋れるようにします。
コマンドで喋らせることが出来る人は「GoogleHomeが自発的に天気を教えてくれるようにする」の記事をご覧ください
この記事を書くに至った経緯
IFTTTでthisにWeather Underground、thenにGoogle Assistantを設定して、雨の日だけgoogle homeが自発的に通知してくれるように組みたい!
と思ったけど、thenにGoogle Assistantを設定できない。
色々調べているとWebhooksをつかってGoogleHomeが自発的に喋るように出来ることを知りました!
ラズベリーパイはGoogle Home購入時期に合わせて購入したのですが、「node.js」は存在だけ知ってて使ったことは無かったし、自発的に喋らすための「google-home-notifier」の設定周りや「npm」のバージョン関連でかなり躓いたため設定手順をメモ φ(ー` )メモメモ
必要なもの
用意したのは以下の通り(ラズベリーパイ周りで必要なもの)
- Raspberry Pi3 Model B ボード&ケースセット 3ple Decker対応 (Element14版, Clear)-Physical Computing Lab
- micro sd
- HDMI
- ラズパイ用の電源
- ディスプレイ
- WindowsのPC
コマンドを実行し、Google Homeを喋らすための手順
1.ラズベリーパイにOSをインストール
ラズベリーパイのOSは以下のサイトを参考にし、NOOBSから「Raspbian」の2.4.4を入れました。
【初心者向け】ラズベリーパイの初期設定!OSをインストールする方法
2.node.jsの更新
Raspbianには標準でNode.jsがインストールされているそうです。
最初は、nodeとnpmをそれぞれ最新の状態に更新したのですが後々エラーが大量に発生する羽目になりました。nodeとnpmのバージョンには相性があるようで、最新のものを入れればいいというわけではないようです。
「google-home-notifier」に書かれている手順に沿って更新を行います。
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install nodejs
指示通り、以下のパッケージもインストールします
sudo apt-get install git-core libnss-mdns libavahi-compat-libdnssd-dev
この時点で以下のバージョンになりました
nodeのバージョンが7.10.1
npmのバージョンが4.2.0
※確認コマンド
node -v
npm -v
3.google-home-notifierのインストール
続いてgitで「google-home-notifier」を取得します。
git clone https://github.com/noelportugal/google-home-notifier.git
cd google-home-notifier/
npm install
最初は「google-home-notifier」に書かれている手順に沿ってgoogle-home-notifierのインストールを行ったのですが、インストール後「google-home-notifier.js」が無く後々行き詰る羽目になったのですが、上記のコマンドで取得することでできました。
4.browser.jsを編集
「google-home-notifier」に書かれている手順に沿って「google-home-notifier/node_modules/mdns/lib/browser.js」を編集します。
※最下部に該当のコードがあります(「{families:[4]}」を加えるだけ)
sudo nano node_modules/mdns/lib/browser.js
Browser.defaultResolverSequence = [
rst.DNSServiceResolve(), 'DNSServiceGetAddrInfo' in dns_sd ? rst.DNSServiceGetAddrInfo() : rst.getaddrinfo()
, rst.makeAddressesUnique()
];
↓↓↓
Browser.defaultResolverSequence = [
rst.DNSServiceResolve(), 'DNSServiceGetAddrInfo' in dns_sd ? rst.DNSServiceGetAddrInfo() : rst.getaddrinfo({families:[4]})
, rst.makeAddressesUnique()
];
5.example.jsを編集
「example.js」を編集します。
- 「var deviceName = ‘Google Home‘」Google Homeに設定してある名前を書く(「リビング」にしました)
- 「const serverPort = 8091;」ポート番号を書く(「8080」に変更しました) ※2018/1/27追記 ラズパイを更新するとエラーが出たので8091に戻しました。
- 「var ip = ‘192.168.1.20‘」Google Homeのipを設定しました
- 「var language= ‘pl‘」言語を設定(「’ja’」に変更しました2か所ありました)
6.google-home-notifier.jsを編集
「google-home-notifier.js」を編集します。
- 「lang = ‘en‘」言語を設定(「’ja’」に変更しました2か所ありました)
- 「deviceAddress = ‘192.168.1.20‘」Google Homeのipを設定しました
7.コマンドで喋らす
以下のコマンドを実行し、google-home-notifierを待機状態にします。(WARNINGが複数出てたけど大丈夫っぽい)
node example.js
別のコンソールを立ち上げ、example:に書いてあるコマンドをそのままたたく
参考:「google-home-notifier」
curl -X POST -d "text=Hello Google Home" https://xxxxx.xxxx.xx/google-home-notifier
「text=」に書いてある文字をGoogleHomeが喋ってくれます。
2018/03/14 追記
「google-home-notifier」でエラーが発生しました。使い始めて3ヵ月程度は問題ないので後で対応でもOK
「コマンドで喋らす」を設定してみました。
「コ↑マンド↓」という発音になっていますがそこはご愛敬
続いて、IFTTTを使って「GoogleHomeが自発的に天気を教えてくれるようにする」を書きました
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント