Node-RED 架构概述
Node-RED 架构概述
本节介绍 Node-RED 的整体架构和核心概念。学习完成后,您将能够:
- 理解 Node-RED 的运行时架构
- 掌握 Node-RED 的核心组件和功能模块
- 向客户解释 Node-RED 在 IoT 方案中的定位
- 理解软硬件任务分离原则
Architecture Overview
Section titled “Architecture Overview”Node-RED 由三个核心部分组成:
┌──────────────────────────────────────────────────┐│ Node-RED Runtime │├──────────────────────────────────────────────────┤│ ││ ┌─────────────────┐ ┌──────────────────────┐ ││ │ Flow Runner │ │ Node Manager │ ││ │ 流程执行引擎 │ │ 节点管理/发现 │ ││ └─────────────────┘ └──────────────────────┘ ││ ││ ┌─────────────────┐ ┌──────────────────────┐ ││ │ Context Store │ │ Storage Layer │ ││ │ 上下文存储 │ │ 持久化存储 │ ││ └─────────────────┘ └──────────────────────┘ ││ ││ ┌─────────────────┐ ┌──────────────────────┐ ││ │ HTTP Admin API│ │ MQTT Client │ ││ │ 编辑器接口 │ │ 消息代理通信 │ ││ └─────────────────┘ └──────────────────────┘ │├──────────────────────────────────────────────────┤│ Node-RED Editor (Web UI) ││ http://localhost:1880 │└──────────────────────────────────────────────────┘Core Components
Section titled “Core Components”1. Runtime Engine (运行时引擎)
Section titled “1. Runtime Engine (运行时引擎)”Node-RED 运行时负责:
- 加载和执行 Flow 定义
- 管理节点间的消息传递
- 处理节点生命周期(初始化、运行、停止)
- 管理上下文数据存储
2. Editor (编辑器)
Section titled “2. Editor (编辑器)”基于 Web 的 Flow 编辑器:
- 拖拽式节点配置
- 实时 Flow 可视化
- 节点配置面板
- 调试消息面板
- 节点安装管理器
3. Node Manager (节点管理器)
Section titled “3. Node Manager (节点管理器)”管理所有已安装的节点:
- 内置节点(MQTT, HTTP, Function 等)
- 社区节点(需手动安装)
- 本地节点(自定义开发)
Separation of Software and Hardware
Section titled “Separation of Software and Hardware”核心设计原则
Section titled “核心设计原则”Node-RED 与 ESP32 之间遵循明确的职责分离:
ESP32 (硬件层) Node-RED (软件层)┌──────────────────┐ ┌──────────────────┐│ 传感器数据采集 │ ── MQTT ──→ │ 数据处理逻辑 ││ 执行器控制 │ ←─ MQTT ── │ 业务规则引擎 ││ │ │ 条件判断 ││ 原始任务: │ │ 数据存储 ││ - 读取传感器 │ │ 可视化 ││ - 控制 GPIO │ │ 告警通知 ││ - 发送/接收 MQTT │ │ 系统集成 │└──────────────────┘ └──────────────────┘为什么这样设计?
Section titled “为什么这样设计?”| 场景 | 纯 ESP32 方案 | Node-RED 方案 |
|---|---|---|
| 修改逻辑 | 需重新编译上传 | 在线修改 Flow |
| 批量更新 | 逐个设备 OTA | 一次修改全局生效 |
| 复杂性 | 简单条件尚可 | 可处理复杂业务 |
| 集成 | 有限 | 无限(4000+ 节点) |
| 维护 | 困难 | 简单 |
// ESP32 端:只发送原始数据// MQTT Topic: factory/temperature// 消息: {"temperature": 25.3, "device": "SENSOR-01"}
// Node-RED 端:处理所有业务逻辑// - 判断温度是否超过阈值// - 触发降温设备开关// - 记录告警到数据库// - 发送通知给值班人员Node-RED Data Flow
Section titled “Node-RED Data Flow”输入节点 (触发/接收消息) ↓处理节点 (Function, Switch, Change) ↓输出节点 (MQTT, HTTP, DB)Installation and First Access
Section titled “Installation and First Access”# Docker 快速启动docker run -d \ --name nodered \ -p 1880:1880 \ -v nodered_data:/data \ nodered/node-red:latest
# 访问编辑器# http://localhost:1880Key Technical Specifications
Section titled “Key Technical Specifications”| 特性 | 参数 |
|---|---|
| 运行时 | Node.js |
| 编程语言 | JavaScript |
| 默认端口 | 1880 |
| 消息格式 | JSON 对象 |
| 内置节点 | 30+ |
| 社区节点 | 4000+ |
| Docker 镜像 | < 100MB |
| 启动时间 | ~3 秒 |
Common Customer Questions
Section titled “Common Customer Questions”Q1: Node-RED 需要编程能力吗?
Section titled “Q1: Node-RED 需要编程能力吗?”A: 基本使用不需要编程,通过拖拽节点和配置即可完成。高级功能(Function 节点)需要 JavaScript 基础,但社区有大量示例可直接使用。
Q2: Node-RED 的可靠性如何?
Section titled “Q2: Node-RED 的可靠性如何?”A: Node-RED 已广泛用于生产环境。通过持久化配置、上下文备份和错误处理机制,可以实现高可靠性。
Q3: Node-RED 能替代 MCU 编程吗?
Section titled “Q3: Node-RED 能替代 MCU 编程吗?”A: 不是替代关系而是分工协作。MCU 负责硬件控制和数据采集,Node-RED 负责业务逻辑和系统集成。
Summary
Section titled “Summary”- Node-RED 是 IoT 架构中的核心自动化引擎
- 软硬件分离原则:MCU 负责硬件,Node-RED 负责逻辑
- 可视化编程降低开发门槛
- 4000+ 社区节点提供丰富的集成能力
- 通过 MQTT 与 ESP32 设备通信