7028 mqtt请求说明
MQTT请求简述
MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布/订阅模式的消息传输协议,旨在为物联网设备提供可靠、高效的通信方式。
MQTT请求组成部分
- 固定报头(Fixed Header):MQTT消息的固定报头是每个消息都必须包含的固定部分。它包含了控制消息传输的必要信息,如消息类型、服务质量等级(QoS)、主题是否保留等。固定报头的长度固定为一个字节。
- 可变报头(Variable Header):MQTT消息的可变报头是一个可选的部分,长度取决于消息类型和特定的操作。它包含与消息类型相关的控制信息,如连接标志、订阅主题的QoS等。
- 主题名(Topic Name):主题名是标识消息的关键部分。在发布消息时,需要指定一个主题名,而订阅者则根据主题名来接收感兴趣的消息。主题名通常使用UTF-8编码。
- 负载(Payload):负载是实际传输的数据内容。对于发布消息,负载是要发送的数据;对于订阅消息,负载是从发布者接收到的数据。负载的长度可以是0个字节到最大消息大小的限制。
MQTT请求流程
- 建立连接:
- 客户端通过TCP/IP协议与MQTT代理服务器建立连接。MQTT默认使用1883端口进行非加密连接,或者使用8883端口进行加密连接(通过TLS/SSL)。
- 客户端可以选择保持会话,以便在断开连接后可以恢复之前的订阅和发布状态。
- 发布消息:
- 客户端作为发布者(Publisher),通过发送PUBLISH消息向指定的主题发布消息。
- PUBLISH消息包含固定报头、可变报头、主题名和负载(消息内容)。
- 发布者发布消息后,MQTT代理服务器将根据订阅者的订阅信息将消息传递给相应的订阅者。
- 订阅主题:
- 客户端作为订阅者(Subscriber),通过发送SUBSCRIBE消息来订阅特定的主题。
- SUBSCRIBE消息包含固定报头、可变报头和一个或多个主题过滤器及其对应的服务质量等级(QoS)。
- 订阅者可以同时订阅多个主题。
- 代理服务器确认订阅
- 当代理服务器收到订阅请求后,它将确认订阅并将相应的订阅信息保存起来。
- 订阅者现在可以接收发布到其订阅的主题的消息。
- 接收消息:
- 当有新消息发布到一个订阅者订阅的主题时,MQTT代理服务器将将该消息发送给订阅者。
- 接收到消息后,订阅者可以处理消息的负载并做出相应的操作。
- 断开连接:
- 当客户端(发布者或订阅者)完成通信后,它可以选择断开与MQTT代理服务器的连接。
- 断开连接时,客户端可以选择保留会话,以便在重新连接时保留之前的订阅和发布状态。
测试服务器
这里提供两个私用mqtt服务器,且都是Emqx搭建,当然可以使用公用的broker测试服务器
- tcp://mqtt.waveshare.cloud:1883 mqtt
- tcp://mqtt.easyiothings.com:443 mqtts
mqtt通信示例
登录平台 创建新设备
首先需要创建设备类型,承接下属同种类型的多个设备,便于设备管理
然后创建具体设备,点击设备列表新增,填入相关数据
创建完成之后设备为未激活状态,可通过右侧地址详情查看mqtt连接属性内容
对于设备属性可通过需要上传的数据内容来定义上传,这里通过一键添加设备已经具备LED属性
设备端sim7028使用MQTT连接Waveshare Cloud
首先使用跳线帽连接A端,即Type-C端接Sim7028端
将SIM7028 NB-IoT HAT使用Type-c转USB插入电脑,使用sscom打开串口,等待网络初始化成功
初始化MQTT连接
AT+CMQTTSTART
AT+CMQTTACCQ=0,"{键入平台分配的client id}",0
AT+CMQTTCONNECT=0,tcp://mqtt.waveshare.cloud:1883,20,1
订阅&发布主题
AT+CMQTTTOPIC=0,18 # 键入Pub主题 18为字符长度
AT+CMQTTSUB=0,18,0 # 键入Sub主题 18为字符长度
填写需要上传的数据内容:
AT+CMQTTPAYLOAD=0,21 # 字符长度少于10240 ,这里键入hello waveshare cloud 21位测试
发布消息:
AT+CMQTTPUB=0,0,60
总体测试数据过程截图: