物联网平台中,服务端和设备端通过 Topic 来实现消息通信。Topic是针对设备的概念,Topic类是针对产品的概念。产品的Topic类会自动映射到产品下的所有设备中,生成用于消息通信的具体设备Topic。

产品Topic类

为了方便海量设备基于海量Topic进行通信,简化授权操作,物联网平台增加了产品Topic类的概念。Topic类是一类Topic的集合。例如,产品的自定义Topic类/${YourProductKey}/${YourDeviceName}/user/update是具体Topic/${YourProductKey}/device1/user/update/${YourProductKey}/device2/user/update的集合。

在您创建设备后,产品的所有Topic类会自动映射到设备上。您无需单独为每个设备授权Topic。

图 1. Topic 自动生成示意图


关于Topic类的说明:

  • Topic类中,以正斜线(/)进行分层,区分每个类目。其中,有两个类目为既定类目:${YourProductKey}表示产品的标识符ProductKey;${YourDeviceName}表示设备名称。
  • 类目命名只能包含字母,数字和下划线(_)。每级类目不能为空。
  • 设备操作权限:发布表示设备可以往Topic发布消息;订阅表示设备可以从Topic订阅消息。

设备Topic

产品的Topic类不用于通信,只是定义Topic。用于消息通信的是具体的设备Topic。

  • Topic格式和Topic类格式一致。区别在于Topic类中的变量${YourDeviceName},在Topic中则是具体的设备名称。
  • 设备对应的Topic是从产品Topic类映射出来,根据设备名称而动态创建的。设备的具体Topic中带有设备名称(即DeviceName),只能被该设备用于消息通信。例如,Topic:/${YourProductKey}/device1/user/update归属于设备名为device1的设备,所以只能被设备device1用于发布、订阅消息,而不能被设备device2用于发布、订阅消息。

Topic通配符

使用规则引擎数据流转功能来转发设备数据,需在编写SQL时指定消息源Topic。在设置数据转发规则指定Topic时,可使用以下两种通配符,且同一个类目中只能出现一个通配符。

通配符 描述
# 这个通配符必须出现在Topic的最后一个类目,代表本级及下级所有类目。例如, Topic/${YourProductKey}/device1/user/#中,/user类目后使用通配符#,代表/user类目后的所有类目。该Topic可以代表/${YourProductKey}/device1/user/update/${YourProductKey}/device1/user/update/error
+ 代表本级所有类目。例如,Topic/${YourProductKey}/+/user/update中,设备名称类目由统配符+替代,代表产品下所有设备,可以代表/${YourProductKey}/device1/user/update/${YourProductKey}/device2/user/update

系统Topic和自定义Topic

物联网平台有两类Topic:

类别 说明
系统Topic

由系统预定义的Topic,不支持用户自定义系统Topic。系统Topic包含物联网平台各功能用到的Topic,如物模型功能、固件升级等。

例如,物模型相关的Topic一般以/sys/开头;固件升级相关的Topic以/ota/开头;设备影子的Topic以/shadow/开头。

说明 系统Topic并不完全展示在产品的Topic类列表和设备的Topic列表中。具体功能使用的Topic,请在功能文档中的查看。
自定义Topic 您可以根据业务需求,在产品的Topic类列表页,自定义Topic类。您为产品自定义的Topic类,也会自动映射到产品下所有设备。