MQTT阿里云¶
学习资料:
MQTT介绍¶
MQTT(Message Queuing Telemetry Transport)是一种轻量级、基于发布-订阅模式的消息传输协议,适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它在物联网应用中广受欢迎,能够实现传感器、执行器和其它设备之间的高效通信。
MQTT报文功能解释(部分)¶
连接物联网云平台的某个具体设备¶
向物联网云平台发送消息¶
订阅主题才能接收到物联网云平台的消息¶
STM32实战演习¶
阿里云物联网平台设置¶
-
创建产品(你的产品名称--会有你的产品KEY)
-
Topic类列表:
-
基础通信Topic
-
物模型通信Topic:我们想要让设备(STM32)中数据上传、数据回收 就要使用到里面的
属性上报 /sys/Your产品KEY/${deviceName}/thing/event/property/post 发布 设备属性上报
这个就是我们将STM32采集到的数据上传使用的主题
要将里面的${deviceName} 改成 (你自己的设备名称),上面的发布意思是 我们具有发布的权限
属性设置 /sys/Your产品KEY/${deviceName}/thing/service/property/set 订阅 设备属性设置
这个就是我们可以使用阿里云物联网下发数据使用的主题
要将里面的${deviceName} 改成 (你自己的设备名称),上面的订阅意思是 我们具有订阅的权限
- 自定义Topic
-
-
功能定义:这里放置你要上传的STM32的数据
-
添加设备 (基于上方创建的产品下--设备名称)
-
设备信息:MQTT连接信息
-
物模型数据:产品中的功能定义上线的功能会在这里出现
-
完成以上两步后,可以先使用MQTT.fx软件实现MQTT连接阿里云,发送的数据格式应该如下
-
json { "method" : "thing.event.property.post" , "id": "162277852", "params" :{ "Tem" : 11.0, "Hum" : 22.0 }, "version" : "1.0.0" }
### 使用MQTT代码连接阿里云
-
路径:paho.mqtt.embedded-c-master\MQTTPacket\src
-
这个src里面的所有
.c
和.h
文件都要,然后将他们复制到我们keil的工程文件里面,新建一个MQTT文件夹 -
文件名 解释 MQTTConnectClient.c 包含了作为MQTT客户端的连接服务器,断开连接,发送心跳请求的函数 MQTTConnectServer.c 包含了作为MQTT服务端处理连接请求所需要的函数 MQTTDeserializePublish.c 包含了解析PUBLISH报文的函数,通俗说就是接收消息用的 MQTTFormat.c 包含了报文构造函数,被其它文件中的报文构造函数调用,不直接调用里面的函数 MQTTPacket.c 包含了供其他文件调用的一些解析报文用的函数 MQTTSerializePublish.c 包含了构造PUBLISH,PUBACK,PUBREC,PUBREL报文的函数,通俗说就是发消息用的 MQTTSubscribeClient.c 包含了构造SUBSCRIBE报文的函数,发送订阅主题的请求时使用的 MQTTSubscribeServer.c 包含了解析SUBSCRIBE和构造SUBACK的函数,服务端使用的文件 MQTTUnsubscribeClient.c 包含了构造UNSUBSCRIBE的函数,发送取消订阅主题的时使用 MQTTUnsubscribeServer.c 包含了解析UNSUBSCRIBE和构造UNSUBACK报文的函数,服务端使用的文件 -
那我们如何使用这个库函数呢?可以参考 他给的库中的代码示例(示例在和src同一级里面的samples中)
-
使用代码实现上传到阿里云
将STM32数据上传到阿里云¶
上面已经连接到了阿里云的物联网平台 那么接下来 就是把STM32采集到的数据 发送给阿里云
阿里云下发数据到STM32¶
首先从阿里云的产品中功能定义中设置一个bool数据型的LED功能,然后设备上线后在 在线调试
模式下发送LED1数据
创建日期: October 7, 2023