ESP-WROOM-02を直接プログラムしてIFTTTにイベントをポストする
久しぶりの投稿です。
表題の通り、今話題の(もう古い?)WiFiモジュールESP-WROOM-02をmbedやArduinoといった外付けのMCUを使わず、直接プログラムしてIFTTTへのイベントポストを行いました。
環境構築手順
ESP-WROOM-02(ESP8266)の直接プログラムは、Arduino IDEにAdditional Board ManagerとしてESP8266のコンパイラ等を導入することで実現できます。手順は、以下に示す先人のサイトを参考にしました:
- Arduino IDEの設定: 技適済み格安高性能Wi-FiモジュールESP8266をArduinoIDEを使ってIoT開発する為の環境準備を10分でやる方法
- ハードの接続構成: ESP-WROOM-02 の Arduino 環境で I2C 制御
ESP-WROOM-02は最近秋月さんが発売した、ESP-WROOM-02 DIP化キットを購入しました。ESP-WROOM-02に、プログラム書き込み用のFT232RLやリセット・プログラム書き込みスイッチを取り付けます。
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を発行することができます。(レシピの作り方は先人のサイトが参考になるので割愛)。
« 自宅iBeaconの改良 | トップページ | ブログエディター変更 »
「ESP-WROOM-02」カテゴリの記事
- ESP-WROOM-02でMQTTを使う(2015.10.24)
- ESP-WROOM-02で読み取ったセンサ値をスマホに表示する(2015.10.04)
- ESP-WROOM-02でI2Cセンサーを使用する(2015.10.03)
- ESP-WROOM-02を直接プログラムしてIFTTTにイベントをポストする(2015.09.26)
コメント
この記事へのコメントは終了しました。
loop内のLチカって、ピン13が標準のような。。。。
投稿: 大王怒 | 2015年12月14日 (月) 16時04分