「OKグーグル、シバちゃんをオンにして」で動きだし、「OKグーグル、シバちゃんをオフにして」で止まる実験に成功した。
グーグルホームからグーグルアシスタントをトリガーにIFTTTがウェブリクエストに、*****.xyz:50014/onと*****.xyz:50014/offをリクエストする。ルータ内部で192.168.11.14/onと192.168.11.14/offに変換される仕組み。これならIFTTTでAmazon Alexaをトリガーにしたら「アレクサ、シバちゃんをオンにして」で動きだし、「アレクサ、シバちゃんをオフにして」で止まる。
グーグルとアレクサの両方でコントロールできるわけです。
しかも家の外からもスマホでコントロールできます。
///////////////////////////////////////////ESP8266 Shiba-chan/////////////////////////////////////////////
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
const char* ssid = "106F3F3C2***";
const char* password = "mh1nr5jpc0***";
ESP8266WebServer server(80);
const int led = 2;
const int shiba = 0;
void handleRoot() {
digitalWrite(led, 1);
digitalWrite(shiba, 0);
server.send(200, "text/html", "<h1><A HREF='/on'>LED ON</A> | <A HREF='/off'>LED OFF</A></h1>");
}
void setup(void) {
pinMode(led, OUTPUT);
pinMode(shiba, OUTPUT);
digitalWrite(led, 1);
digitalWrite(shiba, 0);
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
server.on("/", handleRoot);
server.on("/on", []() {
digitalWrite(led, 0);
digitalWrite(shiba, 1);
server.send(200, "text/html", "<h1>LED ON | <A HREF='/off'>LED OFF</A></h1>");
});
server.on("/off", []() {
digitalWrite(led, 1);
digitalWrite(shiba, 0);
server.send(200, "text/html", "<h1><A HREF='/on'>LED ON</A> | LED OFF</h1>");
});
server.begin();
Serial.println("HTTP server started");
}
void loop(void) {
server.handleClient();
delay(10);
}
グーグルホームからグーグルアシスタントをトリガーにIFTTTがウェブリクエストに、*****.xyz:50014/onと*****.xyz:50014/offをリクエストする。ルータ内部で192.168.11.14/onと192.168.11.14/offに変換される仕組み。これならIFTTTでAmazon Alexaをトリガーにしたら「アレクサ、シバちゃんをオンにして」で動きだし、「アレクサ、シバちゃんをオフにして」で止まる。
グーグルとアレクサの両方でコントロールできるわけです。
しかも家の外からもスマホでコントロールできます。
///////////////////////////////////////////ESP8266 Shiba-chan/////////////////////////////////////////////
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
const char* ssid = "106F3F3C2***";
const char* password = "mh1nr5jpc0***";
ESP8266WebServer server(80);
const int led = 2;
const int shiba = 0;
void handleRoot() {
digitalWrite(led, 1);
digitalWrite(shiba, 0);
server.send(200, "text/html", "<h1><A HREF='/on'>LED ON</A> | <A HREF='/off'>LED OFF</A></h1>");
}
void setup(void) {
pinMode(led, OUTPUT);
pinMode(shiba, OUTPUT);
digitalWrite(led, 1);
digitalWrite(shiba, 0);
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
server.on("/", handleRoot);
server.on("/on", []() {
digitalWrite(led, 0);
digitalWrite(shiba, 1);
server.send(200, "text/html", "<h1>LED ON | <A HREF='/off'>LED OFF</A></h1>");
});
server.on("/off", []() {
digitalWrite(led, 1);
digitalWrite(shiba, 0);
server.send(200, "text/html", "<h1><A HREF='/on'>LED ON</A> | LED OFF</h1>");
});
server.begin();
Serial.println("HTTP server started");
}
void loop(void) {
server.handleClient();
delay(10);
}