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一致,都则回复无效

如下图所示:

相关推荐
某林2127 小时前
ROS2与STM32通信详解
stm32·单片机·嵌入式硬件
EVERSPIN10 小时前
MCU微控制器,N32H47x高性能MCU机器人关节控制方案
单片机·嵌入式硬件·机器人·mcu微控制器
0南城逆流010 小时前
【STM32】知识点介绍三:哈希算法详解
stm32·嵌入式硬件·哈希算法
云山工作室10 小时前
基于STM32单片机的正激式开关电源设计(论文+源码)
stm32·单片机·嵌入式硬件·毕业设计·课程设计·毕设
芯希望11 小时前
芯伯乐700mA线性稳压器XBLW L78M05H/L78M12H:稳定可靠,简化电源设计
单片机·嵌入式硬件
lingzhilab11 小时前
零知IDE——STM32F407VET6驱动SHT40温湿度传感器与ST7789实现智能环境监测系统
stm32·单片机·嵌入式硬件
贝塔实验室13 小时前
Altium Designer 6.3 PCB LAYOUT教程(四)
驱动开发·嵌入式硬件·硬件架构·硬件工程·信息与通信·基带工程·pcb工艺
星辰pid14 小时前
stm32的gpio模式到底该怎么选择?(及iic,spi,定时器原理介绍)
stm32·单片机·嵌入式硬件
brave and determined15 小时前
可编程逻辑器件学习(day3):FPGA设计方法、开发流程与基于FPGA的SOC设计详解
嵌入式硬件·fpga开发·soc·仿真·电路·时序·可编程逻辑器件
axuan1265115 小时前
10.【NXP 号令者RT1052】开发——实战-RT 看门狗(RTWDOG)
单片机·嵌入式硬件·mcu