ifttt
GoogleHome
スマートスピーカー
音声アシスタント

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

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

以上です!