スイッチサイエンス製 ESP-WROOM-02 Arduino互換ボード
スイッチサイエンスからESP-WROOM-02 Arduino互換ボードが発売されました。今まではESP-WROOM-02(ESP8266)をArduinoのスケッチを書き込んで使うためには、モジュールをはんだ付けしてブレッドボード上で使用したりと少々使いづらい部分がありました。それをこの互換ボードが解消してくれます
IFTTT
[IFTTT](https://ifttt.com/)if this then that 略してIFTTT。世の中に公開されているたくさんのWebサービスを仲介してつなげるWebサービスのことです。例えば、あるハッシュタグがついたTwitterのつぶやきをEvernoteのノートにまとめるなどできちゃいます
ESP-WROOM-02とIFTTTでArduinoからスマートフォンへプッシュ通知を飛ばす
Arduinoに人の動きを検知できる焦電センサーをつないで、人の動きを検知したら手元のスマートフォンにPush通知を飛ばす方法を紹介します。
1. IFTTTの登録〜レシピ作成
まずは環境を整える。記事「IFTTTにMaker Channelができました」がすごくわかりやすかったです
IFTTTの登録〜レシピの作成は上の記事を参考にしてください。
2. スマートフォンにIFTTTのアプリをインストール
Android、iOSともにアプリが公開されています。Androidしか試せてないですが、おそらくiOSも同じ方法でできるかと。インストールできたら作ったアカウントでログインしてください。
3. Arduinoへスケッチを書き込む
定期的にIFTTTに対してプッシュ通知を飛ばさせるしくみです。ESP-WROOM-02をArduino IDEで使うためのESP8266 core for Arduinoは別途インストールしてください。
#include <ESP8266WiFi.h>
// 転送レート
#define SERIAL_SPEED 115200
// Wi-Fi SSID
#define WLAN_SSID "your-ssid"
// Wi-Fi パスワード
#define WLAN_PASS "your-password"
// IFTTTのホスト名
#define IFTTT_HOST_NAME "IFTTT-event-name"
// IFTTTのイベント名
#define IFTTT_EVENT_NAME "IFTTT-event-name"
// IFTTTのシークレットキー
#define IFTTT_KEY "IFTTT-secret-key"
// ポート番号
#define PORT_NUMBER 80
void setup() {
Serial.begin(SERIAL_SPEED);
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(WLAN_SSID);
WiFi.begin(WLAN_SSID, WLAN_PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
Serial.print("connecting to ");
Serial.println(IFTTT_HOST_NAME);
// Use WiFiClient class to create TCP connections
WiFiClient client;
if (!client.connect(IFTTT_HOST_NAME, PORT_NUMBER)) {
Serial.println("connection failed");
return;
}
// IFTTTへ送信するデータ
char sendData[256] = "";
sprintf(sendData, "GET http://maker.ifttt.com/trigger/%s/with/key/%s HTTP/1.1\r\nHost:maker.ifttt.com\r\nConnection: close\r\n\r\n", IFTTT_EVENT_NAME, IFTTT_KEY);
// This will send the request to the server
client.print(sendData);
int timeout = millis() + 5000;
while (client.available() == 0) {
if (timeout - millis() < 0) {
Serial.println(">>> Client Timeout !");
client.stop();
return;
}
}
// Read all the lines of the reply from server and print them to Serial
while(client.available()){
String line = client.readStringUntil('\r');
Serial.print(line);
}
Serial.println();
Serial.println("closing connection");
delay(5000);
}