跳转到内容

自动化引擎

自动化引擎

本节介绍 IoT 架构中的自动化引擎——Node-RED。学习完成后,您将能够:

  • 理解 Node-RED 在 IoT 方案中的角色和功能
  • 向客户解释 Node-RED 的业务价值和适用场景
  • 掌握 Node-RED 的核心功能模块
  • 评估 Node-RED 的技术边界

Node-RED 是一个基于流的可视化编程工具,专为 IoT 场景设计。它通过连接不同的”节点”来创建自动化流程。

核心定位: IoT 系统的”大脑”——负责数据处理、业务逻辑、系统集成

传感器数据 → MQTT → Node-RED (处理逻辑) → InfluxDB (存储)
Grafana (可视化)
邮件/告警通知
特性说明售前价值
可视化编程拖拽式 Flow 编辑器降低开发门槛
丰富节点库4000+ 社区节点快速集成各种服务
MQTT 原生内置 MQTT 订阅/发布IoT 通信开箱即用
轻量部署Docker 镜像 < 100MB资源占用极低
REST API提供 HTTP 接口第三方系统集成
可扩展性JavaScript 函数节点灵活的定制能力
┌─────────────────────────────────────────────────────┐
│ Node-RED Runtime │
├─────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌───────────┐ │
│ │ Flow Runner │ │ Node Manager│ │ Context │ │
│ │ (流程执行) │ │ (节点管理) │ │ (上下文) │ │
│ └──────────────┘ └──────────────┘ └───────────┘ │
├─────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌───────────┐ │
│ │ HTTP Admin │ │ MQTT Client │ │ Storage │ │
│ │ (编辑器 API)│ │ (MQTT 通信) │ │ (持久化) │ │
│ └──────────────┘ └──────────────┘ └───────────┘ │
└─────────────────────────────────────────────────────┘
温度传感器 → MQTT → [MQTT Input] → [Function] → [InfluxDB Output] → 数据库
[Debug] (实时监控)

客户价值: 实时采集传感器数据,自动清洗和存储

传感器数据 → [MQTT Input] → [Switch] → [Email/SMS] → 告警通知
↓ (条件不满足)
[忽略]

客户价值: 即时发现异常情况,减少人工巡检

手机 APP → [HTTP Input] → [Switch] → [MQTT Output] → ESP32 设备

客户价值: 远程控制工厂设备,提高运维效率

┌──────────────────────────────────────────────────┐
│ Node-RED 在 IoT 栈中的位置 │
├──────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ MQTT │◄──►│ Node-RED │◄──►│ InfluxDB │ │
│ │ Mosquitto│ │ 数据流 │ │ 时序DB │ │
│ └──────────┘ └────┬─────┘ └──────────┘ │
│ │ │
│ ▼ │
│ ┌──────────┐ │
│ │ Grafana │ │
│ │ 可视化 │ │
│ └──────────┘ │
└──────────────────────────────────────────────────┘

非常适合:

  • MQTT 消息路由和转发
  • 数据格式转换(JSON, CSV, XML)
  • 条件判断和业务逻辑
  • HTTP API 调用和集成
  • 数据库读写操作
  • 邮件/通知发送
  • 定时任务调度
  • 仪表板展示(Dashboard)

不适合:

  • 高并发实时计算(需要专用流处理引擎)
  • 大规模机器学习推理
  • 复杂的事务处理
  • 低延迟 < 10ms 的控制任务
  • 高强度图像/视频处理
services:
nodered:
image: nodered/node-red:latest
container_name: nodered
restart: unless-stopped
ports:
- "1880:1880"
volumes:
- ./nodered/data:/data
environment:
- TZ=Asia/Shanghai
- NODE_RED_CREDENTIAL_SECRET=your-secret-key
Terminal window
docker run -d \
--name nodered \
-p 1880:1880 \
-v nodered_data:/data \
-e TZ=Asia/Shanghai \
nodered/node-red:latest
Terminal window
# 生成密码哈希
docker exec -it nodered sh
node -e "console.log(require('bcryptjs').hashSync('YourPassword!', 8));"
# 复制哈希值,修改 settings.js
# 找到 adminAuth 配置并取消注释

A: 单节点 Node-RED 每分钟可处理数千条消息,足够覆盖大多数中小型 IoT 场景。如果需要更高吞吐量,可以水平扩展多个 Node-RED 实例。

A: 是的。Node-RED 已被广泛应用于全球各地的生产环境。建议配置持久化存储、设置管理密码、使用上下文存储实现消息持久化。

Q3: Node-RED 和传统编程有什么区别?

Section titled “Q3: Node-RED 和传统编程有什么区别?”

A: Node-RED 的可视化编程降低了 IoT 应用开发的门槛,非开发人员也能快速上手。同时,Function 节点支持 JavaScript 编程,提供灵活的高级定制能力。

推荐做法:

  • 使用 Flow 分组管理不同功能模块
  • 添加注释说明 Flow 功能
  • 配置持久化存储
  • 设置管理员密码
  • 使用环境变量管理配置

避免做法:

  • 单 Flow 过于复杂(建议模块化)
  • 在 Function 节点中编写过长代码
  • 忽略错误处理
  • 将大量日志直接输出到 Debug
  • 未做超时控制
  1. Node-RED 是 IoT 架构的核心自动化引擎
  2. 可视化编程降低开发门槛,加速方案验证
  3. 4000+ 社区节点提供丰富的集成能力
  4. 轻量部署、易于扩展、生产环境验证
  5. 与 MQTT、InfluxDB、Grafana 天然集成