Topic是消息发布(Pub)者和订阅(Sub)者之间的传输中介。设备可通过Topic实现消息的发送和接收,从而实现服务端与设备端的通信。为方便海量设备基于Topic进行通信,简化授权操作,物联网平台定义了产品Topic类和设备Topic。本文介绍产品和设备Topic的定义、使用和分类。

Topic类定义

Topic类:产品维度的Topic,是同一产品下不同设备的Topic集合。一个ProductKey下有多个Topic类。一个Topic类对一个ProductKey下所有设备通用。

以下是Topic类的使用说明:

  • 定义Topic类的功能。

    Topic类格式以正斜线(/)进行分层,区分每个类目。例如:/${productKey}/${deviceName}/user/update

    其中,${productKey}${deviceName}两个类目为既定类目;后缀和前缀类目用于区分不同功能的消息。

    • ${productKey}表示产品的标识符ProductKey

      在指定产品的Topic类中,需替换为实际的ProductKey值。

    • ${deviceName}表示设备名称(DeviceName)。

      在产品Topic类中,${deviceName}是该产品下所有设备的名称变量,不需要替换为实际设备名称。

  • 定义Topic类的操作权限。
    • 发布:产品下设备可以往该Topic类对应的设备Topic发布消息。
    • 订阅:产品下设备可以订阅该Topic类对应的设备Topic,从而获取消息。
    • 发布和订阅:同时具备发布订阅的操作权限。

Topic定义

在产品Topic类基础上,使用具体的${productKey}/${deviceName}通配一个唯一的设备,与前缀、后缀类目组成的完整Topic,就是具体设备的Topic。

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

例如产品a19mzPZ***下设备device1device2的具体Topic如下:

  • /a19mzPZ****/device1/user/update
  • /a19mzPZ****/device2/user/update

产品Topic类定义的功能和操作权限,会映射到具体的设备Topic。以下是设备Topic的使用说明:

  • 具体的设备Topic可用于消息通信。
    注意 在进行上下行通信调试时,请确保指定的Topic具备对应的操作权限。
  • 指定的设备Topic只能被指定设备用于消息通信。

    例如,Topic:/a19mzPZ****/device1/user/update归属于设备device1,只能被设备device1用于发布或订阅消息,而不能被设备device2用于发布或订阅消息。

  • 您可管控单个设备的消息收发。

    您可在物联网平台控制台对应实例下设备列表页面,或在服务端调用DisableThing接口,禁用该设备;或在业务上管控发送给设备的消息。

生成设备Topic

设备Topic自动生成流程如下。

Topic
  1. 物联网平台控制台,创建产品。具体操作,请参见创建产品

    创建产品后,物联网平台为该产品预定义了Topic类,包含基础通信Topic物模型通信Topic自定义Topic

    您可在产品详情页面,单击Topic类列表页签,查看各功能及其Topic类。您也可为产品添加自定义Topic类。具体内容,请参见Topic分类和通信说明

  2. 为产品添加设备。具体操作,请参见创建设备
    添加设备后,产品的所有Topic类会自动映射到设备上,生成具体的设备Topic。产品Topic类定义的操作权限,会映射到具体的设备Topic。您无需单独为每个设备创建Topic。
    注意
    • 设备端未完成订阅Topic功能开发,且未接入物联网平台前,设备详情页面的Topic列表页签不显示已订阅的设备Topic。您可选择以下方法,订阅设备Topic,使Topic列表显示已订阅的Topic。
      • 启动设备模拟器:设备在线后,物联网平台会自动订阅该设备下具有订阅权限的基础通信Topic和物模型通信Topic,您也可使用自定义Topic上行指令调试功能,订阅自定义Topic。