Node-RED 是什么、适合做什么:拖拽连线做物联网集成(5.0.6)
把已经跑通的几段链路快速接起来,Node-RED 比写一个服务省事得多;但流程一旦要长期演进、要多人协作,它的可读性和版本控制会先撑不住。
- 授权
- Apache-2.0 开源
- 平台
- Windows / macOS / Linux
- 协议
- MQTT、TCP、HTTP、Modbus
- 官网
- http://nodered.org
- 源码
- https://github.com/node-red/node-red
- · 设备已经在发数据,你要做的是「转个格式、落个库、顺手触发个告警」这类每步都不难、难在串起来的活
- · 现场的协议转换与数据汇聚:下面接 Modbus/串口,上面出 MQTT/HTTP,中间这层用它拼最快
- · 业务逻辑复杂、判断分支多的系统——节点一多流程图就变成面条,可读性断崖下跌
- · 需要严肃版本控制和代码评审的团队项目:流程存成 JSON,diff 出来基本没法看,评审无从下手
- 文件名
- Node-RED 5.0.6
- 版本
- 5.0.6
- SHA256
- 待补(尚未实际核对,不填占位值)
- 核对于
- 2026-09-02
本站不托管安装包,上方为官方渠道直链。下载后请自行核对 SHA256,与上表不一致说明文件被改动过。
先说一个特别常见的活儿。
一台设备已经在往 broker 上发 MQTT 了,你现在要做三件事:把数据落进数据库;某个字段超阈值的时候触发一条告警;再把告警推到群里。
这三件事单独拿出来,每一件都不难。难的是把它们串起来——你得起一个服务,接 broker、解报文、连库、写推送、处理重连、加日志、再想办法让它开机自启。真正的业务逻辑可能就二十行,外面那一圈脚手架反而占了大半天。
Node-RED 解决的正是这一段。 它是一个基于流程图的可视化编程工具:在浏览器里拖几个节点出来,用线连起来,数据就顺着线从左往右流过去。上面那件事,在它里面就是拖几个节点、连上线、部署,完事。
官网在 nodered.org,源码在 GitHub 的 node-red/node-red,许可证是 Apache-2.0,最新版本 5.0.6 发布于 2026 年 9 月 1 日。具体有哪些节点可用、怎么装、跑起来需要什么环境,以官方文档为准——这类信息随版本变化,抄在文章里只会过期误导。
「胶水层」是什么意思
把整条物联网数据链路摊开看,常见形态是这样的:设备 → 网关 → broker → 应用。
设备那头有人管,通常是嵌入式工程师的活。应用那头也有人管,前端后端各司其职。真正没人愿意认领、又必须有人干的,是中间这些把两头接起来的胶水:格式不对要转,字段名不一样要映射,这边是发布订阅那边是请求响应要来回倒,还得顺手做点过滤、限流、去重。
这类工作有个共同特征:逻辑简单,接口琐碎,数量多,还老变。 用传统方式写,每一段都要起一个小服务,几个月之后你面对的是七八个没人记得住的小进程。用 Node-RED,它们就是同一个界面里的几张流程图,改一下重新部署就生效。
顺着这个思路看它在工业现场的位置就很清楚了:协议转换与数据汇聚的中间层。下面对着现场设备,走 Modbus 或者串口;上面对着平台,走 MQTT 或者 HTTP。这中间的翻译活儿,正是它最擅长的场景,也正是做展厅、做产线、做设备联网的人天天要面对的问题。
顺便把两种通信模型的差别点一下,因为跨越这道差别恰恰是胶水层的日常:MQTT 是发布订阅模型,设备把数据扔给 broker 就不管了,谁订阅谁收到,发的一方不需要知道有几个接收方;HTTP 是请求响应模型,必须有人主动发起请求才有数据回来。把一个订阅进来的消息转成一次 HTTP 调用,或者反过来,是这类活最典型的样子。
它的天花板在哪
现在说反面,这部分比优点更值得你看。
流程图不擅长表达复杂逻辑。 节点少的时候图很清爽,一眼看懂数据往哪走。但节点数量过了某个坎,画布就会变成一团面条:线互相交叉,分支绕来绕去,你想找「这个判断到底在哪一步做的」,得沿着线一个个点开看。这个可读性的下跌不是线性的,是断崖式的——前一天还挺好懂,加了几个分支之后突然就没人愿意碰了。
代码在这方面反而有优势:函数可以命名、可以拆文件、可以搜索、可以跳转定义。流程图这些能力都很弱。
版本控制和代码评审很别扭。 流程本身是存成 JSON 的。这意味着你 git diff 出来看到的是一堆结构化数据的增删,节点的坐标变了也会进 diff。你基本没法从 diff 里看出这次改动到底改了什么逻辑。 代码评审在这种前提下没法做——评审者只能打开界面自己找不同,而这跟评审的意义已经背道而驰了。
多人协作也受同样的限制。两个人同时改一份流程,冲突基本靠人工协调,没有靠谱的合并手段。
一条判断依据
上面两段听起来像是在劝退,其实不是。这两个缺点是否致命,取决于一件事:
这个流程会不会长期演进?会不会多人协作?
会。 那就早点考虑写成正经服务。今天拖两个节点确实快,但这东西要活两年、要三个人轮流改、要能回滚到上个月的版本,那前面说的可读性和版本控制问题会一天天变重,最后你还是得重写一遍,只是那时候没人敢动它了。
不会。 也就是说这就是个内部集成,拼通了跑起来就基本不动了,改动频率按季度算,负责的人就你一个——那 Node-RED 非常划算。半小时干完的活,你没必要花两天去起一个服务、写 Dockerfile、配 CI。
这条判断依据比「Node-RED 好不好」有用得多。它好不好取决于你拿它干什么,而这个问题只有你自己能答。
Apache-2.0 意味着什么
许可证这一栏对做产品的人不是摆设,说清楚它省得你事后返工。
Apache-2.0 是宽松许可证,关键点三条:
可以闭源商用。 你把它用在自己的商业项目里、部署给客户,不需要因此公开自己的代码。
没有 copyleft 传染性。 这是它和 GPL 系列最大的区别——GPL 会要求链接它的代码也按 GPL 开放,Apache-2.0 不会。你不必担心因为用了它就得开源自己那部分。
带专利授权条款。 贡献者明确授予了相关专利的使用许可,这一条在正式商业项目里是加分项,法务通常认这个。
宽松不等于没有义务,保留版权声明、附上许可证副本这些基本要求还是要做到的。另外说明:以上是对许可证类型的通用说明,不构成法律意见,你的具体分发方式如果比较特殊,商用前该走的确认流程还是要走。
接进来之前,先把链路本身确认掉
这是最容易省时间也最容易被跳过的一步。
流程图跑不通的时候,问题可能在任何一环:设备没发数据、broker 地址写错了、主题订阅错了、串口参数不对、报文格式和你以为的不一样。如果你直接在 Node-RED 里从头调,这些变量全搅在一起,最难查。
更省事的做法是分段验证:
MQTT 那一头,先用 MQTTX 连上 broker,订阅一下看有没有消息、消息长什么样。确认设备真的在发、主题真的对得上,再去流程图里连。
裸的 TCP/UDP 链路,用 NetAssist 手工发几个包收几个包,先确认网络这一层通。
设备侧的 Modbus,先用 Modbus Poll 或者站内其他调试工具把从站地址、寄存器地址、字序这几项试通。这一层的坑独立于 Node-RED 存在——寄存器编号差 1、32 位量字序不对,都是老问题。要自己写采集程序而不是拖流程图,那是 libmodbus 和 pymodbus 的领域。物理层为什么会不通,见 RS-485 差分总线 和 UART 串口原理。
每一段单独确认过之后再往一起接,出问题时你至少知道该怪谁。
和 ESPHome 不是一回事
站内还有一篇 ESPHome,同样是「用配置代替写代码」的思路,容易被放在一起比,但两者干的活其实不在一层。
ESPHome 管的是设备本身:它生成的是烧进 ESP 芯片的固件,解决的是「这块板子怎么读传感器、怎么联网、怎么把数据发出去」。
Node-RED 管的是数据出来之后:它跑在服务器或者工控机上,接的是已经发出来的数据,解决的是「这些数据怎么转、怎么存、怎么触发动作」。
实际项目里两者常常一起出现,一个在设备端,一个在服务端,各管一段。真要说重合,那也只是「都让你少写点代码」这个共同气质而已。
本文为公开资料整理,非亲测。关键参数与代码请结合实物与下列官方来源验证。
- Node-RED 官网 ↗
nodered.org
- Node-RED 官方仓库(Apache-2.0,5.0.6 发布于 2026-09-01) ↗
github.com/node-red/node-red
延伸阅读
接 Node-RED 之前先把链路本身确认掉:MQTT 那一头用 MQTTX 收发一条试试, 裸的 TCP/UDP 用 NetAssist,设备侧的 Modbus 先用 Modbus Poll 读通再说。 要把逻辑做进设备固件而不是服务器,那是 ESPHome 的活。 更多嵌入式与工业通信工具见软件与工具库。