Skip to content

第一条规则

本文接着快速入门往下走:那里把设备数据采集上来并原样转发到了 MQTT,这里加一步边缘处理——把采集到的数值加 1,再发到一个动态主题上。

本文假设已按快速入门完成 modbus-tcp 南向驱动与 group-1 采集组的配置。

第 1 步 · 让数据进入规则引擎

规则引擎作为一个北向应用接收南向数据,所以先给它订阅数据组。

数据采集 → 北向应用 页找到默认已存在的规则引擎应用,点击 查看订阅添加订阅,勾选 modbus-tcpgroup-1

订阅之后,采集到的点位会进入规则引擎的 neuronStream 数据流,供 SQL 使用。

第 2 步 · 新建规则

数据处理 → 规则 页点击 新建规则,编写 SQL 语句将 pressure 加 1:

sql
SELECT pressure + 1 AS pressure FROM neuronStream

stream-rule

第 3 步 · 添加动作

动作区域点击 添加,选择 MQTT

stream-sink

字段填什么
MQTT 服务器地址broker.emqx.io
端口1883
MQTT 主题用动态主题 {{.node_name}}/{{.group_name}},结果会按来源自动分主题

提交后规则开始运行。

第 4 步 · 查看结果

本例中数据来自 modbus-tcp 节点的 group-1 组,所以动态主题解析为 modbus-tcp/group-1。用 MQTTX 订阅这个主题:

mqtt-result

收到的 pressure 应当比数据监控页上看到的原始值大 1,说明规则生效了。

接下来

这条规则只做了一次加法。规则引擎的能力远不止于此:

  • 数据源 —— 除设备数据外,还能接入 MQTT、HTTP、SQL 数据库、文件、视频流,见数据源 (Source)
  • SQL 能力 —— 160+ 函数支持过滤、类型转换、聚合和时间窗口计算,见 SQL 参考
  • 写到哪里 —— 除 MQTT 外可写入 MySQL、InfluxDB、Redis、Kafka、AWS S3 等,见动作 (Sink)
  • 自定义计算 —— SQL 表达不了的逻辑可以用 Python、C/C++ 扩展,见算法集成