结合需求,需先通过 Zabbix 完成设备数据采集与控制指令下发,再通过 Grafana 实现可视化监控与控制操作集成,核心分为 "数据采集层搭建""Zabbix 控制功能配置""Grafana 可视化与控制集成""联动调试" 四阶段,具体步骤如下:
一、前期准备:明确设备协议与硬件对接
1. 梳理目标设备与控制需求
根据文档要求,需覆盖的设备与控制场景如下,需先确认设备是否支持标准协议(如 Modbus RTU/TCP、BACnet),无标准协议则需第三方控制器转换:
| 设备类型 | 需监控参数(文档 1.2) | 需控制功能(文档 1.3/1.4) | 常见通讯协议 |
|---|---|---|---|
| 冷水机组 | 运行频率、电流、耗电量、供冷量、COP/EER | 一键启停、自动待机 / 重启、联动冷却泵 / 冷却塔 | Modbus TCP、BACnet |
| 冷冻 / 冷却水泵 | 供回水温度 / 压力 / 流量、运行频率、电流、功率 | 变频调节(按温差 / 电价)、顺序启停(联动主机) | Modbus RTU/TCP |
| 冷却塔风机 | 运行频率、电流、室外湿球温度、出水温度 | 启停控制(按湿球温度)、变频调节(按温差逼近度) | Modbus RTU/TCP |
| 室内 / 室外环境 | 室内温湿度(每层 2-3 个)、室外干 / 湿球温度 | 无控制功能,仅数据采集 | 485 总线(Modbus) |
| 电动调节阀 | 阀门开度、流量 | 开度调节(联动供冷量) | Modbus RTU |
2. 硬件对接:确保 Zabbix 能与设备通讯
-
有标准协议的设备
(如带 Modbus 的水泵变频器、冷水机组):
直接通过 "Zabbix Server/Proxy + 串口服务器(如 MOXA NPort)" 对接:串口服务器将设备的 RS485 信号转为 TCP/IP 信号,确保 Zabbix 能访问串口服务器的 IP 与端口(如 502 端口,Modbus 默认)。
-
无标准协议的设备
(如普通空调、老旧阀门):
加装第三方智能控制器(如 PLC、边缘计算网关),控制器通过继电器 / 模拟量输出控制设备,同时支持 Modbus 协议与 Zabbix 通讯(如选用西门子 S7-1200 PLC,配置 Modbus TCP 从站模式)。
-
传感器部署:
温湿度、压力、流量传感器(如 SHT30 温湿度传感器、RS485 型压力变送器)通过 485 总线接入串口服务器,确保采集间隔≤15 分钟(文档 1.5 要求)。
二、Zabbix 配置:实现数据采集与控制指令下发
Zabbix 是核心控制层,需完成 "数据源配置→监控项创建→触发器 / 自动动作配置→远程命令控制",对应文档中 "手动调控" 与 "自动调控" 需求。
1. 部署 Zabbix Agent2/Proxy(确保通讯覆盖)
-
若设备分散(如多层楼宇),在楼宇弱电间部署 Zabbix Proxy,Proxy 与 Zabbix Server 通过 TCP/IP 通讯,负责本地设备数据采集与指令转发,减轻 Server 负载。
-
安装 Zabbix Agent2(推荐,支持 Modbus 等协议插件):
在 Proxy 或直接对接设备的服务器上安装 Agent2,启用 Modbus 插件:
bash# 编辑Agent2配置文件(/etc/zabbix/zabbix_agent2.conf) Plugins.Docker.Enabled=0 # 关闭无用插件 Plugins.Modbus.Enabled=1 # 启用Modbus插件重启 Agent2:
systemctl restart zabbix-agent2
2. 配置 Modbus 数据源(对接设备)
以 "监控冷冻水泵运行频率" 为例,配置 Zabbix 的 Modbus 数据采集:
-
进入 Zabbix Web→Configuration→Hosts,创建 "民生大厦 - 冷冻水泵" 主机,接口类型选择 "Agent2",IP 填写 Agent2 所在服务器 / Proxy 的 IP。
-
进入Configuration→Templates,创建 "Template_WaterPump_Modbus" 模板,添加 "Modbus" 类型的监控项:
-
Name:冷冻水泵运行频率
-
Key:
modbus.get[tcp://192.168.1.100:502,1,3,0,1,uint16,little]解析:
tcp://串口服务器IP:端口(192.168.1.100:502)、从站地址 1、功能码 3(读保持寄存器)、寄存器地址 0、读取长度 1、数据类型 uint16、字节序 little。 -
Units:Hz(频率单位)
-
Update interval:10 分钟(≤15 分钟,符合文档要求)
-
-
同理,按设备寄存器地址,添加其他监控项(如冷冻水供回水温差、水泵电流、冷却塔出水温度等),确保覆盖文档 1.2.1-1.2.4 的所有参数。
3. 配置手动控制:远程命令下发(文档 1.3)
通过 Zabbix 的 "Remote Command" 功能,实现 "远程手动调控"(如调整冷冻水供水温度设定值、水泵频率):
-
确认设备支持 "写入寄存器" 控制(如变频器的频率设定寄存器地址为 10),在 Zabbix 模板中添加 "可写" 监控项:
-
Name:冷冻水泵频率设定
-
Key:
modbus.set[tcp://192.168.1.100:502,1,6,10,{$PUMP_FREQ},uint16,little]解析:功能码 6(写单个寄存器)、目标寄存器 10、值为宏变量
{$PUMP_FREQ}(后续可手动修改)。
-
Type of information:Numeric(unsigned)
-
-
手动触发控制:
进入Monitoring→Hosts→民生大厦 - 冷冻水泵→Latest data,找到 "冷冻水泵频率设定" 监控项,点击 "History" 旁的 "Execute command",输入目标频率(如 50Hz),点击执行,Zabbix 会向设备寄存器写入值,实现手动控制。
4. 配置自动控制:触发器 + 动作(文档 1.4)
根据文档 "自动调控" 需求(如按温差自动调水泵频率、按湿球温度自动启冷却塔),通过 Zabbix"触发器 + 动作" 实现:
示例 1:冷冻水泵按供回水温差自动变频(文档 1.4.3)
-
创建触发器(判断温差是否超出阈值):
进入模板→Triggers→Create trigger:
-
Name:冷冻水供回水温差>5℃(需提频)
-
Expression:
{Template_WaterPump_Modbus:freeze.water.temp.diff.last()}>5(freeze.water.temp.diff为 "冷冻水供回水温差" 监控项的 Key) -
Severity:Warning
-
-
创建动作(温差超阈值时自动提频):
进入Configuration→Actions→Create action:
-
Name:冷冻水泵自动提频(温差超 5℃)
-
Conditions:触发上述触发器
-
**Operations:**添加 "Remote command",命令内容为:
zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf -s 192.168.1.100 -k "modbus.set[tcp://192.168.1.100:502,1,6,10,55,uint16,little]"(向寄存器 10 写入 55Hz,提频)
-
-
同理,创建 "温差<3℃时自动降频" 的触发器与动作,实现自动量调节(文档 1.4.4)。
示例 2:冷却塔风机按湿球温度自动启停(文档 1.4.6)
- 创建监控项 :室外湿球温度(Key:
modbus.get[tcp://192.168.1.101:502,2,3,5,1,float32,little])。 - 创建触发器:
- 触发器 1:室外湿球温度>28℃(需启风机,文档 2.2.3 的 Tset1)
- 触发器 2:室外湿球温度<25℃(需停风机,文档 2.2.3 的 Tset2)
- 创建动作:
- 触发 ">28℃" 时,执行远程命令启动冷却塔风机(写入寄存器控制继电器吸合);
- 触发 "<25℃" 时,执行命令停止风机。
5. 数据存储与历史曲线(文档 1.5)
Zabbix 默认存储历史数据,需确认存储周期满足需求:
-
进入
Administration→General→Housekeeping:
- History storage period:设置为 90 天(可按需延长);
- Trends storage period:设置为 1 年(用于长期能效分析);
-
查看历史曲线:进入Monitoring→Hosts→Latest data,点击监控项旁的 "Graph",即可查看 15 分钟间隔的历史数据曲线(符合文档 1.5 要求)。
三、Grafana 配置:可视化监控与控制集成
Grafana 负责 "可视化展示 + 简化控制操作",需通过 Zabbix 数据源插件对接 Zabbix 数据,再通过 "变量 + 按钮面板" 实现控制功能,替代文档中的 "PC 端就地控制界面""手机 APP 远程控制"。
1. 对接 Zabbix 数据源(已配置可跳过)
参考前文 "Zabbix 数据同步到 Grafana" 步骤:
-
安装 Zabbix 插件:
grafana-cli plugins install alexanderzobnin-zabbix-app,重启 Grafana。 -
进入 Grafana→
Configuration→Data sources→Add data source
,选择 "Zabbix":
- URL :Zabbix Web 的 API 地址(如
http://192.168.1.200/zabbix/api_jsonrpc.php); - Username/Password:Zabbix 的管理员账号(如 Admin/zabbix);
- 点击 "Save & test",确认连接成功。
- URL :Zabbix Web 的 API 地址(如
2. 搭建可视化面板(覆盖文档 1.1.1 监控需求)
创建 "民生大厦空调能源站总览" Dashboard,按 "系统维度" 分面板设计:
面板 1:冷冻水系统监控(文档 1.2.1)
- Visualization:选用 "Graph"(趋势图)+"Gauge"(仪表盘);
- Queries:添加 Zabbix 监控项(冷冻水供回水温度、流量、水泵频率、主机耗电量);
- 样式设置:温度用红色 / 蓝色曲线区分,流量用柱状图,仪表盘显示当前水泵频率(阈值标注 50Hz 满频)。
面板 2:能效监控(文档 1.2.3)
- Visualization:选用 "Stat"(大数字卡片);
- Queries:添加 "能源站总能耗""主机能耗占比""COP/EER" 监控项,设置数值单位(kWh、%、kW/kW);
- 告警标注:在 COP<3 时显示红色,提示能效异常。
面板 3:环境参数监控(文档 1.2.4)
- Visualization:选用 "Table"(表格)+"Heatmap"(热力图);
- 表格:显示各楼层温湿度传感器数据(楼层、温度、湿度、采集时间);
- 热力图:按楼层显示温度分布,红色代表>26℃(超标),绿色代表 22-26℃(正常)。
3. 集成控制功能(替代文档 1.1.1/1.1.3 的手动控制)
Grafana 本身不直接下发命令,需通过 "变量 + Zabbix API 调用" 实现控制,步骤如下:
步骤 1:创建控制变量(手动设定值)
- 进入 Dashboard 设置→Variables→Add variable:
- Name:PUMP_FREQ(冷冻水泵频率设定);
- Type:Query;
- Data source:选择 Zabbix;
- Query:无需关联数据,手动设置 "Values" 为 20,30,40,50(可选频率值);
- 勾选 "Include All option",点击 "Add"。
步骤 2:添加控制按钮(触发 Zabbix 命令)
需安装 "Button Panel" 插件(支持点击触发 API 请求):
-
安装插件:
grafana-cli plugins install grafana-button-panel,重启 Grafana; -
添加 "Button" 面板:
-
Panel Title:冷冻水泵频率控制;
-
Button Settings:设置按钮文本(如 "设为 40Hz");
-
On Click:选择 "Send HTTP Request"(发送 API 请求到 Zabbix);
-
HTTP Request:
-
URL :Zabbix API 地址(
http://192.168.1.200/zabbix/api_jsonrpc.php); -
Method:POST;
-
Body :填写 Zabbix API 调用 JSON(示例:修改
{$PUMP_FREQ}宏变量为 40):json{ "jsonrpc": "2.0", "method": "usermacro.update", "params": { "hostid": "10086", // 冷冻水泵主机的ID(从Zabbix Hosts中获取) "macros": [{"macro": "{$PUMP_FREQ}", "value": "40"}] }, "auth": "ZABBIX_AUTH_TOKEN", // 从Zabbix获取的认证Token "id": 1 }
-
-
-
点击按钮后,Grafana 发送请求到 Zabbix,更新宏变量值,Zabbix 会自动按 "远程命令" 将值写入设备寄存器,实现手动控制。
步骤 3:手机端访问(文档 1.1.3)
Grafana 支持手机浏览器访问,需优化 Dashboard 适配移动端:
- 进入 Dashboard 设置→Mobile:勾选 "Enable mobile layout";
- 调整面板大小:将关键控制按钮(如一键启停、温度设定)放大,确保手机端可点击;
- 保存后,手机浏览器输入 Grafana 地址(如
http://192.168.1.201:3000),登录即可远程监控与控制。
四、联动调试与运维(符合文档 2.0 要求)
1. 功能验证(覆盖文档 2.1-2.6)
| 调试项 | 验证方法 |
|---|---|
| 一键启停(2.1) | 在 Grafana 点击 "能源站一键启动" 按钮,检查设备启停顺序:冷却塔风机→冷却泵→冷冻泵→主机(延时 5 分钟) |
| 联动群控(2.2) | 手动触发冷水机组待机,检查 2 分钟后冷却泵 / 冷却塔是否自动停止;重启主机前 2 分钟,检查泵 / 风机是否提前启动 |
| 质调节(2.3) | 在 Grafana 修改冷冻水供水温度设定值(如从 7℃改为 9℃),检查主机是否自动调整输出冷量 |
| 量调节(2.4/2.5) | 模拟室内负荷增加(提高供回水温差),检查冷冻水泵是否自动提频;进入高电价时段,检查水泵是否自动降频 |
| 冷却塔控制(2.6) | 模拟室外湿球温度>28℃,检查冷却塔风机是否自动启动;温度<25℃时是否自动停止 |
2. 数据完整性检查(文档 1.5)
- 查看 Zabbix 历史数据:进入Monitoring→History,筛选 "冷冻水流量""能耗" 等关键参数,确认数据间隔≤15 分钟,无缺失;
- 生成报表:在 Grafana 添加 "Report" 面板,按日 / 周生成 "能源站能耗报表""COP 变化报表",导出为 PDF 供运维分析。
3. 权限管控(安全需求)
- Zabbix 端:创建 "运维组" 角色,仅开放 "查看数据 + 执行控制命令" 权限,禁止修改监控项 / 触发器;
- Grafana 端:创建 "运维用户",仅授予 "民生大厦 Dashboard" 的查看与编辑权限,隐藏其他系统面板;
- 手机端:通过 Grafana 的 "API Key" 限制访问,仅允许指定手机 IP(通过防火墙配置)访问。
五、常见问题解决
- Zabbix 无法写入寄存器(控制失效) :
- 检查设备从站地址、寄存器地址是否正确(参考设备手册);
- 确认 Zabbix Agent2/Proxy 有访问串口服务器的权限(如防火墙开放 502 端口);
- 测试 Modbus 写入:使用
modbus-cli工具(如modbus-cli write -t tcp -a 1 -r 10 -v 50 192.168.1.100:502),确认设备是否响应。
- Grafana 控制按钮无响应 :
- 检查 Zabbix API Token 是否过期(重新生成 Token:Zabbix→Administration→Users→API tokens);
- 查看 Grafana 日志(
/var/log/grafana/grafana.log),排查 HTTP 请求是否返回 200 状态码; - 确认 Zabbix 宏变量与设备寄存器地址对应(如
{$PUMP_FREQ}关联的寄存器是否为频率设定寄存器)。
- 数据间隔超过 15 分钟(文档 1.5) :
- 调整 Zabbix 监控项的 "Update interval" 为 10 分钟;
- 检查 Zabbix Server 性能:若数据库(MySQL/PostgreSQL)负载过高,增加数据库服务器配置,或启用 Zabbix 分区表(按天分区历史数据)。
通过以上步骤,可完全实现文档中 "水系统空调能源站" 的监控与控制需求:Zabbix 负责底层数据采集与自动控制逻辑,Grafana 提供直观的可视化界面与便捷的手动控制入口,两者结合实现 "监测 - 分析 - 控制 - 优化" 的闭环管理,满足节能高效低碳运行目标。
附
Zabbix 可以实现对楼宇空调及水暖等控制模块的数据监控和部分控制功能,以下是具体实现方式:
监控实现方法
- 通过 Modbus 协议监控 :如果楼宇空调及水暖等控制模块支持 Modbus 协议,可以利用 Zabbix 的 Modbus 插件或功能来实现监控。首先,确保 Zabbix Server 能够与 Modbus 设备进行通信,这可能需要配置串口服务器或网络转 Modbus 设备等。然后,在 Zabbix 中添加监控主机,并安装 Zabbix Agent2。接着,查询 Modbus 设备的寄存器地址,通过 Zabbix 的
modbus.get函数来获取相关数据,如温度、湿度、运行状态等,并创建相应的监控项和触发器。 - 借助 SNMP 协议监控:若设备支持 SNMP 协议,Zabbix 可以通过 SNMP 协议来获取设备的信息。在 Zabbix 中配置 SNMP 相关参数,如 SNMP 社区字符串、版本等,然后添加需要监控的设备,并根据设备的 OID(对象标识符)来创建监控项,以获取设备的各种数据,如设备的运行状态、温度、压力等。
- 使用 Zabbix Agent 结合自定义脚本监控:对于一些不直接支持标准协议的设备,可以在被监控主机上安装 Zabbix Agent,并编写自定义脚本与设备的控制接口进行交互,获取设备数据。然后在 Zabbix 中配置监控项,通过调用自定义脚本来获取数据。例如,对于一些具有特定 API 接口的楼宇自动化系统,可以编写脚本调用 API 获取相关数据。
附:
控制实现方法
- 通过发送指令到设备接口:如果楼宇空调及水暖等控制模块具有可访问的控制接口,如网络接口或串口接口,可以通过 Zabbix 的远程命令功能,在触发特定事件时,向设备发送控制指令。例如,当温度超过设定阈值时,Zabbix 可以发送命令给空调控制模块,使其调整运行模式或温度设置。
- 借助第三方控制器:对于一些不具备直接网络控制接口的设备,如普通空调,可以借助第三方控制器来实现控制。例如,使用带有 RS485 信号输出的空调控制器,结合红外发射器,通过 Zabbix 发送指令给控制器,再由控制器通过红外信号控制空调的运行状态,实现开机、关机、调节温度等操作。