标签:
ZabbixModbus-RTURS485动环监控机房温湿度机柜传感器适用版本:Zabbix 6.0 / 7.0 LTS,Zabbix Agent2;Honsor 机柜式双网口 RS485 温湿度变送器(H-THDRJ45) 场景:服务器机柜、档案库房、弱电间动环环境采集,双 RJ45 手拉手级联组网
一、前言
在机房、机柜动环监控项目里,很多工程师会选双网口 RS485 温湿度变送器 ,它的优势是用 RJ45 网线代替传统端子 485 线,支持手拉手级联布线,施工更方便。 很多人踩坑点:双网口只是 RS485 总线转接,不是 TCP 网口设备,协议依然是 Modbus-RTU,不能直接当成 Modbus TCP 设备接入 Zabbix。
本文提供一套可直接落地的接入方案,包含:硬件接线、Modbus 点位表、Agent2 配置、Zabbix 模板、监控项、触发器、调试命令、常见排错。
二、设备说明与通讯参数
2.1 设备特点
- 接口:双 RJ45(内部 A/B 对应 RS485 总线,手拉手级联)
- 协议:Modbus-RTU,功能码 03(读保持寄存器)
- 默认参数:波特率 9600,8N1,从站地址 SlaveID=1
- 供电:DC9~24V
- 数据精度:温度、湿度放大 10 倍上传,读取后除以 10 得到真实值
重点提醒:双 RJ45 是485 总线拓展口,不是以太网 IP 口,不能 ping,不能直接 TCP 连接;需要 USB 转 RS485 或者 Modbus RTU 转 TCP 网关接入 Zabbix。
2.2 Modbus 点位寄存器表(本文配套使用)
⚠️ 不同厂家寄存器有差异,正式项目以设备说明书为准,本表为 Honsor H-THDRJ45 标准点位
寄存器地址(十六进制) 寄存器地址(十进制) 名称 数据类型 读写 换算公式 单位 0x0000 0 温度 INT16 只读 value / 10 ℃ 0x0001 1 相对湿度 UINT16 只读 value / 10 %RH 0x0002 2 设备从站地址 UINT16 可写 - - 0x0003 3 波特率 UINT16 可写 1=2400,2=4800,3=9600 bps
示例:读到温度寄存器值 255 → 255 / 10 = 25.5℃;读到 18 → 1.8℃;负数采用补码存储
三、两种接入方案选型
方案 A(推荐,多传感器总线):USB 转 RS485 接 Zabbix Agent2 服务器 ,本地 rtu 串口读取 方案 B(远距离、多机柜分散):Modbus RTU 转 TCP 网关,Zabbix 通过 tcp://网关 IP:端口读取(RTU over TCP)
本文以方案 A 为主进行演示,方案 B 仅修改 endpoint 地址即可。
四、前置准备
- Zabbix Server + Zabbix Agent2(必须 Agent2,老 agent 不支持 modbus 插件)
- 机柜式双网口 RS485 温湿度变送器
- USB 转 RS485 模块(带隔离、120Ω 终端电阻更佳)
- 网线(RJ45 手拉手串联变送器,A-A,B-B)
- 调试工具:
modpoll、zabbix_get
五、硬件接线与总线规范
- 总线拓扑:手拉手串联,禁止星型布线
- RJ45 线序:总线 A、B 对应变送器内部 485 差分信号,网线只使用 A/B 两根差分,其余线不用
- 总线首尾两端增加 120Ω 终端电阻(总线大于 20 米、设备≥3 台强烈建议)
- A 接 A、B 接 B,共地 GND,避免地环路干扰
- 上电前确认:所有变送器 SlaveID 不能重复,同一总线地址唯一
测试:先用 modpoll 命令在服务器串口上读取数据,确认通讯正常,再进 Zabbix 配置,避免在 Zabbix 里反复排查硬件问题。
modpoll 测试命令示例(串口 RTU)
# /dev/ttyUSB0 为 usb 转 485 串口,9600 波特率,从站 1,读取起始地址 0,2 个寄存器(温湿度)
modpoll -m rtu -a 1 -r 0 -c 2 -b 9600 -p none /dev/ttyUSB0
六、Zabbix Agent2 Modbus 插件配置
路径:
/etc/zabbix/zabbix_agent2.d/plugins.d/modbus.conf
Plugins.Modbus.Timeout=3
Plugins.Modbus.Sessions.thsensor.Endpoint=rtu:///dev/ttyUSB0:9600:8n1
rtu://串口:波特率:数据位校验停止位- Windows 环境:
rtu://COM3:9600:8n1 - 如果是 RTU over TCP 网关:
tcp://192.168.1.100:502
保存后重启 agent2
systemctl restart zabbix-agent2
systemctl status zabbix-agent2
zabbix_get 预读取测试(成功再配置模板)
# 读取温度,slave=1,功能码 3,地址 0,int16
zabbix_get -s 127.0.0.1 -k 'modbus.get[thsensor,1,3,0,1,int16,1,be,0]'
# 读取湿度,slave=1,功能码 3,地址 1,uint16
zabbix_get -s 127.0.0.1 -k 'modbus.get[thsensor,1,3,1,1,uint16,1,be,0]'
modbus.get 完整参数:
modbus.get[session,slaveid,function,address,count,type,byteorder,wordorder,offset]
七、Zabbix Web 端模板创建(核心步骤)
-
【配置】→【模板】→【创建模板】。模板名称:
Template_Honsor_机柜双网口RS485温湿度变送器;模板组:自定义 → 机房动环传感器。 -
添加监控项(3 个),配置如下表:
监控项名称 键值 key 信息类型 单位 更新间隔 机柜温度 modbus.get[thsensor,1,3,0,1,int16,1,be,0]浮点数 ℃ 60s 机柜湿度 modbus.get[thsensor,1,3,1,1,uint16,1,be,0]浮点数 %RH 60s 变送器在线状态 自定义 ping/agent 可用性 数字 - 30s
注意:原始读到的值是放大 10 倍的整数,必须配置预处理。预处理规则(温度、湿度监控项统一配置):
- 步骤 1:自定义乘数
0.1 - 步骤 2:保留 1 位小数
- 添加触发器(示例阈值,可自行修改):
- 触发器 1:机柜温度过高。表达式:
last(/Template_Honsor_机柜双网口RS485温湿度变送器/机柜温度) > 35;严重性:警告 - 触发器 2:机柜湿度过高。表达式:
last(/Template_Honsor_机柜双网口RS485温湿度变送器/机柜湿度) > 70;严重性:警告 - 触发器 3:变送器离线。表达式:
nodata(/Template_Honsor_机柜双网口RS485温湿度变送器/机柜温度,300) = 1;严重性:一般严重
- 触发器 1:机柜温度过高。表达式:
- 添加图形:新建图形,勾选温度、湿度两个监控项,Y 轴分别设置,方便看板展示;后续可以加入 Dashboard 动环大屏。
- 主机绑定:新建主机,代理选择对应 Agent2,链接上面这个模板,等待采集。
八、RTU over TCP 网关版本修改说明(方案 B)
如果你使用 Modbus 网关,endpoint 改成 tcp 模式,modbus.conf 会话改为:
Plugins.Modbus.Sessions.thsensor.Endpoint=tcp://192.168.1.100:502
监控项 key 完全不变,网关负责 TCP 转 485 总线,适合跨机柜、远距离部署场景。
九、常见故障排查(踩坑汇总)
- 取不到数据,zabbix_get 返回空
- 优先用 modpoll 单独测试串口/网关,判断是硬件还是 Zabbix 配置问题
- 检查:波特率、从站 ID、寄存器地址是否和说明书一致;A/B 有没有接反
- 总线设备多,忘记加终端电阻,信号衰减,偶发丢包
- 数值明显偏大,比如 2550℃
- 忘记配置预处理 ×0.1,没有除以 10,是高频错误
- 负数温度异常(零下温度乱码)
- 温度寄存器是 INT16 有符号类型,不能用 uint16,key 里 type 改成 int16
- 双网口误以为是网口设备,直接 ping 不通
- 再次强调:双 RJ45 只是 RS485 总线手拉手拓展,不是以太网设备,没有 IP
- Agent2 不识别 modbus 插件
- 确认安装 zabbix-agent2,老版 zabbix_agent 不支持 modbus.get;看 agent 日志
/var/log/zabbix/zabbix_agent2.log
十、扩展:多台变送器总线部署
一条 485 总线可以串联多台本款双网口变送器,每台 SlaveID 唯一。 在 Zabbix 里:
- 复用同一个 modbus session 会话
- 复制监控项,只修改 key 里面的 slaveid,分别创建主机/模板宏区分每一台机柜传感器
适合一排机柜串联采集,节省布线成本。
十一、结束语
这款双网口 RS485 温湿度变送器非常适合机房机柜密集部署,网线手拉手布线比传统 485 端子线整洁很多;但接入 Zabbix 的核心是区分【物理层 RJ45】和【通讯层 Modbus-RTU】,很多新手会把它当成网口传感器,导致接入失败。 本教程点位、key、预处理、触发器可以直接复制使用,替换寄存器地址即可适配其他品牌同类型 485 温湿度变送器。
