すたっしゅlog

ブログです.

Google Homeにnasneの情報を喋らせる

Google Home Miniが量販店で半額になっていたので購入した.
普段から使用しているnasneの情報を喋らせたい.

ひとまず,nasneの次の録画予約と録画中の番組を返答できる状態にすることを目指す.

環境

構成

beebotteでChannel,resourceを作成

MyHomeというChannelを作成し,その中にnasneというresourceを作成した.

f:id:stash4:20180623181611p:plain

ここで表示されているChannel Tokenの値やChannel名,resource名は,IFTTTやNode-REDの設定で使用する.

IFTTTでアプレットを作成

例えば『OK Googlenasneの次の予約』と聞いた場合に,"nasne","次の予約"という情報を含むJSONを,beebotteで作成したChannelのresource(今回はMyHome/nasne)に送信できるようにする.

項目
What do you want to say? nasneの $
What do you want the Assistant to say in response? nasneの $ を調べています
Language Japanese
  • Webhook
項目
URL https://api.beebotte.com/v1/data/publish/作成したChannel名/作成したresource名?token=作成したChannelのtoken
Method POST
Content Type application/json
Body {"data": [{"target": "nasne", "action": "{{TextField}}"}]}

上の例で『OK Googlenasneの次の予約』と聞いた場合,$には"次の予約"という文字列が入っており,それが{{TextField}}にも入ることになる.

Node-REDをアップデートして起動確認

Raspbian Stretchには初めからNode-REDがインストールされている.

$ update-nodejs-and-nodered
$ node-red-start

ブラウザでhttp://{Raspberry PiのIPアドレス}:1880にアクセス.

自動起動の設定

$ sudo systemctl enable nodered

Node-Redからbeebotteに接続

mqtt inノードをフローに追加し,編集画面のサーバの項目で新規に mqtt-broker を追加...を選択.

タブ 項目
接続 サーバ mqtt.beebotte.com
ポート 8883
SSL/TLS接続を使用 チェックする
セキュリティ ユーザ名 token:作成したChannelのtoken

完了したら編集画面に戻る.

項目
サーバ 上で設定したもの
トピック 作成したChannel名/作成したresource名
QoS 2

これでデプロイすると,設定が正しければノードの下に"接続済"と表示される.

Node-RedからGoogle Homeに接続

右上のメニューからパレットの管理ノードの追加と進み,node-red-contrib-google-home-notifyを検索して追加.

googlehome-notifyノードをフローに追加し,IP AddressLanguageを設定する.ただし,初期状態ではLanguageEnglishしか選択できない.
一度IPアドレスを設定してデプロイすると,ノードがGoogle Homeを認識する.その後再びノードの設定画面を開くと,Japaneseやその他の言語も選択できるようになっている.

フローの作成・編集

これでGoogle HomeIFTTTbeebotteNode-REDGoogle Homeと全ての接続が可能になった.
あとはNode-REDでフローを作成・編集してnasneの情報を取得し,返答の文字列を作成してgooglehome-notifyノードに送れば良い.

  • メインフロー f:id:stash4:20180623191144p:plain
  • 次の予約 f:id:stash4:20180623191153p:plain
  • 録画中の番組 f:id:stash4:20180623191202p:plain

functionノードでjavascriptが書けたりexecノードで外部コマンドが実行出来たりするので割と何でもありだが,なるべく各種ノードを活用するようにした.

nasneの情報取得に使用したAPIに関しては,以下の記事が詳しい.

pocketstudio.jp


ここまでで,以下のような会話が可能になった.

  • OK Googlenasneの次の予約』『nasneの次の予約を調べています……次の予約は6月23日土曜日18時からのhogehogeです』
  • OK Googlenasneの録画中の番組』『nasneの録画中の番組を調べています……6月23日土曜日18時からのhogehogeを録画中です』

おわりに

衝動的に購入したGoogle Homeだが,できることを簡単に増やすことが出来て楽しい.まだしばらく遊んでいきたいと思う.

参考