- 打卡等级:以坛为家I
- 打卡总天数:212
- 最近打卡:2026-04-03 16:19:40
中级会员
- 积分
- 373
|
也是连接Onenet成功了,可以在云平台看到数据,项目完工
#define ESP8266_UART(str) UART2_SendString(str)
#define DDEBUG_LOG(str) OLED_Clear();OLED_Printf(0, 0, OLED_8X16, str);OLED_Update()
#define ESP8266_Delay(ms) delay_ms(ms)
/**
* @brief OneNET设备初始化(WiFi连接 + MQTT配置 + 订阅主题)
* @note 严格保留用户实测有效的1883端口(非SSL),调试日志精准对应步骤
*/
void OneNET_Device_Init(char *ssid, char *pwd, char *dev_name, char *prod_id, char *mqtt_auth)
{
char cmd_buf[256];
ESP8266_Delay(3000);
DDEBUG_LOG("复位模块...");
ESP8266_UART("AT+RST\r\n");
ESP8266_Delay(4000);
DDEBUG_LOG("设置STA模式...");
ESP8266_UART("AT+CWMODE=1\r\n");
ESP8266_Delay(800);
DDEBUG_LOG("连接WiFi...");
sprintf(cmd_buf, "AT+CWJAP=\"%s\",\"%s\"\r\n", ssid, pwd);
ESP8266_UART(cmd_buf);
ESP8266_Delay(8000);
DDEBUG_LOG("配置MQTT用户...");
sprintf(cmd_buf, "AT+MQTTUSERCFG=0,1,\"%s\",\"%s\",\"%s\",0,0,\"\"\r\n",
dev_name, prod_id, mqtt_auth);
ESP8266_UART(cmd_buf);
ESP8266_Delay(1000);
DDEBUG_LOG("连接MQTT...");
ESP8266_UART("AT+MQTTCONN=0,\"mqtts.heclouds.com\",1883,1\r\n");
ESP8266_Delay(2000);
DDEBUG_LOG("订阅回复...");
sprintf(cmd_buf, "AT+MQTTSUB=0,\"$sys/%s/%s/thing/property/post/reply\",0\r\n",
prod_id, dev_name);
ESP8266_UART(cmd_buf);
ESP8266_Delay(500);
DDEBUG_LOG("订阅控制...");
sprintf(cmd_buf, "AT+MQTTSUB=0,\"$sys/%s/%s/thing/property/set\",0\r\n",
prod_id, dev_name);
ESP8266_UART(cmd_buf);
ESP8266_Delay(500);
DDEBUG_LOG("初始化完成!");
ESP8266_Delay(1000);
}
/**
* @brief 上报物模型属性数据
*/
void OneNET_Publish_Property(float temp, float press, float altitude,
char *prod_id, char *dev_name)
{
char cmd_buf[256];
sprintf(cmd_buf,
"AT+MQTTPUB=0,\"$sys/%s/%s/thing/property/post\",\"{\\\"id\\\":\\\"123\\\"\\,\\\"version\\\":\\\"1.0\\\"\\,\\\"params\\\":{\\\"temp\\\":{\\\"value\\\":%0.1f}\\,\\\"press\\\":{\\\"value\\\":%0.1f}\\,\\\"altitude\\\":{\\\"value\\\":%0.1f}}}\",0,0\r\n",
prod_id, dev_name, temp, press, altitude);
ESP8266_UART(cmd_buf);
}
/**
* @brief 回复云端属性设置命令
* @param request_id 从 property/set 消息JSON中解析出的云端请求ID
*/
void OneNET_Reply_Property_Set(char *request_id, char *prod_id, char *dev_name)
{
char cmd_buf[256];
sprintf(cmd_buf,
"AT+MQTTPUB=0,\"$sys/%s/%s/thing/property/set_reply\","
"\"{\\\"id\\\":\\\"%s\\\",\\\"code\\\":200,\\\"msg\\\":\\\"success\\\"}\",0,0\r\n",
prod_id, dev_name, request_id);
ESP8266_UART(cmd_buf);
}
|
-
|