说明:转发器要写代码、总线要配 schema——对非开发背景的运维,门槛都在"代码"。Node-RED 提供第三条路:浏览器里拖节点、连线、点部署,把 MQTT、邮件、数据库、HTTP 全部编排进声光终端。本文给出从安装到三条完整流程的实操,含过滤、防抖与分级路由节点的配置。不放站外链接。
一、低代码的定位:给"会用规则但不写代码"的人
本系列的接入路径按门槛排列:HTTP 脚本(要会 Python)→ 转发器(要会 Flask)→ 总线(要会架构)——都对开发能力有要求。Node-RED 把门槛降到"理解流程":它是一个运行在浏览器里的流程编排器,每个功能是一个节点(输入、处理、输出),连线即数据流。
它的正确定位与专栏 AI 篇的"实习生"、HA 篇的"家庭中枢"互补:Node-RED 面向通用集成的小流程——把一个邮件告警转成终端调用、把一个 MQTT 主题过滤后转发,这类 10~30 个节点的流程是它的舒适区。上百节点的复杂逻辑仍应回到代码。
安装即一条命令(或 Docker):npm install -g node-red后访问 1880 端口。以下三条流程覆盖真实场景的八成需求。
二、流程一:MQTT 主题过滤 → 终端播报
复刻专栏 MQTT 篇的桥接器,不写一行代码:
- mqtt in 节点:Broker 填内网地址,主题
site/+/sensor/+/alarm,QoS 1; - switch 节点(按主题第 2 段路由):
msg.parts解析或正则匹配点位,不同点位走不同输出; - change 节点:把
msg.payload(事件代号)映射为msg.text(中文文案,用 JSONata 或查表)与msg.level; - http request 节点:POST 到终端自定义 API,URL 用
{{msg.level}}拼路径实现分级; - debug 节点:全流程挂上,联调时看每一步的消息。
防抖在低代码里也有解:function 节点写 5 行(context 存上次时间戳,60 秒内丢弃)——function 是 Node-RED 里唯一的"代码点",也是它的逃生舱:图形节点覆盖不到的边角,几行 JS 补齐。
三、流程二:邮件 → 提取 → 分级播报
老 NVR 的邮件告警(专栏邮件篇)用 Node-RED 的email in节点接收(IMAP),后接:
- function 节点:正则提取主题里的设备名与事件类型;
- switch 节点:按事件类型分三路——
critical(硬盘错误)直通播报、warning(移动侦测)只闪灯、其他丢弃; - http request 节点:分别调终端的通知组路径。
这条流程替换了"部署一个 Flask 转发器 + 一个 systemd 服务"的全部工作量——流程文件(flows.json)可以导出、进 Git、在另一台机器导入,专栏配置 Git 化的思想在低代码平台同样成立。
四、流程三:定时巡检 → 异常播报
Node-RED 的inject节点就是内置 cron:每 5 分钟注入一次触发,接http request查询终端队列水位(专栏运维篇),再接switch判断水位是否超过阈值,超过则走播报与 IM 双路。三条流程的组合拳覆盖了运维篇大半的手写脚本——巡检、过滤、分级、播报,全部可视化。
五、生产化的四条纪律
低代码的灵活是双刃剑,四条纪律让它生产可用:
- 流程文件进 Git:
flows.json导出纳入版本管理(专栏配置 Git 化),改流程走提交——"谁在页面上拖了根线"与"谁改了配置"是同一种失控; - 命名规范:每个节点有意义的名字("过滤-仅硬盘错误"而不是 “function_47”)——三个月后可读性就是可维护性;
- 异常出口:
catch节点捕获流程错误,接 IM 通知——流程自身的故障也要发声(专栏可用性篇的第二通道原则); - 凭据用 Credentials:邮箱密码、Token 存 Node-RED 的凭据存储并设加密密钥,不要明文写在 function 节点里(专栏安全篇)。
六、常见坑
- 流程越拖越大→ 三百个节点的流程是灾难,超过一个屏就该拆子流程(subflow)或回流代码;
- function 节点堆逻辑→ 每个节点塞几十行 JS,低代码退化成难读的代码——function 只做 5 行内的胶水;
- 没有 catch 出口→ http request 失败后流程静默中断,告警丢失无人知;
- msg 被下游改写→ 一个分支改了 msg.payload,并行分支收到脏数据——需要时用
clone节点复制; - 部署即全量生效→ 点"部署"会覆盖全部已改流程,改前先导出备份(配置 Git 化纪律);
- 调试只靠想象→ debug 节点全程挂上,消息流可视化是 Node-RED 最大的优势,不用白不用;
- 凭据明文→ function 里写死密码,导出 flows.json 即泄露;
- Node-RED 单点→ 它挂了所有流程停摆,进程守护 + 看门狗(专栏可用性篇)一个不能少。
七、验收清单
- 三条流程(MQTT/邮件/定时巡检)全部跑通并有 debug 截图归档;
- flows.json 导出纳入 Git,节点命名规范抽查通过;
- catch 出口接 IM:人为制造 http 失败,通知可达;
- 凭据存 Credentials 且加密密钥已设置;
- 防抖 function 生效:60 秒窗口内重复事件被丢弃;
- Node-RED 进程有守护与看门狗,重启后流程自动加载。
八、小结
Node-RED 在本系列的位置是一条低门槛的旁路:它不替代转发器与总线,而是让"还没准备好写代码的人"也能完成八成常见接入——MQTT 过滤、邮件转播报、定时巡检、分级路由,拖拖连线就上线。
它的哲学与本系列一以贯之:接入方式可以低代码,工程纪律不能打折——流程进 Git、凭据进 Credentials、异常要发声、守护要到位。工具把门槛降下来,纪律把质量顶上去,两者都到位,"不会写代码"就不再是告警体系建设的准入条件。