LoginSignup
9
14

More than 5 years have passed since last update.

Raspberry Pi と Google Home で LINE と会話

Last updated at Posted at 2018-05-16

このメモは?

子供が Google Home に話しかけたら外出中の自分が返答できるようにしたい、ということで作ってみたときのメモ。
Google Home と Raspberry Pi、 LINE、 Google Apps Script を使った構成になっている。
基本的には他の人の記事にあるものを真似ただけなので、その参考にした記事へのリンクと、いくつか躓いた点をメモとして残しておく。
2018/5/16 ver1.0 公開

Raspbian OS導入から WiFi での ssh 接続まで

セットを組み立てて、キーボード、マウス、モニタをつなげて HW 的なセットアップは完了。
OSはここから落として入れた。
Download Raspbian
ダウンロードに時間がかかる以外は特に問題なし。

OS起動後、ちょっと手間取ったのは、WiFi の設定。
普通に設定しても繋がらない。国設定をしないといけないらしい。
GUI だと、Raspberry Pi の設定のローカライゼーションのタブから無線LANの国設定を行った。
そのまま、GUIでWiFi設定も行う。IPは固定にしておく。

sshもGUIで有効化可能。
piのパスワードを設定してリブート。
手元のPCからssh接続出来ることを確認したら、キーボードとかは外せる。
初期設定はこれで完了。1

Google Home の設定

外部接続されるので、IPを固定化しておいたほうが無難。
Google Home の設定は弄らず、DHCPサーバー側に設定を入れることにして、MACに対してIPを予約して割り当てた。

Raspberry Pi の設定

google-home-notifier導入まで

Node.js のアップデートとgoogle-home-notifier の導入まではこちらの記事を参考にした。

10分でSlackからGoogleHomeを喋らせるめちゃ速レシピ

ただ、Node.js を調べると LTS ( Long Term Support ) のバージョンが8ということだったので、そこだけ8に変えてみた。インストールコマンドは本家を参考。
Debian と Ubuntu ベースの Linux ディストリビューション

curl -X POST -d "text=Hello Google Home" https://<ランダム文字列>.ngrok.io/google-home-notifier

が成功してGoogle Homeが喋れば、ここまでは終わり。GAS ( Google Apps Script ) に書くスクリプトは別の記事を参考にした。

foreverとngrokのURL書き出し

永続化はこの記事を参考にした。
google-home-notifier周りをほぼ自動化した
ほぼ、まるまるコピーで良い。
ちなみに

curl叩いてGoogle先生喋ってくれて、よゆーやん、と思ってたら、
サービスを立ち上げるたびにngrokのURLが変わってしまうことに気づき絶望した人。

まさにこの人でした。

ここで躓いたというか、後日気づいたのだけど、このままだと ngrok がタイムアウトで切れてしまう。AM 0時に切れるっぽい。
切れなくなるようにするには、
ngrok
でIDを作成、ログイン後のページの Connect your account に書いてある authtoken のコマンドを実行する。


$ pwd
/home/pi/google-home-notifier/node_modules/ngrok/bin

$ ./ngrok authtoken xxxxxxxxx

$ ls ~/.ngrok2/
ngrok.yml

ngrok.yml ができれば、アカウントを使ってアクセス出来、タイムアウトはなくなった。2

LINE Message API と GASの連携

LINEからGASへのwebhookは、この記事等を参考にした。

Google Apps Scriptを使ってLINE Messaging APIでオウム返しをする

GASのスクリプトについては、先の自動化記事のおまけ部分にあるスクリプトに次のようなのを足せば実現できる。

function doPost(e) {
  var message_text = JSON.parse(e.postData.contents).events[0].message.text;

  notify2GoogleHome(message_text);
}

ここで躓いたのは、GAS の公開。スクリプトの修正したら、新規作成しないと反映されない……という初心者丸出しのミスで30分くらい浪費した。

ここまでで、LINE に送信すると Google Home がしゃべる設定が完成。

Google Home からLINEへの送信 - IFTTTの設定

こちらは逆の Google Home から LINE への送信の設定。
IFTTTを使えばとても単純。

IFTTTを使ってGoogle HomeからLineを送信する

この記事でできるようになる。

IFTTTからのメッセージが来るグループと、LINEからGoogle Homeに飛ばすためのグループは別にしている。一緒にしたほうがLINE上の可読性は良さそうだけど、Google Homeがうるさくなると思われる。

出来たこと

例えば子供が帰ったときに
「ok google、 LINEに送信、帰ったよ」
というと、LINEに 
[IFTTT]帰ったよ
とメッセージが来るので、LINEに
おかえり、宿題して待ってて
と返すと、Google Homeが子供に話してくれるようになった。

満足。



  1. 初期設定でrootのパスワード変更を書いているサイトがいくつかあったがそれは良くない。rootはログイン不可のまま、sudoを使う方がいい 

  2. ngrok は色々アップデートがあるらしく、以前は無料で出来たことが有料化したり、有料化したときに、free account がなかったりしていたっぽい。この仕様も変わるかも 

9
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
14