Node-RED:IoT 自动化平台指南

June 24, 2026 · View on GitHub

目录

  1. Node-RED 简介
  2. 安装与设置
  3. 核心概念
  4. 构建流程
  5. 常用节点
  6. IoT 协议
  7. 仪表板与 UI
  8. 部署与安全

简介

Node-RED 是一个基于流程的编程工具,用于将硬件设备、API 和在线服务连接在一起。它提供基于浏览器的编辑器,可可视化构建自动化工作流。

Node-RED 核心功能

功能描述好处
可视化编辑器拖拽式流程构建易于学习
基于浏览器无需客户端安装随处访问
可扩展数千个节点连接一切
轻量级可运行在树莓派IoT 就绪
JSON 流程可移植配置易于备份

Node-RED vs 其他工具

功能Node-REDHome Assistantn8n
重点IoT/自动化家庭自动化工作流
学习曲线中等
可视化编辑器有限
可扩展性
资源使用极低中等中等

常见用例

类别示例
家庭自动化灯光控制、恒温器
IoT 传感器温度、湿度监控
API 集成Webhook 处理
数据处理ETL 管道
消息聊天机器人、通知

安装与设置

Node-RED 可以安装在各种平台上。

安装方式

平台方式命令
npm (全局)npmnpm install -g node-red
DockerDockerdocker run -p 1880:1880 nodered/node-red
Raspberry Pi脚本bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
SnapSnapsudo snap install node-red

Docker 安装

# docker-compose.yml
version: '3'
services:
  node-red:
    image: nodered/node-red:latest
    ports:
      - "1880:1880"
    volumes:
      - node-red-data:/data
    environment:
      - TZ=UTC

volumes:
  node-red-data:

系统要求

组件最低推荐
CPU1 核2 核
内存256MB1GB
存储100MB1GB
Node.jsv14v18 LTS

首次访问

步骤操作URL
1启动 Node-REDnode-red
2打开浏览器http://localhost:1880
3访问编辑器可视化流程编辑器
4创建第一个流程拖拽节点

核心概念

理解 Node-RED 基础以有效构建流程。

流程组件

组件描述示例
节点单个功能HTTP 请求、开关
连线节点间的连接数据流路径
流程节点集合完整工作流
Tab流程组织分离关注点

消息结构

{
  "payload": "Main data",
  "topic": "Message topic",
  "_msgid": "Unique ID",
  "custom": "Any additional data"
}

节点属性

属性描述示例
名称显示名称"获取天气"
类型节点功能http request
配置节点设置URL、方法
连线输出连接下一个节点

流程生命周期

事件触发操作
部署保存变更流程重启
启动Node-RED 启动流程初始化
停止Node-RED 停止清理
消息接收输入处理数据

构建流程

创建自动化流程的分步指南。

流程设计流程

步骤操作考虑因素
1定义目标自动化什么
2确定触发器何时启动
3添加处理转换数据
4添加输出发送到哪里
5测试验证行为
6部署激活流程

基本流程模式

[触发] → [处理] → [输出]

Example:
[Inject] → [Function] → [Debug]

常见流程模式

模式描述使用的节点
线性顺序处理Inject → Function → Debug
分支条件逻辑Switch → 多个输出
合并合并输入多个 → Join
循环重复操作Function 带计数器

节点配置

步骤操作备注
1拖拽节点从调色板
2双击打开设置
3配置设置属性
4连线连接到其他节点
5部署应用变更

调试流程

工具描述用途
Debug 节点输出到侧边栏查看消息
Status 节点节点状态监控健康
Catch 节点错误处理处理失败
Complete 节点流程完成后处理

常用节点

构建 Node-RED 流程的必备节点。

输入节点

节点用途配置
Inject手动/定时触发间隔、payload
HTTP RequestAPI 调用URL、方法
MQTT InMQTT 消息Broker、topic
WebSocket实时数据URL、events

处理节点

节点用途用例
Function自定义 JavaScript复杂逻辑
Switch条件路由If/else
Change修改消息转换数据
JSON解析/序列化数据转换
Delay速率限制节流消息

输出节点

