物联网平台提供数据转发功能,支持通过 SQL 脚本处理设备 Topic 数据,并将数据转发至其他 Topic 或火山引擎消息队列 Kafka 版实例中进行存储或处理。本文介绍数据转发的操作使用方法。
数据转发流程
![图片](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/a47bc69da0fb4f17a1adf2a3b6e51243~tplv-goo7wpa0wc-image.image)
前提条件
如果需要将数据转发到消息队列 Kafka 中存储,需要提前创建消息队列 Kafka 版实例用于接收数据的 Topic。具体操作,请参见创建 Kafka 实例。
创建转发规则
登录物联网平台控制台。
在控制台顶部,选择物联网平台所在地域。
在 实例列表 区域找到对应的实例,单击实例卡片,进入实例详情页面。
在左侧导航栏选择 规则引擎 > 数据转发。
在 数据转发列表 页面,单击 创建转发规则。
在 创建转发规则 页面,完成以下配置,并单击 确定。
类别 | 配置项 | 描述 |
---|
基础信息 | 规则名称 | 为数据转发规则设置一个名称。
支持汉字、英文字母、数字、下划线(_)、中划线(-)、at(@)和英文圆括号(()),长度为 1~32 个字符。 |
规则描述 | 为规则添加描述,可以为空,最多不超过 100 个字符。 |
配置数据源&规则 | 数据源&规则 | 可以选择以下两种方式: - 立即创建
- 暂不创建:可以在创建转发规则后再配置数据源。
|
字段 | 指定要处理的消息内容字段,即 SQL 中 SELECT 后的内容。
例如,填入deviceName() as deviceName ,则表示需筛选出消息中的 deviceName 字段内容。
字段中可使用的函数,请参见数据流转支持的函数。 |
Topic | 选择需要处理的消息 Topic,即 SQL 中FROM 后的内容。 - 选择数据源:
- 设备创建
- 设备删除
- 属性上报
- 事件上报
- 服务调用结果
- 设备上下线状态
- 拓扑关系变化
- 自定义 Topic
- 选择产品及设备。
说明 当数据源选择 设备创建 和 设备删除 时,默认为全部设备。
|
条件 | 设置规则触发条件,即 SQL 中WHERE 后的内容。 |
配置数据目的 | 数据目的 | 单击 添加数据目的,设置数据转发目的地。 行为类型 支持以下两种方式; - 转发到另一个 Topic:将一个设备的 Topic 消息内容,转发到另一个设备 Topic。
- 转发到 Kafka:将物联网平台数据转发到消息队列 Kafka 版实例中存储。
- 当 行为类型 选择 转发到另一个 Topic 时,完成以下配置:
- 产品:选择一个目的产品。
- 设备:选择一个目的 Topic 所属设备。
- Topic 类型,支持选择以下三种类型:
- 当 行为类型 选择 转发到另一个 Topic 时,完成以下配置:
- Kafka 实例:选择 Kafka 实例用于接收数据的 Topic。
您可以单击 创建 Kafka 实例,跳转到消息队列控制台,创建 Kafka 实例。具体操作,请参见请参见创建 Kafka 实例。 - Topic:选择用于接收物联网平台数据的 Kafka Topic。
- 用户信息:选择 用户类型、用户名,并输入 密码。
您可以单击 添加数据目的 继续添加其他数据转发目的地。 |
创建完成后,可以在数据转发规则列表看到新创建的转发规则。
数据转发规则管理
在数据转发规则列表,您可以进行以下操作。
- 启动:单击 操作 下的 启动,即可启动数据转发规则。启动成功后,数据即可按照规则进行转发。
- 删除:单击 操作 下的 删除,即可删除对应转发规则。
- 日志:单击 操作 下的 日志,查看数据流转日志。
- 停用:单击 操作 下的 停用,即可停用数据转发规则。停用转发规则后,数据不再进行转发。
数据流转支持的函数
规则引擎提供多种函数,您可以在编写 SQL 时使用这些函数,实现多样化数据处理。
函数名 | 说明 |
---|
DeviceName() | 返回当前设备名称。对于设备创建、删除消息,返回值类型为 string 数组;其他情况返回值类型为 string 字符串。 |
SourceTopic() | 返回当前数据源 Topic。 |
MessageID() | 返回物联网平台生成的消息 ID,仅对物模型消息生效。SQL 调试时,由于无真实消息流转,故 MessageID()返回""。 |
ThingModelModule() | 获取上报的物模型模块名称。仅对事件、服务消息生效。
例如Topic:sys/SdfgeW***/device1/thingmodel/event/default/BrokenInfo/post ,流转事件 BrokenInfo的数据,ThingModelModule() 返回上报事件的物模型模块名称default 。 |
ThingModelElement() | 获取上报的物模型功能类型。仅对物模型消息生效。各功能返回值如下: - 属性:返回
property 。 - 事件:返回事件的标识符。
- 服务:返回服务的标识符。
例如Topic:sys/SdfgeW***/device1/thingmodel/event/default/BrokenInfo/post ,流转事件 BrokenInfo的数据,ThingModelElement() 返回上报事件标识符BrokenInfo 。 |
ThingModelData(参数名称) | 获取物模型属性、服务、事件中参数对应的值。仅对物模型消息生效。其中属性上报消息,参数名称为${物模型模块名称}:${属性名称}
例如Topic:/${productKey}/${deviceName}/thing/event/property/post ,流转属性上报消息的 default 模块 CurrentTemperature 属性数据,ThingModelData(default:CurrentTemperature) 返回 CurrentTemperature 上报的值。 |
SourceTopic(index) | 返回 Topic 分段信息。
index 从 0 开始计数,例如 Topic:sys/alDbcLe****/TestDevice/user/set 。使用函数topic() ,则返回整个 Topic;使用topic(0) ,则返回Topic的第一级类目Topic:sys ;使用topic(1) ,则返回第二级类目alDbcLe**** ,以此类推。 |