IToTの覚え書き

マイクロビット、アルドゥイーノ、ラズベリーパイなどで楽しい道具を作る趣味のサイトです。 基本的に自分用の覚え書きです。

2019年03月

「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);
}

Sibachan

「アレクサ、シバちゃんオン」で鳴きながら歩き、「アレクサ、シバちゃんオフ」で止まる、かわいいやつです。
esp8266-alexa-wemo-emulatorを使用しました。
<材料>
あかちゃんシリーズ シバちゃん ぬいぐるみ 847円
EasyWordMall OTA ESP-12E D1 WiFi UnoシールドベースESP8266モジュールArduino用 595円
SODIAL 5Vアクティブロー1チャネル リレーモジュールボード Arduino PIC AVR MCU DSP ARM用 ブルー 209円
HiLetgo® 5個セット A54 9V 電池ケース DCケーブルDCソケットと付属 Arduinoと互換 [並行輸入品] 108円
9V 電池 100円
(別途)Echo Dot 第3世代 - スマートスピーカー with Alexa、チャコール 5980円


#include <ESP8266WebServer.h>
#include <ESP8266WiFi.h>

#include "WemoSwitch.h"
#include "WemoManager.h"
#include "CallbackFunction.h"

// prototypes
boolean connectWifi();

//on/off callbacks
void lightOn();
void lightOff();

//------- Replace the following! ------
char ssid[] = "*************"; // your network SSID (name)
char password[] = "*************"; // your network key

WemoManager wemoManager;
WemoSwitch *light = NULL;

const int ledPin = BUILTIN_LED;
const int shibaPin = 0;

void setup()
{
Serial.begin(115200);

// Set WiFi to station mode and disconnect from an AP if it was Previously
// connected
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);

// Attempt to connect to Wifi network:
Serial.print("Connecting Wifi: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
IPAddress ip = WiFi.localIP();
Serial.println(ip);

wemoManager.begin();
// Format: Alexa invocation name, local port no, on callback, off callback
light = new WemoSwitch("しばちゃん", 80, lightOn,lightOff);
wemoManager.addDevice(*light);

pinMode(ledPin, OUTPUT); // initialize digital ledPin as an output.
pinMode(shibaPin, OUTPUT); // initialize digital shibaPin as an output.
delay(10);
digitalWrite(ledPin, HIGH); // Wemos BUILTIN_LED is active Low, so high is off
digitalWrite(shibaPin, LOW);
}

void loop()
{
wemoManager.serverLoop();
}

void lightOn() {
Serial.print("Switch 1 turn on ...");
digitalWrite(ledPin, LOW);
digitalWrite(shibaPin, HIGH);
}

void lightOff() {
Serial.print("Switch 1 turn off ...");
digitalWrite(ledPin, HIGH);
digitalWrite(shibaPin, LOW);
}

↑このページのトップヘ