最近更新时间:2023.12.05 14:01:06
首次发布时间:2023.11.21 15:43:38
基于 eKuiper 框架,边缘智能提供了在边缘侧对时序数据进行处理的能力。本教程将指导您使用时序数据流功能。
时序数据流可以获取 IoT 设备的时序数据,让您能够通过类 SQL 语句进行数据的清洗、整理和分析,然后将最终的结果推送至消息中间件或其他设备。
时序数据流允许在边缘层面进行时序数据分析,而不是将所有 IoT 数据全部发送回云端。通过在源头过滤、聚合和分析数据,时序数据流有助于有效地利用带宽,以便您快速做出决策。
时序数据流同时也可以与视频数据流进行整合使用,即将从视频数据流得到的元数据作为时序数据流的输入,在边缘侧进一步处理。
在这篇教程中,我们将会演示如何从设备读取数据,将数据输入到时序数据流进行处理,然后将处理后的结果写入其他设备。
具体来说,本教程模拟了以下情境:
要使用本教程,您必须有一台边缘一体机,并将边缘一体机绑定到边缘智能的某个项目。相关操作,请参见快速入门。
在本教程中,我们使用边缘智能的官方虚拟驱动来模拟虚拟的输入和输出设备。如果您使用真实的设备,可根据设备的实际属性进行配置。
在本教程中,我们需要将边缘一体机上的设备数据上报到边缘智能控制台进行查看和验证。要实现数据上报,您必须在一体机上部署数据上云类型的北向通道。如果您的一体机已经部署了对应的北向通道,请跳过该步骤。
登录边缘智能控制台。
在左侧导航栏顶部的 我的项目 区域,选择您的项目。
完成以上操作后,您的一体机上将会部署数据上云类型的北向通道。当部署状态变为 运行中,表示北向通道已经部署成功。
在这部分,我们将创建一个虚拟的输入设备。输入设备有温度(temperature)属性。这个属性的数据随机生成,数据的生成时间间隔是 1 秒。
在左侧导航栏,选择 设备管理 > 设备模板。
创建设备模板。
单击上一步创建的设备模板的名称。
您将进入设备模板的详情页面。
定义物模型。
功能类型 | 功能名称 | 标识符 | 读写类型 | 数据类型 | 描述 |
---|---|---|---|---|---|
属性 | temperature | temperature | 只读 | double | 模拟温度数据 |
完成以上操作后,您将获得如下图所示的物模型。
创建点表。
单击 点表 页签。
单击 创建点表。
在 创建点表 页面,配置以下参数,然后单击 确认。
将设备接入一体机。
完成以上操作后,设备实例列表将出现新添加的虚拟输入设备。添加完成后,虚拟输入设备的状态是 未激活。数分钟后,设备将自动激活,设备的状态会变为 在线。
在这部分,我们将创建一个虚拟的输出设备。输出设备有结果(result)属性。这个属性的数据由时序数据流写入。如果时序数据流发现输入设备的温度数据发生突变(如在 5 秒内的温度差超过 0.5℃),则将 result 的值设置为 1。
准备虚拟输出设备的步骤与准备虚拟输入设备类似,在这里不再详细描述。这里仅罗列关键的配置。具体步骤,请参见准备虚拟输入设备。
创建设备模板。命名为 output-device。
定义物模型。在 默认模块 下添加以下自定义功能。
功能类型 | 功能名称 | 标识符 | 读写类型 | 数据类型 | 描述 |
---|---|---|---|---|---|
属性 | result | result | 读写 | int | 接收输出数据 |
创建点表。
添加输出设备。命名为 output-device-1。
输出设备的状态是 未激活,这是因为设备与一体机之间还没有发生通信。一旦设备与一体机之间发生通信,设备将会自动激活。
准备工作完成后,我们就可以创建和部署时序数据流。在开始之前,我们先汇总一下输入和输出属性。
设备名称 | 类型 | 属性 |
---|---|---|
input-device-1 | 输入设备 | temperature(double) |
output-device-1 | 输出设备 | result(int) |
在这部分,我们将创建一个时序数据流,它的工作流程如下:从 input-device-1 的 temperature 获取数据,将数据依次流转到多个 SQL执行过程 节点进行处理,然后将最终结果写入 output-device-1 的 result。
在本教程中,我们使用 v1 作为版本名称。
单击上一步创建的版本的名称。
在 数据流编排 页面,单击 开始编辑。
按照下图绘制数据流,然后单击 保存。
具体绘制方法,请参见数据流编排指南。
说明
节点 | 控制参数 | 说明 |
---|---|---|
设备输入源 | device | 选择虚拟输入设备(input-device-1)。 |
output | 设置为 table1,表示使输入数据流转到 table1 表。 | |
SQL执行过程(1) | sql | 设置为 |
output | 设置为 table2。 | |
SQL执行过程(2) | sql | 设置为
|
output | 设置为 table3 。 | |
SQL执行过程(3) | sql | 设置为 注意 请注意,此处一定要使用 |
output | 设置为 table4 。 | |
虚拟时序设备输出源 | device | 选择虚拟输出设备(output-device-1)。 |
Kafka输出 | kafka-brokers | Kafka 服务器的访问地址(包含端口号)。格式:<address>:<port> 。 |
topic | 设置消息的主题。 | |
sasl-auth | 设置 Kafka 服务器启用的 SASL 认证的类型。在本教程中,Kafka 服务器未采用 SASL 认证,该参数的值为 none。 |
提交部署请求后,您可以回到数据流实例页面。当数据流实例的状态变为 运行中,表示数据流已经部署成功。
数据流部署成功后,我们可以查看输出设备的运行数据,来验证结果。
在输出设备的 result 属性中,我们可以看到如下的数据点。
根据本教程中的设置,输入设备每秒随机生成一个温度数据;SQL 执行语句对每 5 个温度数据做一次最大值与最小值之间的温度差计算,即每 5 秒会有一个分析结果;由于设置了条件(温度差大于 0.5 时将 result 设置为 1),所以约每 10 秒 result 会有一个数据。
如果数据流的输出包含 Kafka 节点,您可以自行查看 Kafka 收到的数据。下图是通过 kafka-ui 查看到的结果。
在上文模拟的场景中,只有当温度突变时,才会将 result 设置为 1。假设我们需要在温度没有突变时,将 result 设置为 0。那么需要如何配置数据流呢?
以下是一种方案:
复制数据流模板的已有版本,生成一个新版本。编排新版本的数据流,增加一个 SQL执行过程 节点和一个 虚拟时序设备输出源 节点。如下图所示。
使用新版本创建数据流实例,按照以下说明配置新节点的控制参数,旧节点的控制参数与上文的说明相同。
节点 | 控制参数 | 说明 |
---|---|---|
SQL执行过程(新增) | sql | 设置为 |
output | 设置为 table5 。 | |
虚拟时序设备输出源(新增) | device | 选择虚拟输出设备(output-device-1)。 |
部署新的数据流实例。
部署新的数据流实例后,在输出设备的运行数据中,您可以观察到下图所示的结果。