基于 eKuiper 框架,边缘智能提供了在边缘侧对时序数据进行处理的能力。本教程将指导您使用时序数据流功能。
时序数据流可以获取 IoT 设备的时序数据,让您能够通过类 SQL 语句进行数据的清洗、整理和分析,然后将最终的结果推送至消息中间件或其他设备。
在这篇教程中,我们将会演示如何从设备读取数据,将数据输入到时序数据流进行处理,然后将处理后的结果写入其他设备。
具体来说,本教程模拟了以下情境:
要使用本教程,您必须有一个边缘智能节点(一体机),并将节点绑定到边缘智能的某个项目。相关操作,请参见快速入门。
在本教程中,我们使用边缘智能的官方虚拟驱动来模拟虚拟的输入和输出设备。如果您使用真实的设备,可根据设备的实际属性进行配置。
在这部分,我们将创建一个虚拟的输入设备。输入设备有温度(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 | 设置为 | |
SQL执行过程(3) | sql | 设置为 注意 请注意,此处一定要使用 |
output | 设置为 | |
虚拟时序设备输出源 | device | 选择虚拟输出设备(output-device-1)。 |
Kafka输出 | kafka-brokers | Kafka 服务器的访问地址(包含端口号)。格式: |
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 | 设置为 | |
虚拟时序设备输出源(新增) | device | 选择虚拟输出设备(output-device-1)。 |
部署新的数据流实例。
部署新的数据流实例后,在输出设备的运行数据中,您可以观察到下图所示的结果。