本文共 2230 字,大约阅读时间需要 7 分钟。
#include #include #include #include /云平台下发格式/
/{ "TLED": { "v": 1 // 1=开灯,0=关灯 }}/ 配置参数:
const char* ssid = "your_wifi";const char* password = "your_password";const char* mqtt_server = "mqtts.heclouds.com";const int mqtt_port = 1883; #define PRODUCT_ID "//"#define DEVICE_ID "//"
#define TOKEN "/**/"#define TLED_PIN 5 数据定义:
int msgId = 1;float temp = 22.60;int humi = 80;int TLED_state = 0; WiFiClient espClient;
PubSubClient client(espClient); MQTT主题:
const char* pubTopic = "$sys/" PRODUCT_ID "/" DEVICE_ID "/dp/post/json";const char* subTopic = "$sys/" PRODUCT_ID "/" DEVICE_ID "/#"; void setup():
Serial.begin(115200);pinMode(TLED_PIN, OUTPUT);digitalWrite(TLED_PIN, TLED_state);WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}Serial.println("\nWiFi connected");client.setServer(mqtt_server, mqtt_port);client.setCallback(mqttCallback);mqttConnect(); void loop():
if (!client.connected()) {mqttConnect();}client.loop(); static unsigned long lastPost = 0;
if (millis() - lastPost >= 3000) {postData();lastPost = millis();} void mqttConnect():
while (!client.connected()) {if (client.connect(DEVICE_ID, PRODUCT_ID, TOKEN)) {client.subscribe(subTopic);Serial.println("Subscribed to control topic");} else {delay(5000);}} void postData():
JsonDocument doc;if (msgId > 65535) msgId = 1;doc["id"] = msgId++; JsonObject dp = doc["dp"].toJson();
JsonObject tempObj = dp["temp"].toJson();tempObj["v"] = temp; JsonObject humiObj = dp["humi"].toJson();
humiObj["v"] = humi; JsonObject ledObj = dp["TLED"].toJson();
ledObj["v"] = TLED_state; char payload[256];
serializeJson(doc, payload);if (client.publish(pubTopic, payload)) {Serial.println("Data sent:");Serial.println(payload);} void mqttCallback(char* topic, byte* payload, unsigned int length):
String msg;for (int i = 0; i < length; i++) {msg += payload[i];} 数据上传
插入图片1... 命令下发
注意事项: - 调整响应时间至最小值,避免延迟。 - 确保命令下发格式正确。 - 右侧响应超时正常,不影响命令下发。 插入图片2...
总结
本文详细介绍了ESP32-S3连接OneNET云平台的完整流程,涵盖了数据流模型设计、MQTT协议配置及代码实现。
如果需要更详细代码解析,请私聊。
转载地址:http://vceyk.baihongyu.com/