(2018.5.13 "Raspberry Piをインターネットからアクセスできるようにする"のところのngrokのクライアントインストール方法の書き方が雑だったので、丁寧にしました。)
スマートスピーカーIFTTT 大喜利 アドベントカレンダー5日目です。
この間、友人とスーパー銭湯に行ったら、「かかとにクリームを45日連続塗ったところ、この時期にありえないくらいスベスベである」というのです。
仕事できておしゃれで美人のうえ、しなくて充分なのに最近筋トレでダイエットもし、さらに猫も飼っているという完璧超人の上に、
_人人人人人人人人 人人人人人人人人人_
> 冬なのにかかとがスベスベだと!!! <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
じぶんも早速塗らなければ!
しかし立ちはだかる三日坊主という病の壁。。。うう
そこでイフトですよ!
今回のは力作です。
本来12/5の0時に更新するはずが、12/5 23時更新になってしまいましたが、仕方ないのです!
やりたいこと
- タイトル:かかとクリーム塗りわすれリマインダー
- 内容:毎日夜11時になると「かかとにクリーム塗った?」とGoogle Homeが教えてくれる
- システム構成:
- IFTTT
- Ngrok
- Raspberry Pi3
- Google Home Mini
作り方
Raspberry Pi3のセットアップ
OSインストール / wi-fi接続 /ssh接続 が済んでるものを使用します。
-
node, npm の最新版インストール
-
→以前やってあったのでスルー
-
Macのターミナルからsshでラズパイに接続し、google-home-notifierからzipをダウンロードする
$ ssh pi@192.168.自分の家のラズパイのIP
$ cd Documents
$ mkdir GoogleHome
$ cd GoogleHome
$ git clone https://github.com/noelportugal/google-home-notifier
$ cd google-home-notifier
- npmでgoogle-home-notifierをインストールと、nodejsの最新版のインストール
$ curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
$ sudo apt-get install nodejs
$ sudo apt-get install git-core libnss-mdns libavahi-compat-libdnssd-dev
$ pwd
/home/pi/Documents/GoogleHome/google-home-notifier
$ npm install
Raspberry Piをインターネットからアクセスできるようにする
参考)ngrokでRaspberry Piのデスクトップをインタネットに公開
- Ngrokクライアントをラズパイにインストール
- http://ngrok.com/download で「LinuxARM」を選択してダウンロード
$ cd /home/pi/Documents/GoogleHome/google-home-notifier/
$ wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-arm.zip
$ unzip ngrok-stable-linux-arm.zip
ngrokというディレクトリができる。
- 続けてNgrokのサイトでアカウント登録。
- https://dashboard.ngrok.com/get-started
- 無料コースで良い。
- トークンが発行されるのでコピーする。
- (二回目以降のアクセスの際は、)Dashboard > Auth > Your Tunnerl Authtoken で閲覧できるのでコピーする。
$ cd /home/pi/Documents/GoogleHome/google-home-notifier/
$ ./ngrok authtoken xxxxxxxxxxxxxxxxx(発行されたトークンを入れる)
$ ./ngrok http 8091
80ではなく、google-home-notifierに合わせて8091を指定するのがポイント。
これでngrokのリスナーが起動した。以下のような画面が表示される。
「http://f2bca69c.ngrok.io」 のところが、自分のラズパイにインストールしたngrokクライアントに割り当てられたサブドメイン。
ngrokジョブをctrl+cで停止して起動するたびに新しいものが発行されるので、この記事が公開されるときにはもうこの世から消えてます。ひひひ。
- Macでもう一枚ターミナルを開いてラズパイにssh接続し、google-home-notifierを起動する
$ ssh pi@192.168.自分の家のラズパイのIP
$ cd /home/pi/Documents/GoogleHome/google-home-notifier
$ node example.js
Endpoints:
http://192.168.0.20:8091/google-home-notifier
undefined/google-home-notifier
GET example:
curl -X GET undefined/google-home-notifier?text=Hello+Google+Home
POST example:
curl -X POST -d "text=Hello Google Home" undefined/google-home-notifier
このコンソールを開いておきます。受け取ったアクセスの変数が見れます。
終了するときはctrl+c。
もちろん末尾に&をつけてバックグラウンド実行しても良い。
$ node example.js&
Google Homeを外から叩いて喋らす
- Macでもう一枚ターミナルを開いて、example.jsが表示してくれたサンプルコマンドに、ngrokが発行したサブドメインをつけてリクエストする。
curl -X GET http://f2bca69c.ngrok.io/google-home-notifier?text=Hello+Google+Home
curl -X GET http://f2bca69c.ngrok.io/google-home-notifier?text=kakatoni+cream+nutta??
Google Homeが喋った!!!
でも声がいつものGoogleHomeじゃない!(^^;) ナンジャコリャー!
Hello+Google+Home
https://youtu.be/CK6iNfuCAeE
kakatoni+cream+nutta??
https://youtu.be/q11_681-a3I
以前買った中華Bluetoothスピーカーの起動音声に似てるというか。。
https://youtu.be/HtM5n1nrv5M
めちゃめちゃなまってるなぁ。インド風?
IFTTTを作る
ここまでで力尽きたので、イフトは最低限にしておきます!
概要
名前:毎日決まった時間に、GoogleHomeにリマインダーを喋ってもらう
URL:非公開
使ったもの:Date & time, Webhooks
言語:特に指定なし。
IF
- Trigger:Date & time , "Every day at"
- 11 PM
- 00 Minutes を指定。
then
- Action: Webhooks "Make a web request"
- URL:[Chosen by user]
- http://xxxxx.ngrok.io/google-home-notifier
- Method:[Hidden from user]
- POST
- Content Type:[Hidden from user]
- application/x-www-form-urlencoded
- Body:[Chosen by user]
- text=”Did you put cream on your heel?"
時間ぴったりに、
ポヨヨン Did you put cream on your heel?
と喋って教えてくれました!!
やったー
これでかかとスベスベになったるでー
課題
- 日本語で喋らせたい。
- 再起動するたびにサブドメインが変わってしまうngrokでは長く使えない。URLを固定にした上で、セキュリティ的にも忖度したい。
以上です!