LoginSignup
19
22

More than 5 years have passed since last update.

ESP-WROOM-02 Arduino互換ボードとIFTTTでスマートフォンにプッシュ通知を飛ばす

Posted at

スイッチサイエンス製 ESP-WROOM-02 Arduino互換ボード

スイッチサイエンスからESP-WROOM-02 Arduino互換ボードが発売されました。今まではESP-WROOM-02(ESP8266)をArduinoのスケッチを書き込んで使うためには、モジュールをはんだ付けしてブレッドボード上で使用したりと少々使いづらい部分がありました。それをこの互換ボードが解消してくれます :pray:

ESP-WROOM-02 Arduino互換ボード
2620_1.jpg

IFTTT

img01.png
IFTTT

if this then that 略してIFTTT。世の中に公開されているたくさんのWebサービスを仲介してつなげるWebサービスのことです。例えば、あるハッシュタグがついたTwitterのつぶやきをEvernoteのノートにまとめるなどできちゃいます :smile:

ESP-WROOM-02とIFTTTでArduinoからスマートフォンへプッシュ通知を飛ばす

Arduinoに人の動きを検知できる焦電センサーをつないで、人の動きを検知したら手元のスマートフォンにPush通知を飛ばす方法を紹介します。

1. IFTTTの登録〜レシピ作成

まずは環境を整える。記事「IFTTTにMaker Channelができました」がすごくわかりやすかったです :bulb:
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);
}

4. プッシュ通知飛んできた!

これで、部屋に女子が入ってきても見られずにすみますね! :computer:
img21.png

19
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
22