跳转到内容

节点类型与面板

节点类型与面板

本节介绍 Node-RED 的节点类型和面板使用。学习完成后,您将能够:

  • 熟悉 Node-RED 的节点分类
  • 安装和管理社区节点
  • 使用节点的文档功能
  • 配置节点的基本属性

Node-RED 的节点面板分为三个主要区域:

┌──────────────────────────────────────┐
│ Node Palette (节点面板) │
├──────────────────────────────────────┤
│ [Filter Nodes...] │ ← 搜索过滤
├──────────────────────────────────────┤
│ ▶ Input (输入节点) │
│ inject, mqtt in, http in, ... │
├──────────────────────────────────────┤
│ ▶ Output (输出节点) │
│ debug, mqtt out, http out, ... │
├──────────────────────────────────────┤
│ ▶ Function (函数节点) │
│ function, switch, change, ... │
├──────────────────────────────────────┤
│ ▶ IoT (物联网节点) │
│ (安装后显示) │
├──────────────────────────────────────┤
│ ▶ Storage (存储节点) │
│ (安装后显示) │
└──────────────────────────────────────┘
节点功能IoT 场景
Inject手动或定时触发消息测试、定时任务
MQTT In订阅 MQTT 主题接收传感器数据
HTTP In创建 HTTP 端点REST API 集成
WebSocket InWebSocket 连接实时通信
TCP/UDP InTCP/UDP 接收原始协议通信
节点功能IoT 场景
Debug显示消息到调试面板开发和排错
MQTT Out发布 MQTT 消息控制设备
HTTP Out发送 HTTP 请求API 调用
WebSocket OutWebSocket 发送实时数据推送
TCP/UDP OutTCP/UDP 发送原始协议通信
节点功能说明
FunctionJavaScript 自定义逻辑最灵活的处理方式
Switch条件路由消息分发
Change修改消息属性类型转换、更换值
Template模板字符串生成格式化输出
Delay消息延迟/限速流量控制
Trigger触发/门限控制信号转换
Join消息合并多路数据聚合
Split消息拆分批量处理
Sort排序数据排序
Batch批处理消息批量处理
Terminal window
# 1. 点击右上角汉堡菜单
# 2. 选择 "Manage Palette"
# 3. 切换到 "Install" 标签
# 4. 搜索节点名称
# 5. 点击 "Install"
# 常用 IoT 节点:
# node-red-contrib-influxdb
# node-red-contrib-mssql
# node-red-dashboard
# node-red-contrib-telegrambot
# node-red-contrib-modbus
# node-red-node-serialport
Terminal window
# Docker 环境安装
docker exec -it nodered sh
cd /data
npm install node-red-contrib-influxdb
exit
docker restart nodered
# 或通过 package.json 持久化安装
# nodered/data/package.json
{
"name": "nodered-custom",
"version": "1.0.0",
"dependencies": {
"node-red-contrib-influxdb": "^0.x",
"node-red-dashboard": "^3.x",
"node-red-contrib-telegrambot": "^4.x"
}
}
docker-compose.yml
services:
nodered:
image: nodered/node-red:latest
container_name: nodered
volumes:
- ./nodered/data:/data
environment:
- NODE_PATH=/usr/src/node-red/node_modules:/data/node_modules

每个节点都内置了详细文档:

Terminal window
# 在编辑器中:
# 1. 选中节点
# 2. 点击右侧 Info 面板
# 或点击节点的 (i) 图标
# 3. 查看:
# - 节点功能描述
# - 输入输出格式
# - 配置参数说明
# - 使用示例

Info 面板内容示例:

Function Node
━━━━━━━━━━━━━━━━━━━
描述: 运行 JavaScript 代码处理消息
输入: msg.payload (任意类型)
输出: msg.payload (处理后的值)
属性:
- name: 节点名称 (可选)
- func: JavaScript 代码
- outputs: 输出端口数
示例:
msg.payload = msg.payload * 2;
return msg;
✅ 好名字:
[MQTT In: Factory Temperature]
[Function: Temperature Converter]
[InfluxDB Out: Store Sensor Data]
❌ 不好的名字:
[MQTT In] # 不说明数据来源
[Function 23] # 不说明功能
[influxdb out] # 不说明存储什么
// 在 Function 节点中添加错误处理
try {
let value = JSON.parse(msg.payload);
msg.payload = value.temperature;
return msg;
} catch (error) {
node.error("Parse error: " + error.message, msg);
return null; // 丢弃错误消息
}

节点左下角的颜色状态:

颜色含义
🔴 红色未配置或错误
🟢 绿色正常运行
🟡 黄色警告
⚪ 灰色未连接

A: 在 Node-RED 官网 Flow Library (flows.nodered.org) 搜索,或直接在编辑器的节点管理面板中搜索。查看下载量和评分选择可靠的节点。

A: 社区节点需要审查后才能在 Node-RED 官方目录发布,但建议:查看 GitHub 源码、检查下载量、使用知名维护者的节点。

A: 某些节点可能依赖不同版本的同个库。建议在干净的 Docker 环境下安装测试,如果冲突可尝试逐个安装排查。

推荐做法:

  • 使用明确命名区分多个同类节点
  • 安装节点前查看文档和示例
  • 使用 Info 面板了解节点功能
  • 通过 package.json 管理节点依赖
  • 定期更新已安装的节点

避免做法:

  • 安装不明确用途的节点
  • 使用来源不明的节点
  • 同时安装过多节点(影响性能)
  • 安装后不记录节点用途
  1. Node-RED 提供 30+ 内置节点,覆盖基本 IoT 需求
  2. 社区提供 4000+ 扩展节点
  3. 通过 Manage Palette 或命令行安装节点
  4. Info 面板提供完整的节点文档
  5. 节点命名和错误处理是良好的开发习惯