【OneNET】_01_使用微信小程序通过新版OneNET平台获取STM32设备信息并进行控制
一、 前言
笔者在这先简单介绍一下自己的整个系统,以好让各位朋友能够快速了解这篇文章对自己是否有帮助。
1.1 OntNET+硬件方面: STM32F103C8T6 + ESP01S
通过MQTT协议(笔者是直接给ESP01S刷了MQTT的AT固件,这种方法简单方便)将采集到的光照、设备电量和开锁信息上传到OneNET平台(这个过程就是向云平台你所创建设备发布主题),并且也要订阅云平台你所创建设备的主题,这样你的STM32才能收到云平台下发的指令。
教程
视频教程可参考:新版onenet利用stm32+esp8266接入指南 笔者这部分也是参考这位老师的,她这个接入的视频教程没有问题,她这个系列还有其它的视频,有部分采用的是http协议的并且是老版OneNET,但其思想是相通的可借鉴。
注意: 她的微信小程序连接云平台的教程和云平台下发指令的教程,实践有问题,我会在后续部分详细说明。云平台创建设备,和数据上云参考此up,微信小程序连接云平台和指令下发建议参考下面博主的教程。
文本教程 可参考下面这位博主的文章,
1.使用新版OneNET创建MQTT设备远程控制单片机,OneNET创建设备,我是跟着上面up做的,但这个文章看后感觉没有问题。
2.ESP8266-01s入门:AT指令讲解、上云与MQTT通信教程,AT指令部分很详细。
3.使用微信小程序和OneNET平台MQTT实现51/STM32单片机远程智能控制和数据通信教程 ,他这个教程里ESP8266指令接收与处理ESP8266_ReceiveCmd() 函数我在实践时有问题,后续在相应部分会详细说明。
1.2 微信小程序方面
4.通过微信小程序获取oneNET设备数据教程,这部分我也是参考了上面up和这位博主的教程,实践发现up的教程有点小问题主要是获取和推送所用的API方面在新版不适用,,这里用到的API都可以OneNET的官方文档和API调试页面找到。小程序效果如下图。
二、STM32代码部分修改
- 首先要在esp01s的初始化里,加入对云平台设备主题进行订阅的命令。即第7条命令,命令里要修改产品ID和设备名称,具体的文本教程有。
注意 不先进行订阅,后续小程序进行POST时就会报错。
/**
* @brief 初始化ESP8266
* @param 无
* @retval 无
*/
void ESP8266_Init(void)
{
ESP8266_Clear();
delay_xms(100);
/* 确认AT命令可以正确发送并得到响应 */
printf("0. AT\r\n");
while (ESP8266_SendCmd("AT\r\n", "OK"))
delay_xms(100);
/* 重启ESP8266 */
printf("1. AT+RST\r\n");
while (ESP8266_SendCmd("AT+RST\r\n", ""))
delay_xms(100);
/* 设置Wi-Fi模式 */
printf("2. CWMODE 设置Wi-Fi模式\r\n");
while (ESP8266_SendCmd("AT+CWMODE=1\r\n", "OK"))
delay_xms(100);
/* 打开DHCP */
printf("3. AT+CWDHCP 打开DHCP\r\n");
while (ESP8266_SendCmd("AT+CWDHCP=1,1\r\n", "OK"))
delay_xms(100);
/* 配置Wi-Fi连接 */
printf("4. CWJAP 配置Wi-Fi连接\r\n");
while (ESP8266_SendCmd(ESP8266_WIFI_INFO, "GOT IP"))
delay_xms(100);
/* 设置MQTT登录用户信息 */
printf("5. MQTTUSERCFG 设置MQTT登录用户信息\r\n");
while (ESP8266_SendCmd(ESP8266_USERCFG_INFO, "OK"))
delay_xms(100);
/* 发起向指定MQTT服务器的连接 */
printf("6. MQTTCONN 发起向指定MQTT服务器的连接\r\n");
while (ESP8266_SendCmd(ESP8266_ONENET_INFO, "OK"))
delay_xms(100);
/* 订阅指定的MQTT主题 */
printf("7. MQTTSUB 订阅指定Topic\r\n");
while (ESP8266_SendCmd("AT+MQTTSUB=0,\"$sys/78peC*h6uT/l*ck/thing/property/set\",0\r\n", "OK"))
delay_xms(100);
printf("7. ESP8266 Init OK\r\n");
}
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
评论记录:
回复评论: