Arduino:ESP8266でWIFI接続、IFTTTへイベントを送る

スマートホームへ向けて色々 でてきて大変だが、つまるところまずは、WIFIでつなぎたい。
マイコン本体は、楽しい状態に動作する。
そこでだ。
ネットに繋げて IFTTTへイベントを送りたい

実際やってみると、5分程度で完了
これはこれは、やばすぎるぐらい 簡単に動く。

自分は、CP2102 がやはり、安定しているようだ。
ESP-12E

20160228_050608A
まず手順として、NEO-M8Nはつなげてない ^_^>
RFID-RC522をつなげて、タグは認識できた
その状態で、今度は単純に、以下のことをしたい。
ソースは、まだ作成していない。
実は、楽しくて仕方がない。
激安すぎるマイコン! 電力も極小、動作も機敏
思った以上に、何もしない。
余計な接続もしない。
一動作毎に、完成したほうが勉強になるので。

やりたいこと

電源が入ると、自宅のWIFIに接続
接続が完了したら、Webhooks に “ESP8266” の名前のイベントを送りたい。
IFTTTがイベントを受け取ったら登録されたメールに送る。
この動作

IFTTTの準備

SnapCrab_NoName_2019-7-16_0-7-10_No-00

この右上、Documentation をクリック
SnapCrab_NoName_2019-7-16_0-20-14_No-00

この赤ラインに一意のキーが表示される。
これ重要、タグ毎にここを制御することになる。
タグによって、ドアを開ける、締める、家の電気を消す、監視カメラを起動する等、完全に操作できるので
青がイベント “ESP8266″とした。
赤が、一意のキー。
これは、アカウントごと違う。
キーも、暗号処理されているので例えば、どれかを一つ変えたとしても、合致することはないので安心する。
そして、それ以外に、With an optional JSON body of:
に同時に、3つのキーを送れるので、ソースもそのようなっている。

SnapCrab_NoName_2019-7-16_0-34-51_No-00

アプレットを作成、このようになればOK

後は、以下をコンパイルして送るだけ
※自宅はMACセキュリティを入れているので登録
※IP固定は、ESP8266Wiでできるようだが、失敗するというので
※ここは、別途登録した。

#include <ESP8266WiFi.h>

#define IFTTT_MAX_SIZE_STRING    512

const char* ssid     = “ここには自宅のSSIDを入れる”;
const char* password = “ここにはパスワードを入れる”;

const char* host = “maker.ifttt.com”;

void setup() {
Serial.begin(115200);
//LED対応
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/ここに赤ラインを貼り付ける 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() {
//LED対応
digitalWrite(12, HIGH);
delay(500);
digitalWrite(12, LOW);
delay(500);
}

シリアルモニターに、表示されるのを確認 送られました
簡単。
^_^?
テストには、このチップのリセットボタンを押せば良い。
このチップの良いところは、リセットとフラッシュが付いているところ。
すぐにテストができる。
電力が供給されると、うまくつながらないときが有るので

これでわかった、タグによるドアを開く、閉じるは簡単になりました。
ソースに、RFID-Rc522からタグを読むとそのタグIDが読めます>
そのタグには、別途 キーを埋め込めるのでこの2つで誰の所有するキーかわかるわけで ^_^>

コレの出番ですね。

RFID-RC522

フリーのNFCタグ コレに書き込みます。

フリーのNFCタグ コレに書き込みます。

例えば、スマートフォンに貼る。当てれば、ドアが開きます。

靴とかに貼ると靴でドアを開けるとこができます。
シールは、フリーのNFCタグなので、制限がないため、ちょっとした工夫も必要かもしれない。
付いてきた、青タグのほうが良いかもしれませんが・・
手が離せないってとき大切ですね。
コレなら、車のドア開閉にも使えそうです。
大きさ的には、評価モジュールのため少々大きく、WIFIモジュールとRFID-RC522
で動作するとわかると、もう少し小さなモジュールで作成したほうが良いか迷うぐらい。
ちなみに、Micro USBの5Vですべて動作するので、あのS_ny F_lica  改造より十分優しくて、汎用性もあり、OSが不要でスマートです。
防水も可能でしょう、RFID-Rc522は、薄くリードを長く取れるので場所も選ばない。
ICタグによる、ドアキーモジュール、制作時間30分程度かな
1000円も出せば2台分にもなる。
操作できるのは、
セサミ スマートロック本体+WIFIだけですね。
他のスマートロックは、そもそもIFTTTやこの様なタグキーを使えるようになっていない。
残念。 逆に言うとこれ選択して正解でした。
不都合なところは、そのほとんど 他の方法で解消できるスグレモノ。でした
結論として、幾ら位置精度を上げても、LINEビーコンですら
数メートルの誤差が含んでる。
その上、近隣には、WIFIが混線状態、やっぱりその地域毎の対応は自分で行うほうが簡単解決でした。