基于OneNet平台的MQTT发布订阅(一)
1.MQTT协议介绍
- MQTT(Message Queuing Telemetry Transport),消息队列遥测传输:是一种轻量级的 发布-订阅消息传输协议。它专为 低带宽,高延迟或不稳定的网络环境设计,因此在物联网IoT,机器对机器(M2M)通信领域应用极为广泛。
- 高效的 邮局系统
- **发布者Publisher:**寄信人,负责发送消息
- **订阅者Subscriber:**收信人,负责接收自己感兴趣的消息
- **代理服务器Broker:**邮局,负责接收所有信件,并根据地址,发送给对应的收信人
- 核心组件:
- **发布者Publisher:**消息的发送方,例如一个上报温度的传感器,它只需将消息发送到代理服务器,无需关心谁会接收。
- **订阅者Subscriber:**消息的接收方,例如一个显示温度的手机APP。它向代理服务器订阅它感兴趣的主题,接收相关消息。
- **代理服务器Broker:**整个系统的中枢,负责接收所有发布的消息,进行过滤,并分发给对应的订阅者。
- 工作流程:
- 1.发布者和订阅者 与Broker建立Tcp/IP连接
- 2.订阅者向Broker订阅一个或多个主题Topic
- 3.发布者向特定主题发布消息。
- 4.Broker将消息转发给所有订阅了该主题的客户端。
- 核心特性和优势:
- **极致的轻量级:**协议头部最小仅2字节,大幅减少了网络带宽和设备功耗,非常适合资源受限的嵌入式设备。
- 灵活的服务质量 QoS:提供三种消息传递可靠性等级,适应不同场景
- **QoS 0(最多一次):**消息只发一次,不保证送达,适用于日志等非关键数据。
- **QoS 1(至少一次):**确保消息至少送达一次,但可能有重复
- **QoS 2(恰好一次):**通过四次握手确保消息唯一且可靠地送达一次
- 强大的 遗嘱 与 保留 机制
- **遗嘱消息:**客户端异常断开时,Broker自动发布一条预设消息,通知其他设备
- **保留消息:**Broker为每个主题保存最新的一条消息,新订阅者连接后会立刻收到,避免等待
- 良好的安全性与扩展性
- 支持通过 用户名、密码进行身份认证,使用SSL/TLS加密通信
- 架构设计易于扩展,可连接数百万的物联网设备
2.创建云端的Broker
- 免费的物联网云端平台
- 网址:https://open.iot.10086.cn/
- 控制台—>设备管理服务—>产品开发

- 产品名称—>协议—>联网方式
- 其他的随便填

- 产品开发—>设置物模型—>添加自定义功能点

-
定义点类型,名称,标识符,范围,步长

-
定义你需要的其他数据点,发布产品

- 为创建的产品添加设备
- 设备管理 —> 添加设备 —>设备名称

3.使用MQTTFX模拟一个发布者Publisher
- 使用MQTT.fx 1.7.1 是免费版本
- 查阅官方文档说明

- 打开Mqtt.fx作为客户端,连接Broker
![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传]
- 密码Token的生成
- 打开文档说明,下载Token生成工具

- res:

- et:Token过期时间,Unix时间戳格式
百度Unix时间戳转换

- Key:

- MQTT.fx连接
- 连接成功后,Broker显示在线状态


-
发布信息

{ "id": "123", "version": "1.0", "params": { "Pressure": { "value": 23.6 } } } -
最终结果:在Broker中可以看到数据更新到定义的点中

- 如果我们订阅了
$sys/{pid}/{device-name}/thing/property/post/reply,我们会收到下面,平台返回给我们的json字段:

4.使用MQTTFX模拟一个订阅者SubScriber
- 订阅者,需要收到平台下发的数据,需要订阅:
$sys/{pid}/{device-name}/thing/property/set

- 使用平台下发数据

- 根据传下来的ID,进行匹配,返回一个json,
- id值需要匹配,msg值可以自定义
{
"id": "2",
"code": 200,
"msg": "success"
}
- 使用
$sys/{pid}/{device-name}/thing/property/set_reply返回成功信息:


openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)