EnOceanのスイッチストライクエアーでGoogle Homeに通知してもらう

EnOceanのトイレセンサー「スイッチストライクエアー」を使ってGoogle Homeに通知してもらうようにしました。
コチラの記事で信号を受信するところは確認してください。

https://qiita.com/h-takauma/items/e81f46c9170fed1baa18

2019-02-07 更新
google-tts-apiのバージョン変更

# 完成イメージ
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">EnOceanのスイッチストライクエアーを使ってリアルタイムにトイレの状況をGoogle Homeが通知してくれるデモ<a href="https://twitter.com/hashtag/GoogleHome?src=hash&amp;ref_src=twsrc%5Etfw">#GoogleHome</a> <a href="https://twitter.com/hashtag/EnOcean?src=hash&amp;ref_src=twsrc%5Etfw">#EnOcean</a> <a href="https://twitter.com/hashtag/%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81%E3%82%B9%E3%83%88%E3%83%A9%E3%82%A4%E3%82%AF%E3%82%A8%E3%82%A2%E3%83%BC?src=hash&amp;ref_src=twsrc%5Etfw">#スイッチストライクエアー</a> <a href="https://t.co/YT2acVfdKQ">pic.twitter.com/YT2acVfdKQ</a></p>&mdash; がおまる@スマートスピーカーアプリ開発入門発売中！ (@gaomar) <a href="https://twitter.com/gaomar/status/1057185908351471617?ref_src=twsrc%5Etfw">2018年10月30日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# 1. Node-REDにgoogle-home-notifyをインストールする
Node-REDから同じwi-fiに接続されているGoogle Homeにしゃべらせるためのモジュールをインストールします。

### 1-1. Manage paletteをクリック
右上のハンバーガーメニューからManage paletteをクリックします。

<img width="291" alt="スクリーンショット_2018-11-01_9_07_52.png" src="https://qiita-image-store.s3.amazonaws.com/0/154355/d4a959c9-f43f-a345-5792-41667bff6780.png">

### 1-2. google-homeで検索する
Installタブをクリックして、検索窓からgoogle-homeを入力して検索します。
node-red-google-home-notifyがあるので、右下にあるinstallボタンをクリックします。

<img width="716" alt="スクリーンショット_2018-11-01_9_08_13.png" src="https://qiita-image-store.s3.amazonaws.com/0/154355/aa339b2a-c7f2-3d2a-75b2-75fb418bfc20.png">

### 1-3. google-home-notifyノードを設置する
インストールが完了するとoutputカテゴリにgoogle-home-notifyノードが表示されているかと思います。
フローエディタにドラッグアンドドロップしてください。ドラッグアンドドロップしたノードをダブルクリックして設定を行います。

<img width="1364" alt="スクリーンショット_2018-11-01_9_09_25.png" src="https://qiita-image-store.s3.amazonaws.com/0/154355/6cd4b1ef-ac71-263a-3cd8-da30badb32d3.png">

### 1-4. Google HomeのIPアドレスを設定する
Google Homeアプリからしゃべらせたい端末のIPアドレスを確認します。
IPアドレスをそのまま入力します。言語は接続が完了しないとEnglishしか選べません。

![googlehome_001.png](https://qiita-image-store.s3.amazonaws.com/0/154355/2876d209-c1f1-7c8b-8433-6fb96a2cdb1d.png)

### 1-5. 一旦デプロイして、日本語に設定する
一旦デプロイして、google-home-notifyノードがReadyになることを確認します。

<img width="231" alt="スクリーンショット 2018-11-01 9.14.54.png" src="https://qiita-image-store.s3.amazonaws.com/0/154355/c2214cf5-c679-8c6d-5377-655f93a6bba0.png">

ノードをダブルクリックすると今度は言語のプルダウンリストが更新されてJapaneseが選択できるようになります。
<img width="512" alt="スクリーンショット_2018-11-01_9_15_16.png" src="https://qiita-image-store.s3.amazonaws.com/0/154355/92b98400-ceed-6696-f5b6-12bdb97d32a3.png">

### 1-6. templateノードでGoogle Homeにしゃべらせる言葉を設定する
templateノードをドラッグアンドドロップして、Google Homeにしゃべってもらう言葉を指定します。
payload.wordに[前回の記事](https://qiita.com/h-takauma/items/e81f46c9170fed1baa18
)で指定した言葉が格納されています。
<img width="1358" alt="スクリーンショット_2018-11-01_9_19_33.png" src="https://qiita-image-store.s3.amazonaws.com/0/154355/5d01f516-2c7c-b37e-19d6-ff87ab0d871d.png">

### 1-7. ノードをつないでデプロイする
各ノードを下記のようにつないでデプロイしてください。これでスイッチストライクエアーを押下する毎にGoogle Homeがしゃべりだします。
<img width="1138" alt="スクリーンショット_2018-11-01_9_20_11.png" src="https://qiita-image-store.s3.amazonaws.com/0/154355/9d0e7205-b581-a678-c339-489c8af24d9f.png">

# 注意点
google-home-notifyノードが`get key failed from google`と表示されることがあります。
これはgoogle-home-notifyで使っているgoogle-tts-apiのバージョンが古いからです。
<img width="249" alt="スクリーンショット 2018-11-01 9.22.28.png" src="https://qiita-image-store.s3.amazonaws.com/0/154355/83e8bb38-7caf-e53b-6af6-9b98b815b4a7.png">

### google-tts-apiをアップデートする
Node-REDのインストールしているフォルダへ移動してpackage.jsonファイルを直接編集する必要があります。

```
$ cd ~/.node-red/node_modules/google-home-notify
$ vi package.json
```

```javascript:package.json(抜粋)
// before
"dependencies": {
  "bluebird": "3.5.1",
  "castv2-client": "^1.2.0",
  "google-tts-api": "0.0.2-alpha.1" // ←ここのバージョンが古い
},

// after
"dependencies": {
  "bluebird": "3.5.1",
  "castv2-client": "^1.2.0",
  "google-tts-api": "0.0.4" // 0.0.4に変更する
},
```

### npm updateする
編集が終われば、npm updateコマンドでgoogle-tts-apiを更新します。

```
$ npm update
```

# まとめ
Google Homeのnotifyが最近更新されたので、このような手動アップデートが必要でしたが、
そのうち更新が反映されるかと思います。
Node-REDを使えば簡単にGoogle Homeと連携することができます。

システム化のご検討やご相談は弊社までお問い合わせください。
https://i-enter.co.jp/contact/