Skip to content

eKuiper

LF Edge eKuiper 是 Golang 实现的轻量级物联网数据分析和流处理引擎,可以运行在各类资源受限的边缘设备上。eKuiper 的主要目标是在边缘端提供流式数据处理分析能力,并通过内置的规则引擎帮助用户快速创建物联网边缘分析应用。

作为一款工业协议网关软件,Neuron 为使用不同协议的各类设备提供一站式数据采集接入能力,Neuron北向 eKuiper 插件使用户能够将收集到的数据发布到 eKuiper 进行进一步处理,结合 eKuiper可以将设备数据进行过滤、清洗、实时计算、AI推理和智能告警。二者的结合,提升了工业现场边缘设备的智能化能力,帮助企业实现设备自治、自主决策和敏捷生产。

特点优势

在边缘端Neuron结合eKuiper具备如下优势:

  • 数据预处理和转换: 在边缘端进行数据清洗、预处理和转换,eKuiper提供了100+内置函数,以及时间窗口功能,将计算加工过的高价值数据进行转发推送,确保云端AI/ML分析功能的数据质量和一致性。
  • 边缘计算能力:在边缘处理数据,靠近工业设备,减少延迟,实现更快的响应时间。
  • 扩展的数据分析能力:提供先进的实时数据分析功能,支持在边缘端进行AI算法模型推理,例如异常检测、预测性维护和工艺参数优化算法,提升工业边缘智能化。
  • 基于数据驱动的边缘决策:在边缘端分析和处理基于AI的洞察,实时推送告警或对设备进行控制操作,而不仅仅依赖于基于云的决策系统。

添加插件

配置 -> 北向应用,点击 添加应用 添加 eKuiper 客户端节点。

应用配置

使用 eKuiper 插件时可使用如下参数:

字段说明
本地 IP 地址监听 eKuiper 连接的 IP 地址。
本地端口监听 eKuiper 连接的 TCP 端口号。
connection_change

TIP

如果您使用docker方式部署Neuron,需要在docker命令中增加字段-p 7081:7081,将7081端口映射到主机上。docker具体命令可参考 docker运行

添加订阅

完成插件的添加和配置后,我们将继续通过订阅南向设备实现数据的转发。

完成设备配置后,在北向应用页,点击设备卡片/设备列进入组列表页。点击添加订阅,并进行如下设置:

  • 南向设备:选择要订阅的南向设备,例如,modbus-tcp-1;
  • :选择南向设备下的某个组,例如,group-1。

至此,我们将能通过 Neuron 将数据转发至 eKuiper 进行下一步处理。

有关在 eKuiper 中的操作,见使用 eKuiper 对 Neuron 采集的数据进行流式处理

应用场景

通过 Neuron eKuiper 插件,您可在 Neuron 和 eKuiper 之间建立直接的数据通道,实现诸如将 Neuron 收集到的数据打印到 eKuiper 的日志等操作,具体步骤,见 Neuron 与 eKuiper 集成最佳实践

运行与维护

在设备卡片或设备列,您可点击数据统计图表查看及应用运行情况、接受和发送的数据情况。关于统计字段的说明,见创建北向应用

如果设备运行出现任何问题,您可点击 DEBUG 日志图表,此时系统将自动打印该节点的 DEBUG 级别日志,十分钟后将切回系统默认级别日志。稍后,您可点击页面顶部功能栏的系统信息 -> 日志查看日志,并进行故障诊断。稍后,您可点击页面顶部功能栏的系统信息 -> 日志查看日志,并进行故障诊断。有关系统日志的详细解析,见管理日志

版本兼容性

Neuron 和 eKuiper 之间的交互是双向的,需要两边同时提供支持:

  • Neuron 方面,提供 eKuiper 插件以支持向 eKuiper 发布数据并接收命令。
  • eKuiper 方面,提供一个 Neuron 源以支持从 Neuron 订阅数据,以及一个 Neuron 动作以支持通过 Neuron 控制设备。
Neuron 版本eKuiper 版本发布历史使用限制
Neuron 2.0eKuiper 1.51. Neuron 首次引入 eKuiper 插件
2. eKuiper 首次添加 Neuron 源和动作
3. Neuron 和 eKuiper 基于 IPC 传输层NNG pair0 协议进行通信
1. Neuron 和 eKuiper 应部署在同一个主机(或使用 MQTT 作为双方之间的中继)
2. 一对一通信
Neuron 2.4 及以上Neuron 1.9 及以上1. Neuron 和 eKuiper 基于 TCP 传输层 进行通信
2. 支持多对多连接
-

传输协议的变化如下图所示:connection_change

拓展阅读

本节描述了 Neuron 和 eKuiper 之间的底层通信细节,可选择跳过。

数据上报

Neuron eKuiper 插件连接到 eKuiper 后,将从设备收集的数据以 JSON 形式发布。 发布到 eKuiper 的数据具有以下字段:

  • timestamp:数据采集时的 UNIX 时间戳。
  • node_name:被采集的南向节点的名字。
  • group_name:被采集的南向节点的点位组的名字。
  • values:存储采集成功的点位值的字典。
  • errors:存储采集失败的错误码的字典。

以下是一个示例数据。当标签读取成功时,它的值将记录在 values 字典中。 如果在读取标签时出错,则将错误代码记录在 errors 字典中。

json
{
  "timestamp": 1646125996000,
  "node_name": "modbus", 
  "group_name": "grp",
  "values": {
    "tag0": 42,
    "tag1": "string"
  },
  "errors": {
    "tag2": 1011
  }
}

反向控制

eKuiper 可以通过使用 Neuron 动作发送写命令来控制设备,Neuron 在接收到命令后将向设备写入数据。

写命令应该是一个带有以下字段的 JSON 数据:

  • node_name:某个南向节点名字。
  • group_name:南向节点的某个组的名字。
  • tag_name:要写入的点位名字。
  • value:要写入的数据值。

以下是一个写命令示例:

json
{
    "node_name": "modbus",
    "group_name": "grp",
    "tag_name": "tag0",
    "value": 1234
}

eKuiper 插件也支持如下格式的写请求,用以一次写入多个点位。

{
    "node_name": "modbus",
    "group_name": "grp",
    "tags": [
        {
            "tag_name": "tag0",
            "value": 1234
        },
        {
            "tag_name": "tag1",
            "value": 4567
        }
    ]
}