ifttt
IoT
おうちハック
ESP32
GoogleHome

Google Homeに話しかけて物理スイッチを音声操作してみる

はじめに

この記事は スマートスピーカー Advent Calendar 2017 17日目の記事です。
が、最終日まで投稿が無いようでしたので代わりに投稿させて頂きます。

ESP32とサーボモーターでお手軽Wi-Fi物理スイッチを作ってお風呂のお湯はりをGoogle Homeから音声操作してみようと思います。

今回グローバル→ローカルのネットワーク接続をBlynkを使って行っていますが、Firebase経由にすれば前回記事で作ったWebアプリで外出先から操作して家に着く前にお風呂を沸かしておくといった事もできますね。

そして気になるコストですが、1,000円弱で済ませられます。
MicroBot Push」や「Switch Bot」といった製品だと5,000円ほどしますので格安ですね。

実際の動作

設置方法には改善の余地が多々ありますので、工夫してみて下さい…

処理の流れ

image

いるもの

いるもの 価格(¥) 備考
ESP32開発ボード 749  
サーボモーター 117  
電池ケース 35 単3×3本
基盤 15  
ケース 34 100均で3箱100円とかで適当に
合計 950  

まだ手元に届いてなく試せていないのですが、ESP32をこれに置き換えたらも少し安く済みそうです。

はんだ付けめんどいって方はブレッドボードをご使用下さい。

回路

こんな感じに組みます。
201712241834243411_min.JPG

サーボモーターからは3色のケーブルが出ています。
それぞれのケーブルを以下のようにESP32へ繋ぎます。

サーボモーター ESP32 備考
茶色 GND GND
5V 電源
オレンジ IO13 信号

あとはGNDと電源に電池繋げて完成です。

ESP32ソース

ESP32はArduino IDEを使って開発を行います。
まずは環境構築ですが、こちらを参照下さい。

またグローバル→ローカルの通信にBlinkを使用しています。
Blinkのプロジェクト作成も事前に必要になりますので、こちらを参考に準備してみて下さい。

上記の準備ができたら以下のソースをESP32へ書き込みましょう。
auth[]ssid[]pass[]はご自身の環境のものに書き換えて下さい。
またBLYNK_WRITE(V1)の中央のledcWriteでサーボモーターの押し込み具合を調節してみて下さい。

パスワードは以下の記事を参考に暗号化して書くことをオススメします。
ESP32のArduinoスケッチにWi-Fiのパスワードを平文で書くのはやめよう!

#define BLYNK_PRINT Serial

#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include "esp_system.h"

char auth[] = "xxxxxxxx"; //Blynkから送られてきたメール内にあるAuth Token
char ssid[] = "xxxxxxxx"; //ルーターのSSID
char pass[] = "xxxxxxxx"; //ルーターのパスワード

void setup() {
  ledcSetup(0, 50, 10);
  ledcAttachPin(13, 0);

  Blynk.begin(auth, ssid, pass);
}

void loop() {
  Blynk.run();
}

BLYNK_WRITE(V1) {
  ledcWrite(0, 80);
  delay(500);
  ledcWrite(0, 70); //サーボモーターの押し込み具合はここで調節
  delay(500);
  ledcWrite(0, 80);
}

ここまできたら以下のURLへアクセスすることで動作を確認できます。
xxxxxxxx部はAuth Tokenに書き換えて下さい。
http://188.166.206.43/xxxxxxxx/update/V1?value=0

IFTTT Appletの作成

あとはIFTTTでApplet作れば完成です。

「this」のレシピ

「Google Assistant」の「Say a simple phrase」で以下のように設定します。
image

「that」のレシピ

「Webhook」の「Make a web request」で以下のように設定します。
image

おわりに

現在のうちの給湯器だと動画のボタンを押したあとにお風呂の蛇口を捻らなければならないので、実際は自動化できていません…
しかしもうすぐ引っ越しを控えているので、引っ越し後はまともな給湯器になっているので効果を発揮できそうです。
それまでにFirebase経由で外出先からも操作できるようにしてみたいと思います。