阿里云 MQTT 协议学习总结(一)

阿里云 MQTT 协议学习总结(一)写在前面 不扯淡了 直接 goto 正文 nbsp 正文 一 MQTT 协议简介 MQTT MessageQueui 是一个物联网传输协议 它被设计用于轻量级的发布 订阅式消息传输 旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务 MQTT 是专门针对物联网开发的轻量级传输协议 MQTT 协议针对低带宽网络

写在前面: 不扯淡了,直接 goto 正文, :  

正文:

一、MQTT协议简介:

MQTT(Message Queuing Telemetry Transport),是一个物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。MQTT是专门针对物联网开发的轻量级传输协议。MQTT协议针对低带宽网络,低计算能力的设备,做了特殊的优化,使得其能适应各种物联网应用场景。

二、 概念总结

1、网关:能够直接连接物联网平台的设备,且具有子设备管理功能,能够代理子设备连接云端。

2、子设备:子设备不能直接连接物联网平台,只能通过网关连接。

3、三元组:PublicKey、DeviceName、DeviceSecret

      PublicKey:物联网平台为产品颁发的唯一标识,在设备通信及认证中都要用到,需妥善保管。

      DeviceName:在注册设备时,自定义的或者自动生成的设备名称,在通信及认证中都要用到,需妥善保管。

      DeviceSecret:物联网平台为设备颁发的设备秘钥,和DeviceName成对出现,在设备认证时会用,需妥善保管。

4、Topic:Topic是UTF-8字符串,是发布/订阅(Pub/Sub)模型中消息的中介,可以向Topic发布或者订阅消息。

5、Topic类:同一产品下不同设备的Topic集合,用${productkey}和${deviceName}通配一个唯一的设备,一个Topic类对一个ProductKey下所有设备通用。

6、发布(Pub):操作Topic的权限类型,具有往Topic中发布消息的权限。

7、订阅(Sub):操作Topic的权限类型,具有从Topic中订阅消息的权限。

8、属性:设备的功能模型之一,一般用于描述设备运行时的状态,如环境监测设备所读取的环境温度等,属性支持GET和SET两种请求方式,应用系统可发起对属性的读取或设置请求。

9、服务:设备的功能模型之一,设备可被外部调用的能力或者方法,可设置输入参数或输出参数。相比属性,服务可用一条指令实现更复杂的业务逻辑,如执行某项特定的任务。

10、事件:设备的功能模型之一,设备运行时的事件,事件一般包含需要被外部感知和处理的通知消息,可包含多个输出参数。如。某项任务完成的信息,设备发生故障报警时的问题等,事件可以被订阅和推送。

11、设备影子:是一个JSON文档,用于存储设备或者应用的当前状态信息。每个设备都会在云端有唯一的设备影子对应,无论设备有没有连接到Internet,都可以使用设备影子通过MQTT或者HTTP获取或者设置设备的状态。

 

二、Topic和Topic类

1、物联网平台中,服务端和设备端通过Topic来实现消息通信,Topic是针对设备的概念,Topic类是针对产品的概念。

2、Topic类

      创建产品之后,物联网平台会自动为该产品创建默认的Topic类,并且在创建设备之后,会将产品Topic类自动的映射到设备上,无需为每个设备创建Topic,如下:Topic自动生成示意图:

阿里云 MQTT 协议学习总结(一)

创建产品之后,IOT平台会自动为产品生成一些标准的Topic类,可以在产品的消费通信页面,查看该产品的所有Topic类

关于Topic类的说明:

(1)、Topic类是一类Topic的集合,例如:Topic 类:/${productKey}/${deviceName}/update是具体 Topic:/${productKey}/device1/update/${productKey}/device2/update的集合。

(2)、Topic类中必须以正斜线(/)进行分层,区分每个类目。其中,有两个类目为既定类目:${productKey}表示产品的标识符 ProductKey;${deviceName}表示设备名称。

(3)、类目命名只能包含字母,数字和下划线(_)。每级类目不能为空。

(4)、设备操作权限:发布表示设备可以往 Topic 发布消息;订阅表示设备可以从 Topic 订阅消息。

(5)、基础版产品支持自定义 Topic 类。您可以根据业务需求,通过自定义 Topic 类灵活地进行消息通信。高级版不支持自定义 Topic 类和修改类目名称。

