设备不能订阅其他设备的Topic,也不能向其他设备的Topic发布消息。通过云产品流转可以将解析脚本处理完的一个设备Topic的消息内容,转发到另一个设备Topic,实现设备间通信(M2M通信)或者其他通信场景。本文以物模型数据上报Topic为例,介绍流转消息数据的完整流程。
工作原理
消息转发的云产品流转功能可以将Topic 1中的数据转发到Topic 2内。 数据流转示意图如下。
云产品流转可以将设备1的Topic1消息转发给另一个具备订阅权限设备2的Topic2,设备2订阅Topic2,即可接收设备1的Topic1消息,实现不同设备间的通信。
在上图中:
数据源:Topic1支持的Topic类型消息,请参见数据格式(非云网关产品和设备)、自定义Topic(MQTT云网关)、消息转发Topic(GB/T 32960云网关)、消息转发Topic(JT/T 808云网关)、消息转发Topic(SL 651云网关)。
数据目的:接收Topic1消息的Topic2,支持以下Topic类型。
非云网关产品和设备:支持自定义Topic和物模型数据下发Topic:
/sys/${productKey}/${deviceName}/thing/service/property/set
。云网关产品和设备:支持自定义Topic。
解析器脚本:配置通过数据流转函数
writeIotTopic(destinationId, topic, payload)
将Topic1数据转发到Topic2。函数说明,请参见流转数据到数据目的函数。
应用场景
数据转发目的Topic为自定义Topic:
同一产品下,不同设备之间通信。
不同产品下,两个设备之间通信。
数据转发目的Topic为物模型数据下发Topic:
/sys/${productKey}/${deviceName}/thing/service/property/set
。该Topic为设备接收设置属性值指令的Topic,设备从该Topic接收转发数据,并根据数据内容,设置属性值。用于目的Topic所属设备根据转发的数据更改属性值的场景。
使用限制
源Topic消息转发到目的Topic内,目的Topic必须具备订阅权限,且目的Topic所属设备必须已成功订阅对应目的Topic。否则,目的Topic所属设备接收不到源Topic转发的消息。
云网关产品和设备不支持跨产品流转,即仅支持流转到当前产品下的通信Topic。
MQTT型实例下,仅支持创建一个产品,默认不支持跨产品流转。
前提条件
已添加待转发的设备Topic数据源。例如:创建数据源DataSource,添加指定设备的物模型数据上报Topic。具体步骤,请参见添加待流转的数据源。
步骤一:创建数据目的
- 登录物联网平台控制台。
在实例概览页签的全部环境下,找到对应的实例,单击实例卡片。
- 在左侧导航栏,选择 。
在云产品流转页面,单击右上角体验新版,进入新版功能页面。
说明如果您已执行过此操作,再次进入云产品流转页面,会直接进入新版功能页面。
单击数据目的页签,然后单击创建数据目的。
在创建数据目的对话框,输入数据目的名称,例如DataPurpose,按照以下参数说明,完成配置,然后单击确定。
本示例配置如下图所示。
参数
说明
选择操作
选择发布到另一个Topic。
产品
选择转发的目的地Topic所属产品。
具体Topic,需在解析脚本中通过函数
writeIotTopic(destinationId, topic, payload)
设置。函数说明,请参见数据流转函数。
步骤二:配置并启动解析器
创建解析器,例如DataParser。具体操作,请参见创建解析器。
在解析器详情页面,关联数据源。
在配置向导的数据源下,单击关联数据源。
在弹出的对话框中,单击数据源下拉列表,选择已创建的数据源DataSource,单击确定。
在解析器详情页面,关联数据目的。
单击配置向导的数据目的,然后单击数据目的列表右上方的关联数据目的。
在弹出的对话框中,单击数据目的下拉列表,选择已创建的数据目的DataPurpose,单击确定。
在数据目的列表,查看并保存数据目的ID,例如为1000。
后续解析脚本中,需使用此处的数据目的ID。
在解析器详情页面,单击解析器。
在脚本输入框,输入解析脚本。
解析脚本类似JavaScript语言,编辑脚本的语法参考JavaScript语法,详细编辑方法,请参见脚本语法。
转发数据到另一个Topic,需要使用函数
writeIotTopic(destinationId, topic, payload)
。函数参数说明,请参见函数列表。//通过payload函数,获取设备上报的消息内容,并按照JSON格式转换。 var data = payload("json"); //直接流转物模型上报数据。 writeIotTopic(1000, "/sys/a1I***/room3/thing/service/property/set", data);
单击调试,根据页面提示,选择产品和设备,输入Topic和Payload数据,验证脚本可执行。
参数示例如下:
运行结果如下,表示脚本执行成功。
单击发布。
回到云产品流转页面的解析器页签,单击解析器DataParser对应的启动按钮,启动解析器。