物联网中的 Node-RED(1):可视化流编程入门
物联网中的 Node-RED(1):可视化流编程入门
前面三个系列把"电""协议""设备与转换"讲完了。最后一个绕不开的工具是 Node-RED——你手上的双服务端推送、地灾平台 P03 转发、AI 摄像头滑坡报警流程,本质上都是 Node-RED 流在跑。这一篇先把它是什么、怎么上手讲清楚。
一、是什么
Node-RED 是一个基于浏览器的可视化流编程工具(Node.js 上的开源项目,IBM 发起,现归 OpenJS 基金会)。核心玩法:从左侧面板拖节点到画布、连线条表示数据流向,把硬件、API、云服务串成一条"数据流"。
- 一个节点(node) = 一个功能块(读 MQTT、算个公式、调 HTTP…)。
- 一条连线 = 数据从上游节点流到下游节点。
- 流动的载体叫 msg(消息对象),主数据挂在
msg.payload上。
它把"写一段后端程序"变成"画一张流程图",适合做协议转换、数据转发、快速原型。
二、怎么用
- 浏览器打开编辑器:左侧节点面板拖到画布 → 连线 → 双击节点配参数 → 点右上角部署生效。
- 最常见套路:
inject(手动/定时触发)→function(写 JS 处理msg.payload)→ 输出节点(mqtt out/http request/ 写库)。 - 调试三件套:
debug节点看msg、画布右侧"状态"看节点运行灯、日志看异常堆栈。
你实际架构里就这么用:边缘/平台侧 Node-RED 把 Modbus、串口、设备上报的数据,经 function 清洗后 mqtt out 推到双服务端,或 http request 转发地灾平台。
三、用在哪里
- 边缘侧:工业网关上跑 Node-RED,把 Modbus/串口来的设备数据转成 MQTT 推送(协议转换的"胶水层")。
- 平台侧:接收 Webhook / 设备上报,做规则转发(如 P03_转发地灾平台、AI 摄像头滑坡报警 4 场景流程)。
- 快速原型:数据清洗、协议对接、报警联动,不必为每件事写整套后端。
四、怎么能用好(避坑)
- 别把逻辑全塞进一个 function:复杂业务拆成多个节点或子流(subflow),好维护也好排错。
- 状态别全塞 global:
context(global/flow)是内存态,进程重启就丢;要持久就落文件/数据库。 - 异步必须 await:function 里调 HTTP、耗时操作要
async+ 返回 Promise,否则数据流错位、拿不到结果。 - 错误处理必接 catch / status:一个节点抛错可能卡死整条流,务必兜底(catch 节点统一收异常)。
- 用项目(projects)模式:做版本管理,别裸跑
flows.json手工改;节点依赖也要备份。
五、原理
事件驱动 + 消息总线:每个节点处理完把 msg 传给下游;msg.payload 是主载体,msg.topic 和其它自定义字段夹带元数据。编辑器只是把画布存成 flows.json,运行时由 Node.js 按图逐个节点执行、沿连线推送消息。
六、背景(来龙去脉)
2013 年 IBM 发起,初衷让"非纯程序员"也能快速把物联网设备连到云服务;如今生态节点超 3000 个(node-red-contrib-*),大量工业网关、边缘盒子内置它做协议转换与转发。
误区澄清
- "Node-RED 只是玩具,生产不能用" —— 错。工业网关、边缘盒子广泛用它做协议转换与转发,关键在写好错误处理与持久化,而不是工具本身不行。
- "function 节点能写任意 JS 就够了" —— 错。无节制塞逻辑会难维护、易错,善用节点拆分与子流才是正道。
- "部署完就一劳永逸" —— 错。
flows.json要版本管理、节点要备份,升级 Node.js 版本还可能破兼容,得有回滚预案。

浙公网安备 33010602011771号