Arduino获取DHT11温湿度传感器数据连接esp8266通过HTTP协议将数据上传ONENET云平台的代码
时间: 2024-05-03 17:17:30 浏览: 216
以下是连接DHT11温湿度传感器,通过ESP8266模块上传数据到OneNet云平台的Arduino代码。需要注意的是,需要安装并引入DHT库和ESP8266WiFi库。
```
#include <ESP8266WiFi.h>
#include <DHT.h>
#define DHTPIN 2 //DHT11传感器连接的引脚为2
#define DHTTYPE DHT11 //DHT11型号
#define ONENET_API_KEY "your_api_key" //OneNet云平台API Key
#define ONENET_DEVICE_ID "your_device_id" //OneNet云平台设备ID
DHT dht(DHTPIN, DHTTYPE);
const char* ssid = "your_wifi_ssid"; //WiFi名称
const char* password = "your_wifi_password"; //WiFi密码
const char* server = "api.heclouds.com"; //OneNet云平台服务器地址
void setup() {
Serial.begin(115200);
delay(10);
dht.begin();
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
}
void loop() {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
WiFiClient client;
if (!client.connect(server, 80)) {
Serial.println("connection failed");
return;
}
String data = "{\"humidity\":" + String(h) + ",\"temperature\":" + String(t) + "}";
String postStr = "POST /devices/" + String(ONENET_DEVICE_ID) + "/datapoints?type=3 HTTP/1.1\r\n";
postStr += "api-key:" + String(ONENET_API_KEY) + "\r\n";
postStr += "Host:api.heclouds.com\r\n";
postStr += "Content-Length:";
postStr += data.length();
postStr += "\r\nConnection: close\r\n\r\n";
postStr += data;
client.print(postStr);
delay(1000);
while (client.available()) {
String line = client.readStringUntil('\r');
Serial.print(line);
}
Serial.println();
}
```
需要将代码中的 "your_api_key" 和 "your_device_id" 替换为对应的 OneNet 云平台的 API Key 和设备 ID。同时也需要将 "your_wifi_ssid" 和 "your_wifi_password" 替换为自己的 WiFi 名称和密码。
上传数据使用的是HTTP POST请求,其中数据格式为JSON格式,包含了温度和湿度两个属性。通过WiFiClient连接到 OneNet 云平台服务器,将数据发送到对应的设备上。
阅读全文