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/
  • 控制台—>设备管理服务—>产品开发

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=E%3A%5C%E9%A1%B9%E7%9B%AE%E5%AD%A6%E4%B9%A0%5CA在这里插入图片描述

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

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?在这里插入图片描述

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

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上在这里插入图片描述

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

    ![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?在这里插入图片描述

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

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?在这里插入图片描述

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

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=E%3A%5C%E9%A1%B9%E7%9B%AE%E5%AD%A在这里插入图片描述

3.使用MQTTFX模拟一个发布者Publisher

  • 使用MQTT.fx 1.7.1 是免费版本
  1. 查阅官方文档说明

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=E%3A%5C%E9%A1%B9%E7%9B%AE%E5%AD%A6%E4%在这里插入图片描述

  1. 打开Mqtt.fx作为客户端,连接Broker

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传]在这里插入图片描述

  1. 密码Token的生成
  • 打开文档说明,下载Token生成工具

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=E%3A%5C%E9%A1%B9%E7%9B%AE%E5在这里插入图片描述

  • res:

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?在这里插入图片描述

  • et:Token过期时间,Unix时间戳格式

百度Unix时间戳转换

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上在这里插入图片描述

  • Key:

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?在这里插入图片描述

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

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?在这里插入图片描述

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=E%3A%5C%E9%A1%B9%E7%9B%AE%E5%AD%A6%E4%在这里插入图片描述

  1. 发布信息

    ![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=E%3A%5C%E9%A1%B9%E7%9B%AE%E5%AD%A6%E4%在这里插入图片描述

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

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?在这里插入图片描述

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

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?在这里插入图片描述

4.使用MQTTFX模拟一个订阅者SubScriber

  • 订阅者,需要收到平台下发的数据,需要订阅:$sys/{pid}/{device-name}/thing/property/set

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?在这里插入图片描述

  • 使用平台下发数据

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=E%3A%5C%E9%A1%B9%E7%9B%AE%E5%A在这里插入图片描述

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

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?在这里插入图片描述

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=E%3A%5C%E9%A1%B9%E7%9B%AE%E5%AD%A6%E4%B9%A0%5C在这里插入图片描述

Logo

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

更多推荐