Edited at

GoogleHome x IFTTT で、寝る前にかかとにクリームを塗る!

More than 1 year has passed since last update.

(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クライアントをラズパイにインストール



$ 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のリスナーが起動した。以下のような画面が表示される。

スクリーンショット 2017-12-05 21.07.27.png

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

言語:特に指定なし。

スクリーンショット 2017-12-05 22.39.59.png

スクリーンショット 2017-12-05 22.40.15.png


IF


  • Trigger:Date & time , "Every day at"

  • 11 PM

  • 00 Minutes を指定。


then


  • Action: Webhooks "Make a web request"

  • URL:[Chosen by user]



  • 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を固定にした上で、セキュリティ的にも忖度したい。

以上です!