Posted at

Windows PCを使ってGoogle Homeを喋らせてみた


はじめに

Google home miniを使って、外部のアプリ等で通知した内容を喋らせることができないか試してみた。

Google home miniから、特定の文言で外部アプリに連携することは、IFTTTを使ってできる。

だが、Google Homeを喋らせるためには、google-home-notifierを使用する必要がある。

google-home-notifier:Googleホームに通知を送信するNode.jsライブラリ

WindowsのPCでgoogle-home-notifierを実行し、Google Homeを喋らせる方法について試してみた。

OS:Windows 10


準備


  1. Node.jsのインストール

    Node.js - 10.15

    ※推奨版と最新版があるが、今回は、推奨版を使用


  2. Windows Build Toolsのインストール

    コマンドプロンプト(※管理者で実行する)で以下のコマンドを実行する。

    npm install --global --production windows-build-tools


  3. node-gypのインストール

    コマンドプロンプト(※管理者で実行する)で以下のコマンドを実行する。

    node-gyp に記載されている方法に従って実施する。

    npm install -g node-gyp

    キャプチャ002.png

    Pythonが複数バージョンインストールされている環境において、npm経由でnode-gypを実行する場合、Python2.7を使用する必要があるため、以下のコマンドを実行する。(※Python3.x系では、node-gypが実行できない。)

    npm config set python /path/to/executable/python2.7


  4. Bonjour SDKのインストール

    Bonjour SDK for Windows

    インストーラーをダウンロードするために、Apple IDでのサインインが必要。

    環境変数にBONJOUR_SDK_HOMEが設定されていることを確認する。

    設定されていない場合は、「C:\Program Files\Bonjour SDK」で設定する。


  5. Bonjour Print Serviceのインストール

    Bonjour Print Service(Windows)


  6. google_home_notifierのインストール

    コマンドプロンプト(※管理者で実行する)で適当な作業フォルダにcdコマンドで移動後に以下のコマンドを実行する。

    git clone https://github.com/noelportugal/google-home-notifier

    cd google-home-notifier

    npm install



プログラム

まずは、google-home-notifierないのexample.jsを用いて、google homeを喋らせることができるか試す。

IPアドレスと言語(以下の画像で黄色に色付けしている箇所)を修正し、Node.jsで実行する。

IPアドレス:GoogleHomeアプリで確認した値を設定する

言語:jaを設定

キャプチャ003.png

キャプチャ004.png

表示されたエンドポイントに対して、リクエストを送信したところエンドポイント側で以下のエラーが表示され、Google Homeは喋ってくれない

キャプチャ005.png

google-home-notifierで"Error: get key failed from google"とエラーが出る問題の対処法を参考に対処を実施

Node.js内にインストールされたgoogle-home-notifierに含まれるpackage.jsonを編集する。

編集内容

node_modules\npm\node_modules\google-home-notifier\package.jsonの以下の画像の黄色で色付けしている箇所を0.0.5に変更する。

キャプチャ006.png

上記対応をして再度試したところ、Google Homeを喋らせることができた。

example.jsをもとに、エンドポイントを立ち上げ、IFTTTのアクションでWebhooksで立ち上げているエンドポイントにリクエストを送信すると、外部のアプリから、Google Homeを喋らせることができた。