自上次更新以來已經過去了一年多的時間。
介紹
IFTTT的製造商頻道是一個渠道,可以很容易地將自製設備連接到觸發器或操作。在這裡,我們將向您展示如何使用ESP 8266 WiFi芯片的Arduino核心,並實現與ESP 8266的Maker Channel觸發器和操作。
準備
ESP 8266
ESP8266的Arduino核心關於如何在Arduino IDE中使用WiFi芯片的信息,請參考“ ESP-WROOM-02開發板上myThings的測試IDCF通道 ”。在寫這篇文章時的最新版本是2.0.0,但是現在已經更新到2.1.0,進一步的增強和錯誤修正正在進行。
IFTTT
履行
在觸發的情況下
IFTTT方面
在IFTTT方面,創建一個觸發器作為Maker Channel和作為通知的操作。此時,ESP 8266也使用指定為觸發事件名稱的事件名稱(本例中為“ping”)。
ESP 8266方面
要觸發IFTTT Maker頻道,請轉到以下網址。
https://maker.ifttt.com/trigger/{event}/with/key/{key}
如果有一個正文,我們將按照以下格式傳遞JSON格式的數據(這次我們只會判斷事件名稱而不使用正文)。
{ “value 1” : “***” , “value 2” : “***” , “value 3” : “***” }
以下是大約每分鐘觸發事件名稱“ping”的示例。將config.h中的“*”替換為您實際訪問的Wi-Fi接入點和IFTTT生成的密鑰。我們使用HTTPS(HTTP over TLS)從ESP 8266連接,但是我們不檢查證書。
config.h中
// Wi-Fi接入點的SSID和密碼
const char * ssid = “********” ;
const char * password = “********” ;
// IFTTT的密鑰
const char * key = “**********************” ;
IFTTT_Trigger
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
// 設定ファイル
#include "config.h"
const char* host = "maker.ifttt.com";
const char* event = "ping";
const int httpsPort = 443;
WiFiClientSecure client;
void setup() {
Serial.begin(115200);
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());
}
void loop() {
Serial.print("connecting to ");
Serial.println(host);
if (!client.connect(host, httpsPort)) {
Serial.println("connection failed");
return;
}
// URLを作成
// maker.ifttt.com/trigger/{event}/with/key/{key}
String url = "/trigger/";
url += event;
url += "/with/key/";
url += key;
Serial.print("requesting URL: ");
Serial.println(url);
// ウェブリクエストを送信
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
while (client.connected()) {
String line = client.readStringUntil('\n');
if (line == "\r") {
// ヘッダ部分の受取終了
break;
}
}
String line = client.readStringUntil('\n');
Serial.print("reply: ");
Serial.println(line);
Serial.println("closing connection");
Serial.println();
// 1分後に再度実行
delay(60000);
}
在行動的情況下
在IFTTT的設備信道,動作適於發送web請求給web服務器的外部。為了解決這個問題,才能夠訪問全球的ESP8266到Web服務器,但也認為,可能有更多的環境,不能隨意安裝,可以從互聯網訪問服務器的方法。所以,在這裡我們將向你展示如何使用MQTT從ESP8266連接為一個更加現實的方式。
消息代理對於MQTT是必需的,但在這種情況下,需要使用REST訪問什麼。myThings的IDCF通道中使用的Meshblu也是對應於REST和MQTT的消息代理,但是當與REST一起使用Meshblu時,必須給定一個自定義頭的身份驗證信息。另一方面,由於在IFTTT側可以指定的報頭是有限的,所以不幸的是,Meshblu不能用作用IFTTT發送Web請求的目的地。
所以這次我們會用Beebotte。Beebotte是為物聯網專門設計的PaaS(平台即服務),準備了各種價格計劃,每天高達50,000條消息,最多可存儲5,000條數據,數據保存期3個月如果它是免費的條件,你可以操作它。另外,還可以使用Python,PHP,JavaScript等庫,可以使用REST和MQTT。
源自於https://qiita.com/mayfair/items/e761c788a9d8787bc610#esp8266%E5%81%B4%E3%81%AE%E8%A8%AD%E5%AE%9A
沒有留言:
張貼留言