节点用途配置
Debug在侧边栏查看显示选项
HTTP ResponseAPI 响应状态、headers
MQTT Out发布 MQTTBroker、topic
Email发送邮件SMTP 设置
File写入文件路径、格式

存储节点

节点用途存储类型
File读写文件本地文件系统
SQLite数据库操作SQLite 数据库
Context内存存储Flow/全局上下文
Redis缓存/存储Redis 数据库

Function 节点示例

// Transform payload
msg.payload = msg.payload.toUpperCase();
return msg;

// Conditional logic
if (msg.payload > 100) {
  return [msg, null]; // First output
} else {
  return [null, msg]; // Second output
}

// Create new message
return {
  payload: {
    temperature: msg.payload,
    timestamp: Date.now()
  }
};

IoT 协议

Node-RED 支持各种 IoT 通信协议。

MQTT

设置描述示例
BrokerMQTT 服务器mqtt://localhost
Port连接端口1883
Topic消息频道home/temperature
QoS服务质量0, 1, 或 2

MQTT 配置

属性选项推荐
Clean sessionTrue/False新连接用 True
Keepalive60
Username凭据如需要
Password凭据如需要

HTTP/REST

方法用途节点
GET获取数据HTTP Request
POST创建数据HTTP Request
PUT更新数据HTTP Request
DELETE删除数据HTTP Request

WebSocket

模式描述用途
Listener接受连接服务器
Client连接到服务器客户端
双向双向通信实时

CoAP

功能描述用途
轻量级基于 UDP受限设备
RESTful类似 HTTPIoT 传感器
Observe订阅变更实时更新

协议对比

协议传输开销用途
MQTTTCPIoT 消息
HTTPTCP中等API 集成
WebSocketTCP实时 Web
CoAPUDP极低受限设备

仪表板与 UI

创建用于监控和控制的可视化仪表板。

仪表板安装

# Install dashboard nodes
cd ~/.node-red
npm install node-red-dashboard

仪表板组件

组件用途示例
Chart数据可视化温度图表
Gauge单个值速度计
Switch开关控制灯光开/关
Slider值输入亮度控制
Text显示值状态消息

仪表板布局

元素描述配置
Tab页面多个标签页
Group区域组织组件
Widget单个 UI大小、位置

创建仪表板

步骤操作结果
1添加标签页仪表板页面
2添加分组区域
3添加组件UI 元素
4连接数据连接到流程
5访问http://localhost:1880/ui

仪表板组件

组件输入显示
Chart时间序列折线/柱状图
Gauge数字表盘显示
Switch布尔切换按钮
Slider数字范围输入
Text字符串文本显示
Button点击操作触发

样式选项

属性选项效果
颜色主题色组件颜色
大小小、中、大组件大小
标签自定义文本显示名称
图标Material 图标可视指示器

部署与安全部署

在生产环境中安全部署 Node-RED。

部署选项

选项优点缺点
本地简单访问受限
Docker隔离需要 Docker 知识
可扩展成本
Raspberry Pi低功耗资源有限

安全配置

设置默认值推荐
认证启用
HTTPS启用
API 安全基于 Token
流程保护用户只读

启用认证

// settings.js
module.exports = {
  adminAuth: {
    type: "credentials",
    users: [{
      username: "admin",
      password: "\$2b\$08$...",
      permissions: "*"
    }]
  }
};

HTTPS 配置

// settings.js
module.exports = {
  https: {
    key: fs.readFileSync('key.pem'),
    cert: fs.readFileSync('cert.pem')
  },
  requireHttps: true
};

备份与恢复

方式命令频率
导出流程编辑器 → 导出变更前
导入流程编辑器 → 导入恢复
文件备份复制 .node-red每周
Git版本控制持续

性能优化

方面操作效果
内存增加 Node.js 堆处理更多流程
上下文限制存储大小防止内存泄漏
日志降低详细度减少 I/O
节点禁用未使用降低 CPU

监控

指标工具阈值
CPU系统工具< 80%
内存系统工具< 80%
消息Debug 节点监控速率
错误Catch 节点理想为零

总结

主题核心要点
安装Docker 简化部署
概念节点、连线、流程、消息
构建可视化编辑器创建流程
协议支持 MQTT、HTTP、WebSocket
仪表板内置可视化
安全启用认证和 HTTPS