主题
9.3 节点类型详解
左侧节点面板按三级分组,把节点拖到画布上即可使用。
9.3.1 触发条件
流程的起点。一条流程可以放多个触发条件,任意一个成立就会把整条流程跑一遍, 它们之间怎么组合由「与 / 或 / 非」节点决定,详见 9.5 多个触发条件与与或非。
数据变化时启动
监听某个数据点,值发生变化时启动流程。
| 参数 | 说明 |
|---|---|
| 数据点名称 | 实时数据库里的点位名,可下拉选择,也可直接输入 |
| 变化方式 | 任意变化 / 值变大 / 值变小 |
| 最小变化幅度 | 死区。变化量小于这个值就不触发,0 表示不设死区 |
「值变大」「值变小」适合只关心单方向的场景,如水位只在上涨时报警。
浮点点位应填最小变化幅度
温度、液位这类点位每次上报都可能有小幅变化(23.40 → 23.41),不设死区时每跳动 0.01 都算一次变化。 填 0.5 表示变化小于 0.5 不触发。限频节点只能限制时间间隔,无法限制变化幅度,幅度需靠死区控制。
定时启动
按固定周期启动流程,不依赖数据变化。
| 参数 | 说明 |
|---|---|
| 周期粒度 | 每 N 秒 / 每 N 分钟 / 每 N 小时 / 每天定时 |
| 间隔 | 配合前三种粒度使用,粒度为「每天定时」时自动隐藏 |
| 每天执行时刻 | 仅「每天定时」生效,格式 HH:mm,如 08:00 |
设备离线时启动
设备掉线并持续超过设定时长后启动流程,设备恢复上线后可以再次触发。
| 参数 | 默认值 | 说明 |
|---|---|---|
| 设备 | — | 从本项目的设备清单里下拉选择,在线设备排在前面 |
| 离线判定时长 | 300 秒 | 连续离线超过这么久才算真离线 |
离线判定时长不要设太短
判定依据是服务器上的设备在线状态。4G / WiFi 设备网络抖动几秒是常事, 时长设成 10 秒会频繁误报。建议不小于 60 秒,一般用默认的 300 秒。
同一次掉线只报一次,不会每秒重复报;设备恢复上线后再掉线才会再报。
9.3.2 中间控制
放在触发和输出之间做判断,可以串多个,也可以用与 / 或 / 非把多路条件组合起来。
数值比较
判断数据点或触发值是否满足条件,有满足 / 不满足两个出口,可以分别接不同的输出动作。
| 参数 | 说明 |
|---|---|
| 比较左值 | 可下拉选变量或数据点,也可直接输入常量。默认 $trigger.value,表示触发节点传过来的值 |
| 运算符 | 大于 > / 大于等于 >= / 小于 < / 小于等于 <= / 等于 == / 不等于 != / 包含(文本)/ 不包含(文本) |
| 比较右值 | 常量(如 50),或下拉选另一个数据点 |
左值、右值的下拉里有三个可选变量:
| 变量 | 含义 |
|---|---|
$trigger.value | 本次变化后的值 |
$trigger.old_value | 变化前的值 |
$trigger.point | 触发的点位名 |
「包含 / 不包含」是文本判断,用来判断状态字符串里有没有某个关键字,不要拿它比数值。
限频(防触发风暴)
距上次通过不足指定间隔时中断流程,避免抖动点位刷屏。
| 参数 | 默认值 | 说明 |
|---|---|---|
| 最小间隔 | 300 秒 | 两次通过之间至少间隔这么久 |
| 每小时上限 | 20 次 | 0 表示不限制 |
建议加上限频
在阈值附近波动的模拟量点位,短时间内可能产生多次变化。不加限频会发出大量重复邮件。任何「数据变化 → 发邮件」的流程都应在中间串一个限频节点。
与(全部满足)
把多个条件连到它的输入端,全部成立时才往下走,相当于梯形图里的串联触点。
或(任一满足)
连进来的输入有任意一个成立就往下走,相当于梯形图里的并联触点。
非(取反)
把输入的真假翻过来,相当于梯形图里的常闭触点。只连一个输入;连了多个会先按「或」合并再取反。
与 / 或 / 非 是按连线的输入端算的
这三个节点没有参数,结果完全取决于连到它输入端的连线:
- 「与」「或」至少要连两个输入才有意义,只连一个等于直通。
- 不要把两个触发条件直接连到「与」上,也不要对触发条件用「非」。 触发条件表示「这一刻发生了这件事」,一次只会有一个成立,这样接永远不满足。 要判断「另一路当前是什么状态」,应用「数值比较」去比那个点位的当前值。
详细说明和正确接法见 9.5 多个触发条件与与或非。
9.3.3 输出动作
流程的终点,只有入口没有出口。同一个流程可以挂多个输出动作。
发送邮件
由服务器发出邮件通知。
| 参数 | 说明 |
|---|---|
| 收件人 | 输入后回车添加,可添加多个 |
| 邮件标题 | 默认 【事件触发】{{event.name}} |
| 邮件正文 | 支持多行,默认带数据点、当前值和时间 |
设置数据值
向指定数据点写入一个值,可用于置位触发标志、联动控制。
| 参数 | 说明 |
|---|---|
| 目标数据点 | 要写入的点位 |
| 写入值 | 常量,或 {{trigger.value}} 等占位符 |
生成触发记录
写入一条触发历史记录,可在列表页的「触发记录」中查询。
| 参数 | 说明 |
|---|---|
| 触发等级 | 提示 / 警告 / 严重 |
| 记录内容 | 默认 {{trigger.point}} = {{trigger.value}} |
发送短信(开发中)
节点面板中标记为「开发中」。现在可以正常编排和保存,命中时服务器只写一条「短信通道开发中,未发送」的触发记录,不会真的发出短信。通道接通后无需改动流程即可生效。
9.3.4 占位符变量
邮件标题、邮件正文、写入值、记录内容都支持占位符,由服务器在触发时渲染:
| 占位符 | 含义 |
|---|---|
{{event.name}} | 事件触发规则的名称 |
{{trigger.point}} | 触发这条流程的数据点名 |
{{trigger.value}} | 触发时该点位的值 |
{{time}} | 触发发生的时间 |
例如邮件正文写成:
数据点 {{trigger.point}} 当前值 {{trigger.value}}。
时间:{{time}}收到的邮件就会是「数据点 长兴闸前水深 当前值 856。时间:2026-08-14 22:39:10」。
定时启动没有「触发数据点」
{{trigger.point}} 和 {{trigger.value}} 来自触发节点传过来的数据点。用 定时启动 作为起点时,流程不是由某个点位的变化引发的,这两个占位符会渲染成空白,正文里就会出现「数据点 当前值 。」这种缺字的句子。
定时场景的正文请改用固定文案,或者只用 {{event.name}} 和 {{time}}:
定时巡检提醒:规则 {{event.name}} 已执行。
时间:{{time}}如果确实要在定时流程里带上某个点位的值,先用「数值比较」等节点显式指定数据点,不要依赖 {{trigger.*}}。