久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
esp用arduinoide對接onenet 基于ESP8266的制作作品源碼以及資料
[打印本頁]
作者:
我是你哥
時間:
2019-3-26 21:43
標題:
esp用arduinoide對接onenet 基于ESP8266的制作作品源碼以及資料
基于ESP8266對接機智云介紹
單片機源程序如下:
/*
HTTP協議實現post和get發往onenet平臺。
post為溫濕度上傳。
get為開關消息獲取并執行。
阿正修改,資源源于網絡。
*/
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <ArduinoJson.h>
#include <DHT.h>
#define LED 14 //配網指示燈D5/GPIO14
#define DEBUG 0
#define ledPin 14 // 定義ledPin連接到D5/GPIO14
#define DHTPIN 12 // 溫濕度模塊 D6 GPIO12
#define DHTTYPE DHT11
int ds;
const char* host = "api.heclouds.com";
const char* APIKEY = "dDu2j8l23dNMJSWv5XVqfc6hXoM="; // API KEY 改成你自己的
int32_t deviceId = 28315875; // Device ID 改成你自己的
const char* DataStreams = "led"; //四個數據流 改成你自己的
const char* DS_Temp = "wendu";
const char* DS_Baojing = "w_baojing";
const char* DS_Hum = "shidu";
const size_t MAX_CONTENT_SIZE = 1024;
const unsigned long HTTP_TIMEOUT = 2100; // max respone time from server
WiFiClient client;
const int tcpPort = 80; //80端口
DHT dht(DHTPIN, DHTTYPE);
struct UserData {
int errno_val; // 錯誤返回值
char error[32]; // 錯誤返回信息
int test_led_Val; // TEST LED 狀態值
char udate_at[32]; // 最后更新時間及日期
};
// Skip HTTP headers so that we are at the beginning of the response's body
// -- 跳過 HTTP 頭,使我們在響應正文的開頭
bool skipResponseHeaders() {
// HTTP headers end with an empty line
char endOfHeaders[] = "\r\n\r\n";
client.setTimeout(HTTP_TIMEOUT);
bool ok = client.find(endOfHeaders);
if (!ok) {
Serial.println("No response or invalid response!");
}
return ok;
}
// Read the body of the response from the HTTP server -- 從HTTP服務器響應中讀取正文
void readReponseContent(char* content, size_t maxSize) {
// size_t length = client.peekBytes(content, maxSize);
size_t length = client.readBytes(content, maxSize);
delay(20);
Serial.println(length);
Serial.println("Get the data from Internet!");
content[length] = 0;
Serial.println(content);
Serial.println("Read Over!");
}
bool parseUserData_test(char* content, struct UserData* userData) {
// Compute optimal size of the JSON buffer according to what we need to parse.
// -- 根據我們需要解析的數據來計算JSON緩沖區最佳大小
// This is only required if you use StaticJsonBuffer. -- 如果你使用StaticJsonBuffer時才需要
const size_t BUFFER_SIZE = 1024;
// Allocate a temporary memory pool on the stack -- 在堆棧上分配一個臨時內存池
StaticJsonBuffer<BUFFER_SIZE> jsonBuffer;
// -- 如果堆棧的內存池太大,使用 DynamicJsonBuffer jsonBuffer 代替
// If the memory pool is too big for the stack, use this instead:
// DynamicJsonBuffer jsonBuffer;
JsonObject& root = jsonBuffer.parseObject(content);
if (!root.success()) {
Serial.println("JSON parsing failed!");
return false;
}
// Here were copy the strings we're interested in
userData->errno_val = root["errno"];
strcpy(userData->error, root["error"]);
if ( userData->errno_val == 0 ) {
userData->test_led_Val = root["data"]["current_value"];
strcpy(userData->udate_at, root["data"]["update_at"]);
Serial.print("YF-Test_LED Value : ");
Serial.print(userData->test_led_Val);
Serial.print("\t The last update time : ");
Serial.println(userData->udate_at);
}
Serial.print("errno : ");
Serial.print(userData->errno_val);
Serial.print("\t error : ");
Serial.println(userData->error);
return true;
}
void colLED(int sta) {
digitalWrite(ledPin, sta);
}
void smartConfig()//智能配網,可以微信掃一掃進行配網,或者用app進行配網。
{
WiFi.mode(WIFI_STA);
Serial.println("\r\nWait for Smartconfig");
WiFi.beginSmartConfig();
while (1)
{
Serial.print(".");
digitalWrite(LED, 0);
delay(500);
digitalWrite(LED, 1);
delay(500);
if (WiFi.smartConfigDone())
{
Serial.println("SmartConfig Success");
Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
break;
}
}
}
void tcp_test () {
if (!client.connect(host, tcpPort)) {//鏈接tcp服務器測試
Serial.println("connection failed");
return;
}
}
void setup() {
WiFi.mode(WIFI_AP_STA); //set work mode: WIFI_AP /WIFI_STA /WIFI_AP_STA
Serial.begin(115200); //傳輸波特率
pinMode(ledPin, OUTPUT);
dht.begin(); //初始化溫濕度模塊
smartConfig(); //開啟自動配網。
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) { //檢測dht溫濕度故障
Serial.println("Failed to read from DHT sensor!");
return;
}
tcp_test (); //tcp鏈接校驗
getdata(); //獲取下發的數據流
tcp_test (); //tcp鏈接校驗
postData(deviceId, t, h); //發送上報的數據流
}
void postData(int dId, float val_t, float val_h) { //采用post方式發包,進行http協議溫濕度上傳
String url = "/devices/";
url += String(dId);
url += "/datapoints?type=3"; //http://open.iot.10086.cn/doc/art190.html#43
String data = "{\"" + String(DS_Temp) + "\":" + String(val_t) + ",\"" + String(DS_Hum) + "\":" + String(val_h) + ",\"" + String(DS_Baojing) + "\":" + String(val_t) + "}";
Serial.println(data);
Serial.print("data length:");
Serial.println(String(data.length()));
String post_data = "POST " + url + " HTTP/1.1\r\n" +
"api-key:" + APIKEY + "\r\n" +
"Host:" + host + "\r\n" +
"Content-Length: " + String(data.length()) + "\r\n" +
"Connection: close\r\n\r\n" +
data;
client.print(post_data);
}
void getdata() { //采用get方式獲取服務器數據反饋進行開關繼電器操作
// We now create a URI for the request
String url2 = "/devices/";
url2 += String(deviceId);
url2 += "/datastreams/";
url2 += DataStreams;
String send_data = String("GET ") + url2 + " HTTP/1.1\r\n" +
"api-key:" + APIKEY + "\r\n" +
"Host:" + host + "\r\n" +
"Connection: close\r\n\r\n";
client.print(send_data);
if (DEBUG) {
Serial.println(send_data);
}
if (skipResponseHeaders()) { // 發送請求json解析
char response[MAX_CONTENT_SIZE];
readReponseContent(response, sizeof(response));
UserData userData_testLED;
if (parseUserData_test(response, &userData_testLED)) {
Serial.println("daily data parse OK!");
colLED(userData_testLED.test_led_Val);
}
}
}
復制代碼
所有資料51hei提供下載:
esp用arduinoide對接onenet.zip
(3.56 KB, 下載次數: 30)
2019-3-26 21:42 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
亚洲黄色片免费观看
|
黄色在线免费网站
|
国产精品激情在线
|
久久久久国产精品一区三寸
|
www.操.com
|
国产精品美女一区二区
|
国产一区二区高清在线
|
久久精品国产99国产精品
|
欧美一级电影免费
|
亚洲视频免费播放
|
国产精品污www一区二区三区
|
亚洲一区二区av在线
|
久久久观看
|
亚洲国产成人精品在线
|
亚洲 自拍 另类 欧美 丝袜
|
日本精品免费在线观看
|
日韩中文字幕在线播放
|
久久国产成人精品国产成人亚洲
|
蜜桃av人人夜夜澡人人爽
|
日日综合
|
日本亚洲精品
|
欧美亚洲一级
|
一级看片免费视频
|
91中文字幕在线观看
|
成年视频在线观看福利资源
|
一区二区av
|
日韩乱码在线
|
国产在线精品一区二区
|
九九激情视频
|
国产一区二区高清在线
|
亚洲在线
|
日韩欧美国产成人一区二区
|
久久精品一区
|
91精品国产91久久久久久
|
精品国产一区二区三区性色av
|
国产精品91视频
|
亚洲成av人影片在线观看
|
91福利在线观看视频
|
国产欧美日韩精品在线观看
|
精品国产乱码久久久久久88av
|
日韩免费一区二区
|