Node-RED物联网数据采集工程 - 第1节
1. 物联网与Node-RED概述
1.1.1 什么是物联网
物联网(Internet of Things, IoT)是指通过信息传感设备,按约定的协议,将任何物体与网络连接,物体通过信息传播媒介进行信息交换和通信,以实现智能化识别、定位、跟踪、监管等功能。
物联网的核心要素可归纳为“感知、传输、处理、应用”四个层面:
| 层级 | 功能 | 典型设备/技术 |
|---|---|---|
| 感知层 | 采集物理世界的数据 | 温度传感器、湿度传感器、RFID、摄像头 |
| 网络层 | 传输数据到处理中心 | Wi-Fi、LoRa、NB-IoT、MQTT、CoAP |
| 平台层 | 存储、处理、分析数据 | 云服务器、边缘网关、数据库 |
| 应用层 | 提供业务服务与可视化 | 仪表盘、告警系统、移动App |
关键指标:据IoT Analytics统计,2025年全球物联网连接设备数已突破300亿台,每天产生超过5EB(Exabyte)的数据。数据采集是物联网系统中最基础、最关键的环节。
1.1.2 物联网数据采集的典型流程
从传感器到应用,数据采集通常经历以下步骤:
- 物理量感知:传感器将温度、压力、光照等物理量转换为电信号。
- 信号调理与数字化:模数转换器(ADC)将模拟信号转为数字信号。
- 协议封装:按MQTT、HTTP、CoAP等协议打包数据。
- 网络传输:通过有线或无线网络发送到服务器或边缘节点。
- 数据解析与存储:接收端解析协议、清洗数据并存入数据库。
- 业务应用:仪表盘展示、告警触发、机器学习推理等。
实践要点:在真实项目中,数据采集的瓶颈往往不在传感器精度,而在协议适配、数据格式转换和网络稳定性。Node-RED正是解决这些“最后一公里”问题的利器。
1.2 Node-RED 简介
1.2.1 起源与定位
Node-RED 是由 IBM 新兴技术团队于 2013 年开发的开源可视化编程工具,2016 年成为 OpenJS 基金会下的顶级项目。它基于 Node.js 运行,采用“流(Flow)”式编程模型,用户通过拖拽节点(Node)并连线即可构建物联网数据流。
1.2.2 核心概念
| 概念 | 说明 | 类比 |
|---|---|---|
| 节点(Node) | 功能单元,负责输入、处理或输出 | 积木块 |
| 流(Flow) | 节点之间的连接关系与数据流向 | 电路图 |
| 消息(Message) | 节点间传递的 JSON 对象,包含 payload | 信封 |
| 上下文(Context) | 全局/流/节点级别的数据存储 | 便签本 |
| 仪表盘(Dashboard) | 可视化 UI 组件,实时展示数据 | 控制面板 |
新手常见误区:不要将 Node-RED 与 Node.js 后端框架(如 Express)混淆。Node-RED 是面向非程序员的可视化工具,但底层仍运行在 Node.js 上,支持通过 Function 节点编写自定义 JavaScript 逻辑。
1.3 Node-RED 在物联网数据采集中的优势
1.3.1 对比传统开发方式
| 对比维度 | 传统开发(Python/Java) | Node-RED |
|---|---|---|
| 开发效率 | 需编写大量样板代码(协议解析、线程管理) | 拖拽节点,零代码或低代码完成集成 |
| 协议支持 | 需手动集成 MQTT/HTTP/CoAP 库 | 内置 200+ 节点,一键安装 |
| 调试能力 | 依赖日志打印或 IDE 断点 | 侧边栏实时查看消息、注入调试节点 |
| 部署灵活性 | 需配置服务器环境、依赖管理 | 单命令启动,支持 Docker/边缘设备 |
| 可视化 | 需额外集成 Grafana/Chart.js | 内置 Dashboard 节点,拖拽生成 UI |
1.3.2 五大核心优势
- 可视化流编程:无需编写大量代码,通过拖拽和连线即可构建数据采集管道,降低物联网开发门槛。
- 丰富的节点生态:官方与社区提供超过 5000 个节点,覆盖 MQTT、HTTP、TCP/UDP、Modbus、OPC UA、SQL/NoSQL 数据库等。
- 边缘到云的无缝集成:支持在树莓派、Jetson Nano 等边缘设备上运行,也可部署到 AWS、Azure、阿里云等云端。
- 实时调试与热部署:修改流后无需重启服务,新配置即时生效;调试节点可实时打印消息内容。
- 轻量级与可扩展:运行时仅需 50MB 内存,支持通过 Function 节点编写自定义逻辑,也可开发私有节点。
1.3.3 典型应用场景
- 工业数据采集:通过 Modbus TCP/RTU 节点读取 PLC 寄存器,转换为 MQTT 上报到云平台。
- 环境监测:接收 LoRa 网关上报的温湿度数据,存入 InfluxDB 并通过 Dashboard 展示历史曲线。
- 智能楼宇:对接 BACnet 或 KNX 设备,实现照明、空调的自动化控制与能耗分析。
- 设备告警:对传感器数据设置阈值,超限时通过邮件、或钉钉机器人推送告警。