阿里云 MQTT 协议学习总结(一) - Go语言中文社区

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


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

正文:

一、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自动生成示意图:

创建产品之后,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中可使用通配符,且同一个类中只能出现一个通配符。如下表:

 

 

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

 

 

 

 

 

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_40204595/article/details/81410949
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-06-06 09:43:42
  • 阅读 ( 1382 )
  • 分类:职场

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