You need to enable JavaScript to run this app.
导航
数据转发
最近更新时间:2024.06.14 12:54:41首次发布时间:2024.06.14 12:54:41

物联网平台提供数据转发功能,支持通过 SQL 脚本处理设备 Topic 数据,并将数据转发至其他 Topic 或火山引擎消息队列 Kafka 版实例中进行存储或处理。本文介绍数据转发的操作使用方法。

数据转发流程

图片

前提条件

如果需要将数据转发到消息队列 Kafka 中存储,需要提前创建消息队列 Kafka 版实例用于接收数据的 Topic。具体操作,请参见创建 Kafka 实例

创建转发规则

  1. 登录物联网平台控制台

  2. 在控制台顶部,选择物联网平台所在地域。

  3. 实例列表 区域找到对应的实例,单击实例卡片,进入实例详情页面。

  4. 在左侧导航栏选择 规则引擎 > 数据转发

  5. 数据转发列表 页面,单击 创建转发规则

  6. 创建转发规则 页面,完成以下配置,并单击 确定

    类别

    配置项

    描述

    基础信息

    规则名称

    为数据转发规则设置一个名称。
    支持汉字、英文字母、数字、下划线(_)、中划线(-)、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
    • 行为类型 选择 转发到另一个 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****,以此类推。