STM32F1+freeRTOS+MQTT通过esp8266上报数据到OneNET平台
前言
实现STM32在freertos系统中通过MQTT将数据上传到OneNET;
我们需要先在ONENET平台上创建好自己的产品和设备后才能按照下面的步骤进行,创建的过程在我前面的文章有;
我们使用的是物模型的话题,需要在平台创建物模型并且添加功能点。

代码:
通过网盘分享的文件:data.zip
链接: https://pan.baidu.com/s/1jMawzQlN3iw8wHKBtCKiJA?pwd=2hgc 提取码: 2hgc
我添加了三个属性点如图所示,其中有一个为bool类型,其余都为整形。

在设备详情中获取设备名、设备密钥和产品名

在onenet.c文件中修改PROID、ACCESS_KEY和DEVICE_NAME三个参数,我们不需要自己计算token密钥,代码中函数OneNET_Authorization会帮我们自动根据三元组计算token密钥。

如果计算的token登入不成功则在OneNet_DevLink()函数中手动赋值token密钥,通过token工具计算

在esp8266.c中修改wifi名和密码。

我们订阅平台下发的数据,来设置我们的LED亮灭,订阅的话题为:
$sys/{pid}/{device-name}/thing/property/set
可在函数OneNET_Subscribe()中看到订阅
在OneNet平台的设备管理详情页点击「设备调试」Tab栏,或进入产品开发-设备调试流程模块,选择「应用模拟器」,点击「启动调试」,可进行设置设备属性。
点击属性设置之后平台会向$sys/{pid}/{device-name}/thing/property/set话题发送数据,32端再向平台回复$sys/%s/%s/thing/property/set_reply。

我们收到平台的属性设置消息之后需要回复效应成功消息,代码内容在函数void OneNet_RevPro(unsigned char *cmd);中。
{
"id": "2",
"code": 200,
"msg": "success"
}
其中id为下行数据的id,需要匹配,code为200代表成功,msg可以自定义。

1.MqttKit.c
这是一个MQTT协议实现库,主要用于与OneNET平台进行MQTT通信。
主要功能:
- MQTT协议包的封装和解析
-连接、订阅、发布、断开等MQTT操作
重要函数:
1. MQTT_PacketConnect - 构建MQTT连接包
2. MQTT_PacketPublish - 构建发布消息包
3. MQTT_PacketSubscribe - 构建订阅消息包
4. MQTT_UnPacketRecv - 解析接收到的MQTT数据包类型
5. MQTT_UnPacketPublish - 解析发布消息
6. MQTT_NewBuffer/MQTT_DeleteBuffer - 内存管理
2. esp8266.c
这是ESP8266 WiFi模块的驱动代码,负责WiFi通信。
主要功能:
- ESP8266初始化
- AT命令发送
- 数据透传
重要函数:
1. ESP8266_Init - 初始化ESP8266,连接WiFi
2. ESP8266_SendCmd - 发送AT命令并等待响应
3. ESP8266_SendData - 发送数据
4. ESP8266_GetIPD - 获取平台返回的数据
5. ESP8266_Clear - 清空缓冲区
3. onenet.c
这是OneNET物联网平台的通信接口层。
主要功能:
- OneNET平台连接
- 数据上传下发
- Token认证
重要函数:
1. OneNet_DevLink - 与OneNET建立MQTT连接
2. OneNet_SendData - 上传数据到平台
3. OneNET_Subscribe - 订阅主题,接收平台下发的数据
4. OneNet_RevPro - 解析平台返回的数据
5. OneNET_Authorization - 生成认证Token
注意事项:
1.如果出现能够连接上平台但是发送消息后就断开的情况,考虑发送雄消息的话题出错了。
2.这份代码是使用的物模型的话题,需要在平台创建物模型,添加功能点。
3.代码目前功能简单,缺少心跳检测、断线重连等机制。
4.一定要注意如果自己的设备名起的太长的话可能会因为存话题的buf长度不够导致发送失败断开的情况。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)