« 自宅iBeaconの改良 | トップページ | ブログエディター変更 »

ESP-WROOM-02を直接プログラムしてIFTTTにイベントをポストする

久しぶりの投稿です。

表題の通り、今話題の(もう古い?)WiFiモジュールESP-WROOM-02をmbedやArduinoといった外付けのMCUを使わず、直接プログラムしてIFTTTへのイベントポストを行いました。

環境構築手順

ESP-WROOM-02(ESP8266)の直接プログラムは、Arduino IDEにAdditional Board ManagerとしてESP8266のコンパイラ等を導入することで実現できます。手順は、以下に示す先人のサイトを参考にしました:

ESP-WROOM-02は最近秋月さんが発売した、ESP-WROOM-02 DIP化キットを購入しました。ESP-WROOM-02に、プログラム書き込み用のFT232RLやリセット・プログラム書き込みスイッチを取り付けます。

IMG_0778

IFTTTイベントポストプログラム

コードを以下に示します。WiFiアクセスポイントへ接続し、IFTTTのMaker Channelにイベント名”ESP8266"を送信します。イベントのポスト後はLチカを行うだけです(センサーの接続などはさぼっています)。

 
#include <ESP8266WiFi.h>

#define IFTTT_MAX_SIZE_STRING    512

const char* ssid     = "ssid";
const char* password = "password";
 
const char* host = "maker.ifttt.com";
 
void setup() {
  Serial.begin(115200);
  pinMode(12, OUTPUT);
  delay(100);
 
  // We start by connecting to a WiFi network
 
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
 
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

  // Connect to IFTTT
  Serial.print("connecting to ");
  Serial.println(host);
 
  // Use WiFiClient class to create TCP connections
  WiFiClient client;
  const int httpPort = 80;
  if (!client.connect(host, httpPort)) {
    Serial.println("connection failed");
    return;
  }

  // This will send POST to IFTTT server
  char str[IFTTT_MAX_SIZE_STRING] = {0};
  char v1[16] = "";
  char v2[16] = "";
  char v3[16] = "";
  char header[100] = "POST /trigger/ESP8266/with/key/YourSecretKey HTTP/1.1\r\n";
  const char * host = "Host: maker.ifttt.com\r\n";
  char contentLen[50] = {0};
  const char * contentType = "Content-Type: application/json\r\n\r\n";
  char valueData [150] = {0};
  sprintf(valueData,"{\"value1\":\"%s\",\"value2\":\"%s\",\"value3\":\"%s\"}\r\n",v1,v2,v3);
  sprintf(contentLen,"Content-Length: %d\r\n",strlen(valueData));
  sprintf(str,"%s%s%s%s%s",header,host,contentLen,contentType,valueData);
  
  client.print(str);
  delay(10);
}
 
void loop() {
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(12, LOW);
  delay(500);
}

IFTTTの通知

電源を入れるか、リセットを行うと、IFTTTのMaker Channelにイベントが通知されます。IFTTTのレシピを作っておくことで以下のようにiOSデバイスのNortificationを発行することができます。(レシピの作り方は先人のサイトが参考になるので割愛)。

IMG_0780

« 自宅iBeaconの改良 | トップページ | ブログエディター変更 »

ESP-WROOM-02」カテゴリの記事

コメント

loop内のLチカって、ピン13が標準のような。。。。

この記事へのコメントは終了しました。

« 自宅iBeaconの改良 | トップページ | ブログエディター変更 »

2018年10月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
無料ブログはココログ