Node-RED实战:用node-red-contrib-modbus节点5分钟搞定温湿度传感器数据采集
2026/6/1 5:47:07 网站建设 项目流程

Node-RED极简实战:5分钟构建Modbus-RTU温湿度监测系统

在工业物联网和智能楼宇领域,温湿度监测是最基础却至关重要的环节。传统的数据采集方案往往需要开发者深入理解串口通信、协议解析和校验算法,而Node-RED配合node-red-contrib-modbus节点彻底改变了这一局面——就像用乐高积木搭建专业级监测系统,无需焊接电路就能实现稳定可靠的数据采集。

1. 环境准备与硬件连接

1.1 硬件选型指南

市面常见的Modbus-RTU温湿度传感器主要分为两类:

  • 86型面板式:如海凌科HLK-TH20,安装便捷但探头固定
  • 分体探头式:如炜盛科技SHT20系列,探头可分离部署

关键参数对比表:

型号测量范围精度供电电压典型价格
HLK-TH20-40~80℃,0~100%RH±0.5℃/3%5-24V DC¥120
SHT20-MODBUS-40~125℃,0~100%RH±0.3℃/2%3.3-5.5V¥85

提示:工业场景建议选择24V供电型号,抗干扰能力更强

1.2 接线实战

以最普遍的RS485接线为例:

  1. 使用双绞线连接传感器A/B端子到转换器
  2. USB转485转换器接入工控机
  3. 给传感器单独供电(注意电压匹配)

常见故障排查:

  • 通信失败时首先检查终端电阻(120Ω)
  • 长距离传输需增加485中继器
  • 接地环路问题会导致数据异常
# Linux下查看串口设备 ls /dev/ttyUSB*

2. Node-RED环境配置

2.1 核心组件安装

通过npm一键获取所需模块:

npm install -g node-red npm install node-red-contrib-modbus npm install node-red-dashboard

2.2 串口参数配置

在Modbus客户端节点中需设置:

  • 波特率:9600/19200/38400(需与传感器一致)
  • 数据位/停止位:通常8N1
  • 响应超时:建议2000ms以上

典型配置代码片段:

{ "type": "modbus-client", "clienttype": "serial", "serialPort": "/dev/ttyUSB0", "serialBaudrate": "9600", "serialDatabits": "8", "serialStopbits": "1" }

3. Modbus节点深度配置

3.1 寄存器地址映射

以某型号温湿度传感器为例:

寄存器地址数据类型说明换算公式
0x0000INT16温度原始值实际值×0.1
0x0001UINT16湿度原始值实际值×0.1
0x1000UINT32设备序列号直接读取

3.2 功能码选择技巧

  • FC3:最常用的读取保持寄存器
  • FC4:读取输入寄存器(只读)
  • FC16:批量写入寄存器

配置示例:

// 读取温湿度的sequencer配置 { "name": "readTH", "unitid": 1, "fc": "FC3", "address": "0", "quantity": "2" }

4. 数据流构建与优化

4.1 完整流结构设计

典型数据处理流程:

  1. Modbus读取节点(定时触发)
  2. 数据转换函数节点
  3. Dashboard图表输出
  4. MQTT发布节点
# 数据转换函数示例 def convert_modbus(msg): if len(msg.payload) >= 2: msg.temperature = msg.payload[0] * 0.1 msg.humidity = msg.payload[1] * 0.1 msg.payload = { "ts": Date.now(), "temp": round(msg.temperature,1), "humi": round(msg.humidity,1) } return msg

4.2 性能优化技巧

  • 使用批处理模式减少请求次数
  • 设置合理的轮询间隔(通常5-10秒)
  • 启用Modbus节点的缓存功能
  • 重要数据添加异常检测逻辑

注意:避免同时发起过多请求,可能导致从设备响应超时

5. 高级应用场景拓展

5.1 多设备组网方案

通过修改Unit ID实现设备轮询:

// 动态设置设备地址 msg.unitid = flow.get("currentDevice") || 1; flow.set("currentDevice", msg.unitid % 32 + 1); return msg;

5.2 数据持久化方案

推荐组合:

  • InfluxDB + Grafana:专业时序数据分析
  • SQLite:轻量级本地存储
  • CSV文件:快速导出备份

配置示例:

{ "type": "influxdb out", "host": "127.0.0.1", "port": "8086", "dbname": "sensor_data", "measurement": "environment" }

在实际机房监控项目中,这套方案成功替代了原有的SCADA系统,将部署时间从3天缩短到2小时。特别是当需要临时增加监测点时,只需复制节点修改地址即可,这种灵活性在应急场景中表现出色。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询