Raspberry Pi で google-home-notifier を利用してGoogleHomeをしゃべらす方法

# 1. はじめに
記事作成時点（2018/03/18）で、すでにたくさんの方が挑戦済みの、Raspberry Pi で google-home-notifier の利用をしたところ、思いのほかつまづいたので、自分自身への備忘録をかねて、チャレンジした内容をお伝えしたいと思います。

今回は、ほんとに備忘録てきな簡単記事にしようとおもっていますので、間違いがあれば、ご指摘をコメント欄にご投稿、よろしくおねがいいたします。

## 1-1. この記事を読んでできること
- AIY Voice Kit 化した Raspberry Pi で、google-home-notifier を利用し、同一ローカルネットワークに存在する GoogleHome さんを、Raspberry Pi からのコマンド実行（Node.js実行）で、おしゃべりさせれるよになる。
- 検証してませんが、AIY Voice Kit 化してない Raspberry Pi でも、同じ手順で平気のはずです。その際は、スピーカから音が鳴ることを事前に確認しておいてください。

## 1-2. 事前注意
- つまづきポイントの1つ目になりますが、ネット記事を参考にチャレンジして失敗されている方、そのネット記事は、ご自身のOS環境（Windows ／ Mac OS X ／ Linux系 ／ Raspberry Pi）と同じですが？私の第一つまづきポイントは、必死にWindowsの記事を読みながら、Raspberry Piをセットアップしていました。google-home-notifierは、環境依存しやすいみたいなので、かならずご自身と同じOS環境の記事を参考にしてください。
- 今回のOS環境は、Raspberry Pi で、しかも、AIY Voice Kit 化してます。（ちょっと特殊でまことにすみません。）

# 2. 必要なもの
## 2-1. デバイス編
- 対象デバイス（Raspberry Pi3）

## 2-2. ソフトウェア編
- たぶん必要なし。（必要なソフトウェアは、手順に従いコマンドでセットアップします。）

# 3. セットアップ手順
## 3-1. Node.js、npmインストール
Raspberry Piに、Node.js と npm をインストールします。

```plaintext:Node.js、npmインストールコマンド
$ sudo apt-get update
$ sudo apt-get install -y nodejs npm
$ sudo npm cache clean
$ sudo npm install npm n -g
$ sudo n stable

バージョンチェック
$ npm -v
$ npm -v

```

## 3-2. pythonインストール
Raspberry Piに、python をインストールします。
私は、python2.7をインストールしました。
インストールコマンド手順を忘れちゃったので、コマンドは割愛します。（あとで時間があれば、コマンド履歴historyから、追記しておきます。ごめんなさい。）

で、ここで、つまづきポイントその2を紹介しっます。
重要なことは、python コマンドのパスをちゃんと通しておくことです。私の場合、npmコマンドで、python コマンドが見つかりませーんのエラーが沢山でてて、びっくりしました。

```plaintext:pythonのパス確認、パス設定
パス確認
$ which python

パスを通す
$ npm config set python /home/pi/.pyenv/shims/python
```

## 3-3. 各種ライブラリのインストール
google-home-notifierで利用しているであろう、各種ライブラリをインストールします。

```plaintext:各種ライブラリインストールコマンド
$ sudo apt install libnss-mdns libavahi-compat-libdnssd-dev

ここも、3つ目のつまづきポイントかな、「fatal error: dns_sd.h」とかのエラーが出ている人は、たぶんこのコマンドを打てば直るはず。

```

## 3-4. google-home-notifierのインストール
google-home-notifierをインストールします。

```plaintext:google-home-notifierインストールコマンド
作業ディレクトリの作成
$ cd ~
$ mkdir notifier_test
$ cd ./notifier_test

インストール
$ npm install google-home-notifier

```

## 3-5. GoogleHomeのIPアドレスとデバイス名の確認
Node.jsのサンプルソースで、GoogleHomeのIPアドレスとデバイス名を設定する必要があるので、先に確認する。
確認の仕方は、お持ちのGoogleHomeアプリ（家のマークアイコンのやつ）からおこないます。

