MQTT云网关设备可通过自定义的消息Topic与物联网平台进行通信,物联网平台会透传设备上下行通信数据。本文介绍实现上下行通信的相关说明。

MQTT云网关产品和设备的详细内容,请参见创建云网关产品(MQTT)创建云网关设备(MQTT)

Topic说明

物联网平台与云网关设备之间通过MQTT协议的Topic实现消息通信,您需自定义用于通信的Topic。通信Topic必须符合标准MQTT协议的Topic规范,Topic更多详细说明,请参见什么是Topic

自定义通信Topic直接使用设备上报的原始自定义Topic,设备下行通信Topic与上行通信Topic一致。

物联网平台支持的通信Topic与标准MQTT协议通信Topic的区别如下:

Topic对比项 物联网平台支持的MQTT协议 标准MQTT协议
长度 支持1~128个字符。 不超过65535个字符。
字符集 只能包含字母、数字和下划线(_)。 支持UTF-8字符集,无明确限制。
不支持Topic为/ 支持Topic为/
以分隔符/开头 不区分是否以分隔符开头,若首位未使用分隔符,会自动在首位添加分隔符/

例如data_up/data_up是相同的Topic,能互相收到消息。

区分是否以分隔符开头。

例如data_up/data_up不是相同的Topic,无法互相收到消息。

以分隔符/结尾 不区分是否以分隔符结尾,若结尾使用分隔符,会自动删除结尾的分隔符/

例如/data_up/data_up/是相同的Topic,能互相收到消息。

区分是否以分隔符结尾。

例如/data_up/data_up/不是相同的Topic,无法互相收到消息。

层级目录 每级目录不能为空。 层级目录可为空。例如Topic可为///
通配符 #/#是相同的通配符,设备订阅/#之后,能收到Topic为data_up的消息。 #/#是不同的通配符,设备订阅/#之后,收不到Topic为data_up的消息
+/+是相同的通配符,设备订阅/+之后,能收到Topic为data_up的消息。 +/+是不同的通配符,设备订阅/+之后,收不到Topic为data_up的消息。
设备订阅+/+之后,收不到Topic为/data_up的消息。 设备订阅+/+之后,能收到Topic为/data_up的消息。

限制说明

  • 一个云网关设备下,支持最多订阅100个通信Topic。
  • 只有设备操作权限为订阅时,才可以使用通配符+#自定义Topic类,以便设备实现批量订阅Topic。通配符使用方法,请参见带通配符的自定义Topic

上行通信:设备端到服务端

设备端向通信Topic发布消息,服务端可通过物联网平台的AMQP订阅或云产品流转功能,接收来自设备端的消息。

配置引擎规则时,您需注意以下事项:

  • 仅支持在新版云产品流转功能下,为云网关设备配置数据流转规则。具体操作,请参见配置数据流转解析器
  • 不支持将云网关产品和设备的消息流转到物联网平台普通产品和设备,也不支持将物联网平台普通产品和设备的消息流转到云网关产品和设备。
  • 云网关设备流转数据至另一个Topic时,需携带字段deviceName。详细使用说明,请参见流转数据到数据目的函数
  • 配置数据流转的数据源Topic时,需您手动输入消息Topic。具体操作,请参见创建数据源
  • 服务端订阅中仅支持推送设备上报消息和设备状态变化通知的数据。具体操作,请参见配置AMQP服务端订阅

下行通信:服务端到设备端

服务端调用Pub接口,可向指定的自定义Topic发布消息。设备通过订阅该Topic,接收来自服务端的消息。