MQTT+ONENET+STM32+LWIP驱动

前言

近段时间由于项目需求,需要将原来的项目增加应用层的MQTT协议,由于不懂MQTT所以从B站学习了正点原子的lwip课程,看完后需要进行实践,所以选择了ONENET平台来作为学习的时间的平台。

1、学习准备

先下载工具:

MQTT X 是一款开源 5.0 桌面测试客户端,它支持在 macOS,Linux,Windows 操作系统上运行。

MQTT X 支持创建多个同时在线的 MQTT 客户端,方便用户快速测试 MQTT/TCP、MQTT/TLS 、MQTT/WebSocket 的连接/发布/订阅功能及其他 MQTT 协议特性。

EMQ官网下载:免费下载、试用 EMQ 产品

先下载进行安装

2、ONENET平台

1)注册账号 这里手机号注册就可以,不多说了

2)创建产品

产品开发->创建产品

产品分类->选择一个合适的(选哪个其实不是很重要),我选择了如下图

选择WIFI\以太网都没差别,非*我们可以不填,最后电机确定完成产品创建

3)创建产品的功能点

点击产品开发

点击设置物模型

添加自定义功能点

下图是我自己自定义添加的(注由于我们产品注册温湿度传感器,系统默认会有创建好了的功能点),只是我不想用系统创建,便自己创建

定义好产品的功能点,我们就可以添加设备。

4)添加设备

这里设备相当于要就行MQTT通讯的设备,有几台参与,就创建几个设备;比如我有一个开发板,也有一个APP获取数据,那么这里就需要创建两个设备。这么理解。

下图就是我创建好的两个设备,想创建几个由你定义

3、学习使用MQTTX客户端与ONENET平台数据通讯

我们学习使用MQTT最后都是为了移植MQTT进行项目开发,这里我们先不进行程序移植,我们先使用便捷的客户端先进行通讯,尝试学习使用发布和订阅的相关指令,这样才能更好掌握,避免从零直接弄程序,来一堆问题,先确保我们能正常通讯。

1)MQTTX已经下载好了

2)准备ONENET平台的一个工具,叫做 Token生成工具

网址:https://open.iot.10086.cn/doc/iot_platform/images/tools/token.exe

3)打开MQTT X客户端,进入客户端配置页面,先把语言改成中文

配置连接

产品ID:

ONENET服务器地址:

但是如果地址使用官网提供的地址:studio-mqtt.heclouds.com,我连接不上

得使用: 183.230.40.96地址,才连接的上,你们回头可以试下。

密码:

最后生成的,复制粘贴到MQTTX的密码那行。

时间戳:只要这个时间戳时间大于当前时间,所以我们可以填写时间大一些

设备钥匙:

4)点击连接,链接成功后入下图,设备也会在ONENET平台显示在线

5)要进行通讯之前,我们先了解ONENET平台规定的 订阅与发布相关指令

1)设备上报信息(在ONENET属性即数据点),官网叫发布属性上报

$sys/{pid}/{device-name}/thing/property/post

2)设备订阅响应信息(我们上报了信息,订阅这条就可以收到服务器返回的是否成功信息)

$sys/{pid}/{device-name}/thing/property/post/reply

3)接收服务器推送消息,就要订阅这条命令

$sys/{pid}/{device-name}/thing/property/set

4)设备收到服务器推送消息,要返回成功给他,就要发布这条命令

$sys/{pid}/{device-name}/thing/property/set_reply

了解完命令后,我们先进行数据属性发布

6)在发布前,先订阅服务器响应,不订阅这条,就是我们发布完消息,不知道服务器是否收到数据,订阅了,我们发布完消息,就可以收到服务器的返回信息。

注:在发布命令前,一定要确保你输入的命令是正确的,不带任何空格等或者写错,一旦有出入写错,你客户端在点击发布时候就会,发送完数据就会立马断开连接,如下图

6.1)订阅

$sys/x818hiMIU0/DHT11/thing/property/post/reply

6.2)发布消息:

$sys/x818hiMIU0/DHT11/thing/property/post

{

"id": "123",

"version": "1.0",

"params": {

"CurrentTemperature": {

"value": 2.6

},

"CurrentVoltage": {

"value": 2

}

}

}

发布成功后,平台的数据就会变化,对比数据是对的

6.3)接收服务器下发消息,即订阅

$sys/x818hiMIU0/DHT11/thing/property/set

订阅后,我们在服务器进行下发数据测试

但是由于我们客户端收到数据后,没有返回成功与否,所以服务器这些等待响应就显示

所以这时候就要用到,发布命令,这句 命令用来回复服务器我收到了数据

$sys/{pid}/{device-name}/thing/property/set_reply

$sys/x818hiMIU0/DHT11/thing/property/set_reply

复制代码
{
"id":"39",
"code":200,
"msg":"success"
}

注意,回复的ID号,要和收到的服务器下发的那条数据的id一致,都则回复无效

如下图所示:

相关推荐
cjy_Somnr2 小时前
keil5报错显示stm32的SWDIO未连接不能烧录
stm32·单片机·嵌入式硬件
Lay_鑫辰2 小时前
西门子诊断-状态和错误位(“轴”工艺对象 V1...3)
服务器·网络·单片机·嵌入式硬件·自动化
无垠的广袤4 小时前
【工业树莓派 CM0 NANO 单板计算机】本地部署 EMQX
linux·python·嵌入式硬件·物联网·树莓派·emqx·工业物联网
雲烟6 小时前
嵌入式设备EMC安规检测参考
网络·单片机·嵌入式硬件
泽虞7 小时前
《STM32单片机开发》p7
笔记·stm32·单片机·嵌入式硬件
田甲7 小时前
【STM32】 数码管驱动
stm32·单片机·嵌入式硬件
up向上up7 小时前
基于51单片机垃圾箱自动分类加料机快递物流分拣器系统设计
单片机·嵌入式硬件·51单片机
纳祥科技16 小时前
Switch快充方案,内置GaN,集成了多个独立芯片
单片机
单片机日志18 小时前
【单片机毕业设计】【mcugc-mcu826】基于单片机的智能风扇系统设计
stm32·单片机·嵌入式硬件·毕业设计·智能家居·课程设计·电子信息
松涛和鸣18 小时前
从零开始理解 C 语言函数指针与回调机制
linux·c语言·开发语言·嵌入式硬件·排序算法