(6)、系统 Topic 类是由系统预定义的 Topic 类,不支持用户自定义,不采用/${productKey}开头。例如,高级版中,针对物模型所提供的 Topic 类一般以/sys/开头;固件升级相关的Topic类以/ota/开头;设备影子的 Topic 类以/shadow/开头。

3、Topic:

    产品的Topic类不用于通信,只用来定义Topic,真正用来消息通信的是Topic。

   (1)、TopicTopic类的格式一致,区别在于,Topic类中的变量${deviceName},在Topic中是具体的设备名称。

   (2)、设备对应的Topic是从产品对应的Topic类中映射出来,根据设备名称而动态创建的。设备的Topic中带有设备名称即DeviceName,只能被该设备用来Pub和Sub通信。例如,Topic:/${productKey}/device1/update归属于设备名为device1的设备,所以只能被设备 device1 用于发布、订阅消息,而不能被设备 device2 用于发布订阅消息。

  (3)、在配置规则引擎时,配置的Topic中可使用通配符,且同一个类中只能出现一个通配符。如下表:

 阿里云 MQTT 协议学习总结(一)

 

先到这里,后续慢慢更新。。。。。。

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224971.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午10:26
下一篇 2026年3月17日 上午10:26


相关推荐

  • 离散值计算方法JAVA实现「建议收藏」

    离散值计算方法JAVA实现

    2022年4月3日
    249
  • 水流量霍尔传感器工作原理_51单片机温度传感器

    水流量霍尔传感器工作原理_51单片机温度传感器硬件准备(1)YF-B1流量传感器一个(2)51开发板一个基础知识(1)YF-B1流量传感器只有三根线。即数据线、VCC、GND。数据线输出为占空比为50%的方波。当水流通过水流转子组件时,磁性转子转动并且转速随着流量的变化而成线性变化。霍尔传感器(霍尔元件采样)输出相应的脉冲信号。其流量脉冲特性计算公式为:脉冲f(Hz)=8.1x流量Q(L/min)-3。(2)51单片机的中断…

    2026年4月18日
    5
  • C++构造函数的作用_c++什么是构造函数

    C++构造函数的作用_c++什么是构造函数PS:写在前面就是构造函数的作用可以这样理解,如果没有构造函数就是类里边只是声明了成员变量,成员函数,还有最后的对象,这样你在对该对象进行初始化赋值时就比较麻烦就得先调用成员函数对成员变量赋值,成员变量进而作用到对象上,之后有了构造函数,在构建构造函数时直接可以带参数对对象进行初始化,相当于省略了步骤,可以这样简单的理解。PS:但是构造函数远远不止只有赋值这一条作用(此处不要陷入误区以为他就是给成员变量赋值的这一个作用,不是这样的或者说不完全是这样,给成员变量赋值只是构造函数的作用之一,他还有其

    2025年10月6日
    6
  • VIM安装YouCompleteMe(Windows/Mac/Linux)

    VIM安装YouCompleteMe(Windows/Mac/Linux)VIM 安装 YouCompleteM 前言前一阵子一直在折腾 YouCompleteM 这个插件 在 Mac Ubuntu Windows 上都试过 全部安装成功 其中 windows 最费劲 今天也写出来 希望有跟我同样需要的人也可以少走弯路 少浪费点时间在环境配置上 安装 VIMwindowswi 下 建议从如下链接下载安装 VIM 是 vim 的日更版 可以支持 python 脚本 vim win32 installer 下载完毕后直接安装后 配置环境变量 path 到 vim 的安装路径 例如我安装的是 vim8

    2026年3月18日
    2
  • 怎么将pdf转换成image_php从入门到精通 pdf

    怎么将pdf转换成image_php从入门到精通 pdf上次找到fpdf发现文档支持不足。而且含有php5.4不能用了的过期函数,图片进去也显示不了等问题。特意找到这个tcpdf。下载的地址搞一个试试中文字体包下载%20Sans%20Fallback%20-%20PHP.zip/download下载后,将它解压放在droidsansfallback.php、droidsansfallback.z以及droidsansfallback.ctg.z这三个文…

    2025年9月23日
    5
  • 关于勒索病毒“永恒之蓝”的解决方案

    关于勒索病毒“永恒之蓝”的解决方案关于勒索病毒“永恒之蓝”的解决方案(没什么新鲜的,就是通过注册表关闭445端口)(首先,最近发现我的文章会被其他网站盗版,所以特此声明,本文原作来自http://www.cnblogs.com/an

    2022年7月2日
    69

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号