- スマートフォンから、GoogleHomeアプリを開く。▼
![Screenshot_20180318-093750.png](https://qiita-image-store.s3.amazonaws.com/0/240522/553a6394-446b-6ab2-49fb-d25089cff802.png)

　

- 赤枠のメニューをタッチする。▼
![Screenshot_20180318-093811.png](https://qiita-image-store.s3.amazonaws.com/0/240522/dad7a0ec-cd31-43d2-53ea-cf4c4b7c71fc.png)

　

- GoogleHomeのデバイス名をメモり、3点ハンバーガーメニューをタッチする。▼
![Screenshot_20180318-093925.png](https://qiita-image-store.s3.amazonaws.com/0/240522/2a81e4fa-a602-6de4-1eff-994490a9fed8.png)

　

- GoogleHomeのIPアドレスを確認する。▼
![Screenshot_20180318-093937.png](https://qiita-image-store.s3.amazonaws.com/0/240522/c492fdfc-fce0-3f5b-e3b1-3d451e44fce9.png)

　

## 3-6. gitからサンプルソースをいただく
git（たぶんgoogle-home-notifierの作者さま）から、node.jsのサンプルソースを頂戴する。

[参照先：google-home-notifier](https://github.com/noelportugal/google-home-notifier)

## 3-7. gitのソースをアレンジする
自分の環境にあうよう、サンプルソースをアレンジします。
サンプルソースファイル名は、sample.js としました。

```javascript:sample.js
// ライブラリ参照
var googlehome = require('./google-home-notifier');

// 言語設定
var language = 'ja';

// GoogleHomeのIPアドレス（さっき調べたGoogleHomeのIPアドレスに書き替えてね。）
googlehome.ip('192.168.100.115');

// 第一引数を自分のもっているGoogleHomeの名前に書き替えてね。（さっき調べたやつね。）
googlehome.device('GoogleHomeMini', language);

// 話させたい言葉をここにセットするよ。
var text = 'こんにちは,、グーグルホームミニです。';

// メイン処理
try {
    // 実行
    googlehome.notify(text, function(notifyRes) {
        // ログ出力
        console.log(notifyRes);
    });

// エラー処理
} catch(err) {
    // ログ出力
    console.log(err);
}

```

## 3-8. google-home-notifierの実行
サンプルソース（sample.js）を実行して、Raspberry Pi で GoogleHome をしゃべらせてみる。
ちなみにですが、Raspberry Pi と GoogleHome は、同一ローカルネットワーク内（同じWi-FiにつながってればたぶんOK）になきゃダメですよ。Raspberry Piから、GoogleHome の IPアドレスにpingコマンドをしてみるなり、疎通確認はお願いしますね。

```plaintext:サンプルソース（sample.js）の実行
作業ディレクトリへ移動
$ cd ~
$ cd ./notifier_test

実行！！
$ node sample.js

うまくいけば、GoogleHomeがおしゃっべりします。

```

# 8. 参考サイト

- [参考：RaspberryPiでgoogle-home-notifierをインストールしてお好みの言葉を話してみる](http://uepon.hatenadiary.com/entry/2018/01/09/213154)

- [参考：noelportugal/google-home-notifier](https://github.com/noelportugal/google-home-notifier)

# 9. さいごに
みなさん、Raspberry Pi で google-home-notifierを利用する方法はいかがでしたか？みなさんの環境でも、うまくセットアップできていれば幸いです。（私はなんだかんだ3時間くらいはまりました。。。）うまくいけば、30分もあれば動くはずです。うまくいっても、うまくいかなくても、とりあえずやってみることって大切ですよね。ぜひ、YoutubeとかTwitterとかされているかたは、動いた動画や、写真をアップしてみてください。たくさんの方からの反応があるはずです！

今後も、スマートスピーカ関連の記事を、アップしていきますので、お楽しみに。

2018/03/18 TAKAHIRO NISHIZONO