通过 Grafana 与 Zabbix 实现水暖 / 空调系统控制的详细步骤

结合需求,需先通过 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 数据采集:

  1. 进入 Zabbix Web→Configuration→Hosts,创建 "民生大厦 - 冷冻水泵" 主机,接口类型选择 "Agent2",IP 填写 Agent2 所在服务器 / Proxy 的 IP。

  2. 进入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 分钟,符合文档要求)

  3. 同理,按设备寄存器地址,添加其他监控项(如冷冻水供回水温差、水泵电流、冷却塔出水温度等),确保覆盖文档 1.2.1-1.2.4 的所有参数。

3. 配置手动控制:远程命令下发(文档 1.3)

通过 Zabbix 的 "Remote Command" 功能,实现 "远程手动调控"(如调整冷冻水供水温度设定值、水泵频率):

  1. 确认设备支持 "写入寄存器" 控制(如变频器的频率设定寄存器地址为 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)

  2. 手动触发控制:

    进入Monitoring→Hosts→民生大厦 - 冷冻水泵→Latest data,找到 "冷冻水泵频率设定" 监控项,点击 "History" 旁的 "Execute command",输入目标频率(如 50Hz),点击执行,Zabbix 会向设备寄存器写入值,实现手动控制。

4. 配置自动控制:触发器 + 动作(文档 1.4)

根据文档 "自动调控" 需求(如按温差自动调水泵频率、按湿球温度自动启冷却塔),通过 Zabbix"触发器 + 动作" 实现:

示例 1:冷冻水泵按供回水温差自动变频(文档 1.4.3)
  1. 创建触发器(判断温差是否超出阈值):

    进入模板→Triggers→Create trigger:

    • Name:冷冻水供回水温差>5℃(需提频)

    • Expression:

      {Template_WaterPump_Modbus:freeze.water.temp.diff.last()}>5

      (freeze.water.temp.diff为 "冷冻水供回水温差" 监控项的 Key)

    • Severity:Warning

  2. 创建动作(温差超阈值时自动提频):

    进入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. 同理,创建 "温差<3℃时自动降频" 的触发器与动作,实现自动量调节(文档 1.4.4)。

示例 2:冷却塔风机按湿球温度自动启停(文档 1.4.6)
  1. 创建监控项 :室外湿球温度(Key:modbus.get[tcp://192.168.1.101:502,2,3,5,1,float32,little])。
  2. 创建触发器:
    • 触发器 1:室外湿球温度>28℃(需启风机,文档 2.2.3 的 Tset1)
    • 触发器 2:室外湿球温度<25℃(需停风机,文档 2.2.3 的 Tset2)
  3. 创建动作:
    • 触发 ">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" 步骤:

  1. 安装 Zabbix 插件:grafana-cli plugins install alexanderzobnin-zabbix-app,重启 Grafana。

  2. 进入 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",确认连接成功。

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 请求):

  1. 安装插件:grafana-cli plugins install grafana-button-panel,重启 Grafana;

  2. 添加 "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
        }
  3. 点击按钮后,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(通过防火墙配置)访问。

五、常见问题解决

  1. Zabbix 无法写入寄存器(控制失效)
    • 检查设备从站地址、寄存器地址是否正确(参考设备手册);
    • 确认 Zabbix Agent2/Proxy 有访问串口服务器的权限(如防火墙开放 502 端口);
    • 测试 Modbus 写入:使用modbus-cli工具(如modbus-cli write -t tcp -a 1 -r 10 -v 50 192.168.1.100:502),确认设备是否响应。
  2. Grafana 控制按钮无响应
    • 检查 Zabbix API Token 是否过期(重新生成 Token:Zabbix→Administration→Users→API tokens);
    • 查看 Grafana 日志(/var/log/grafana/grafana.log),排查 HTTP 请求是否返回 200 状态码;
    • 确认 Zabbix 宏变量与设备寄存器地址对应(如{$PUMP_FREQ}关联的寄存器是否为频率设定寄存器)。
  3. 数据间隔超过 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 发送指令给控制器,再由控制器通过红外信号控制空调的运行状态,实现开机、关机、调节温度等操作。
相关推荐
yunson_Liu6 小时前
grafana+alertmanager配置sendgrid发送邮箱提示
grafana
siriuuus11 小时前
Ubuntu Zabbix 安装部署及简单使用
zabbix·grafana
!chen3 天前
Zabbix 配置中文界面、监控告警以及Windows、Linux主/被监控模板
linux·windows·zabbix
q***48313 天前
【监控】Spring Boot+Prometheus+Grafana实现可视化监控
spring boot·grafana·prometheus
时空无限3 天前
grafana 切换 org 导致的页面跳转不可访问处理
grafana
wniuniu_3 天前
testground local-grafana 环境排查
grafana
tianshiyeben4 天前
WGCLOUD监控系统使用指南 - 告警消息整理完整版
linux·运维·服务器·系统安全·zabbix
梁正雄5 天前
17、grafana安装
运维·grafana·prometheus·监控
webrtc&ffmpeg_study6 天前
监控平台 Grafana+Prometheus+node_exporter初识
grafana·prometheus