地产物业智慧楼宇运维实战:弱电+网络+IoT设备3000+点位,值班团队只有4个人怎么管
一、智慧楼宇运维的真实现状:比传统IT运维碎片10倍
先说背景。
某商业地产物业公司,管理12栋商办综合体,每栋楼的"智慧系统"包括:
| 子系统 | 设备/点位数 | 协议 | 原有监控方式 |
|---|---|---|---|
| 楼宇自控BA(暖通空调+照明+电梯) | ~800点位/栋 | BACnet/IP、Modbus | BA厂商自带上位机 |
| 门禁+视频监控 | ~200路/栋 | TCP私有协议 | 安防平台 |
| 停车场系统 | ~50点位/栋 | 串口+TCP | 停车场管理软件 |
| 能耗监测(电表+水表) | ~150点位/栋 | RS485 Modbus RTU | 能耗采集网关 |
| IT网络(交换机+AP+服务器) | ~100台设备/栋 | SNMP v2c/v3 | Zabbix |
一栋楼约 1300个监控点位,12栋合计 15000+。
值班团队?整个片区 4人轮班,7×24。
问题很明显:
- 5套系统各有各的告警界面:值班人员要同时看BA上位机、安防平台、Zabbix三个屏幕,还有停车场和能耗两个后台偶尔弹告警
- 告警量巨大但有效率极低:BA系统一天能报500+条温度/湿度偏差,大部分是正常波动触发阈值
- 故障关联靠人脑:空调机组报故障 + 对应楼层温度偏高 + 租户报热,这三条信息在三个系统里,值班要自己串
- 没有统一的事件记录:处理过什么、谁处理的、花了多长时间——全靠微信群里的聊天记录
二、智慧楼宇 vs 传统IT运维:3个本质区别
在做方案之前,必须先理解智慧楼宇运维和传统IT运维的差异:
| 维度 | 传统IT运维 | 智慧楼宇运维 |
|---|---|---|
| 设备类型 | 同构(服务器/交换机/存储) | 极度异构(暖通/电梯/门禁/网络/传感器) |
| 协议标准 | 统一(SNMP/HTTP/SSH) | 碎片化(BACnet/Modbus/MQTT/私有协议) |
| 告警语义 | 明确(CPU高/磁盘满/服务挂) | 模糊(温度偏差0.5°C算不算告警?) |
| 故障影响 | 业务中断可量化 | 体感问题难量化(热了?暗了?闷了?) |
| 值班能力 | IT背景 | 电气+暖通+IT混合背景 |
| SLA定义 | 响应/解决时间 | 场景化(电梯困人5分钟/空调30分钟/门禁1小时) |
核心挑战:不是"监控能力不够",而是"5套独立系统产出的告警没人整合、没人分级、没人闭环"。我们后来的解法是不替换任何一套现有监控系统,而是在上面加一层冠服云EMS做统一归集和处置闭环——下面展开讲具体怎么落地。
三、分层监控策略:不是所有点位都要实时盯
3000+点位全部实时监控?不现实,也没必要。按业务影响分层:
# 智慧楼宇监控分层策略
monitoring_layers:
# 第一层:生命安全层(必须实时 + P1告警)
layer_1_safety:
description: "影响人身安全的系统,零容忍"
systems:
- fire_alarm # 消防报警
- elevator_fault # 电梯故障/困人
- gas_leak # 燃气泄漏
- power_main_failure # 主供电中断
monitoring:
interval: realtime # 实时监控
alert_level: P1
notification: phone_call + wechat
response_sla: 3min
point_count_per_building: ~50
# 第二层:业务核心层(5分钟间隔 + P2告警)
layer_2_business:
description: "直接影响租户体验和物业营收"
systems:
- hvac_main_units # 中央空调主机
- access_control # 门禁系统
- parking_barrier # 停车场道闸
- network_core # 核心网络设备
- lobby_lighting # 大堂/公区照明
monitoring:
interval: 5m
alert_level: P2
notification: wechat + sms
response_sla: 15min
point_count_per_building: ~300
# 第三层:设施运行层(15分钟间隔 + P3告警)
layer_3_facility:
description: "设施正常运行,异常不紧急"
systems:
- hvac_terminals # 末端空调(FCU/AHU)
- energy_meters # 能耗监测
- water_pumps # 给排水泵组
- lighting_schedule # 照明时间表执行
monitoring:
interval: 15m
alert_level: P3
notification: wechat_daily_group
response_sla: 2h
point_count_per_building: ~600
# 第四层:信息采集层(1小时间隔 + 不告警)
layer_4_info:
description: "数据采集用于分析,不触发告警"
systems:
- temperature_humidity_sensors # 环境传感器
- occupancy_sensors # 人流计数
- energy_sub_meters # 分户电表
- parking_occupancy # 车位占用率
monitoring:
interval: 60m
alert_level: none # 不告警,只存数据
use_case: "能耗分析、报表、趋势预测"
point_count_per_building: ~350
分层效果:
| 层级 | 点位数/栋 | 占比 | 需要值班实时关注 |
|---|---|---|---|
| L1 安全层 | 50 | 4% | ✅ 必须 |
| L2 业务层 | 300 | 23% | ✅ 必须 |
| L3 设施层 | 600 | 46% | ❌ 有告警再看 |
| L4 信息层 | 350 | 27% | ❌ 不告警 |
值班人员实际需要关注的:L1+L2 = 约350个点位/栋,而不是全部1300个。12栋合计约4200个关键点位——4人轮班可管。我们在冠服云EMS里把这套分层做成了「智慧楼宇」场景模板,新楼接入时一键套用,L1~L4的监控间隔、告警级别、通知渠道自动生效,新楼接入周期从2周压到2天。
四、多系统告警统一接入:5套系统 → 1个事件中心
这是智慧楼宇运维的核心技术挑战:怎么把BA系统、安防、停车场、能耗、IT网络的告警全部归到一起。我们用冠服云EMS的做法是:平台提供标准化的告警接入API + 协议适配器SDK,每种子系统写一个轻量适配器(通常200行代码以内),把原始告警转成统一JSON格式推进 EMS事件中心。下面是我们在实际项目中跑的三个主要适配器实现:
4.1 BA系统对接(BACnet/IP)
楼宇自控系统普遍支持BACnet协议。通过BACnet/IP网关或直接读取BA控制器的告警对象:
"""
BA系统告警采集:通过BACnet/IP协议读取告警点位
依赖:BAC0 库(Python BACnet实现)
"""
import BAC0
from datetime import datetime
# 连接BACnet网络
bacnet = BAC0.connect(ip='192.168.10.100/24', port=47808)
# BA系统告警点位定义(从BA工程图纸导出)
BA_ALARM_POINTS = [
# (设备ID, 对象类型, 对象实例, 描述, 告警条件)
('AHU-B1-01', 'analogInput', 1, '送风温度', {'high': 28, 'low': 16}),
('AHU-B1-01', 'analogInput', 2, '回风温度', {'high': 30, 'low': 18}),
('AHU-B1-01', 'binaryInput', 1, '风机运行状态', {'fault': 0}),
('AHU-B1-01', 'binaryInput', 2, '滤网压差报警', {'alarm': 1}),
('CH-01', 'analogInput', 1, '冷冻水供水温度', {'high': 9, 'low': 5}),
('CH-01', 'binaryInput', 1, '冷机故障', {'fault': 1}),
('ELV-01', 'binaryInput', 5, '电梯故障', {'fault': 1}),
('ELV-01', 'binaryInput', 6, '电梯困人', {'alarm': 1}),
]
def poll_ba_alarms():
"""轮询BA系统告警点位"""
alerts = []
for device_id, obj_type, obj_instance, desc, conditions in BA_ALARM_POINTS:
try:
# 读取BACnet点位当前值
point_address = f'{device_id}/{obj_type}/{obj_instance}'
value = bacnet.read(f'{point_address} presentValue')
status = bacnet.read(f'{point_address} statusFlags')
# 判断是否触发告警
alert = check_ba_alarm(device_id, desc, value, conditions, status)
if alert:
alerts.append(alert)
except Exception as e:
# BACnet通信失败本身也是告警
alerts.append({
'source_system': 'ba_system',
'alert_id': f'ba_comm_fail_{device_id}_{datetime.now().strftime("%Y%m%d%H%M")}',
'ci_id': device_id,
'ci_name': f'{device_id} ({desc})',
'ci_type': 'ba_controller',
'severity': 'P2',
'description': f'BACnet通信中断:{device_id},错误:{str(e)}',
'fired_at': datetime.now().isoformat(),
})
# 统一推送到事件中心
if alerts:
push_to_event_engine(alerts)
return alerts
def check_ba_alarm(device_id, desc, value, conditions, status):
"""BA告警判断逻辑"""
# BACnet statusFlags: [inAlarm, fault, overridden, outOfService]
if status and status[1]: # fault位
return {
'source_system': 'ba_system',
'alert_id': f'ba_{device_id}_{datetime.now().strftime("%Y%m%d%H%M")}',
'ci_id': device_id,
'ci_name': f'{device_id} ({desc})',
'ci_type': 'ba_equipment',
'severity': classify_ba_severity(device_id, 'fault'),
'description': f'{desc} 设备故障,当前值:{value}',
'fired_at': datetime.now().isoformat(),
'labels': {'subsystem': 'ba', 'building': device_id.split('-')[1]},
}
# 阈值告警
if 'high' in conditions and value > conditions['high']:
return {
'source_system': 'ba_system',
'alert_id': f'ba_{device_id}_high_{datetime.now().strftime("%Y%m%d%H%M")}',
'ci_id': device_id,
'ci_name': f'{device_id} ({desc})',
'ci_type': 'ba_equipment',
'severity': classify_ba_severity(device_id, 'threshold'),
'description': f'{desc} 超高限:当前{value},阈值{conditions["high"]}',
'fired_at': datetime.now().isoformat(),
'labels': {'subsystem': 'ba', 'building': device_id.split('-')[1]},
}
return None
def classify_ba_severity(device_id, alarm_type):
"""BA设备告警分级"""
# 电梯困人/消防 = P1
if 'ELV' in device_id and alarm_type == 'fault':
return 'P1'
# 冷机/主机故障 = P2
if 'CH' in device_id or 'CT' in device_id:
return 'P2'
# 末端设备 = P3
return 'P3'
4.2 IoT设备对接(MQTT桥接)
新型智慧楼宇的传感器通常走MQTT协议(温湿度、人流、空气质量):
"""
IoT传感器告警采集:订阅MQTT Topic获取实时数据
"""
import paho.mqtt.client as mqtt
import json
from datetime import datetime
# IoT告警阈值配置
IOT_THRESHOLDS = {
'temperature': {'high': 28, 'low': 18, 'severity': 'P3'},
'humidity': {'high': 70, 'low': 30, 'severity': 'P4'},
'co2': {'high': 1000, 'severity': 'P3'}, # ppm
'pm25': {'high': 75, 'severity': 'P3'}, # μg/m³
'power_status': {'offline': 0, 'severity': 'P2'},
}
# MQTT Topic结构:building/{building_id}/floor/{floor}/device/{device_id}/data
SUBSCRIBE_TOPICS = [
'building/+/floor/+/device/+/data', # 传感器数据
'building/+/floor/+/device/+/status', # 设备在线状态
'building/+/system/+/alarm', # 子系统主动上报告警
]
def on_message(client, userdata, msg):
"""MQTT消息处理"""
try:
topic_parts = msg.topic.split('/')
payload = json.loads(msg.payload.decode())
building_id = topic_parts[1]
floor = topic_parts[3]
device_id = topic_parts[5]
msg_type = topic_parts[6] # data / status / alarm
if msg_type == 'alarm':
# 子系统主动上报的告警,直接转发
alert = format_iot_alarm(building_id, floor, device_id, payload)
push_to_event_engine([alert])
elif msg_type == 'data':
# 传感器数据,做阈值判断
alerts = check_iot_thresholds(building_id, floor, device_id, payload)
if alerts:
push_to_event_engine(alerts)
elif msg_type == 'status':
# 设备在离线状态变化
if payload.get('online') == False:
alert = {
'source_system': 'iot_platform',
'alert_id': f'iot_offline_{device_id}_{datetime.now().strftime("%Y%m%d%H%M")}',
'ci_id': device_id,
'ci_name': f'IoT设备 {device_id} (B{building_id}-F{floor})',
'ci_type': 'iot_sensor',
'severity': 'P4',
'description': f'设备离线:{device_id},楼栋{building_id} {floor}层',
'fired_at': datetime.now().isoformat(),
'labels': {
'subsystem': 'iot',
'building': building_id,
'floor': floor,
},
}
push_to_event_engine([alert])
except Exception as e:
log_error(f"MQTT消息处理异常: {msg.topic}, error: {e}")
def check_iot_thresholds(building_id, floor, device_id, payload):
"""IoT传感器阈值检查"""
alerts = []
for metric, value in payload.items():
if metric not in IOT_THRESHOLDS:
continue
threshold = IOT_THRESHOLDS[metric]
triggered = False
direction = ''
if 'high' in threshold and value > threshold['high']:
triggered = True
direction = f'超高限(当前{value},阈值{threshold["high"]})'
elif 'low' in threshold and value < threshold['low']:
triggered = True
direction = f'低于下限(当前{value},阈值{threshold["low"]})'
if triggered:
alerts.append({
'source_system': 'iot_platform',
'alert_id': f'iot_{device_id}_{metric}_{datetime.now().strftime("%Y%m%d%H%M")}',
'ci_id': device_id,
'ci_name': f'{metric}传感器 (B{building_id}-F{floor})',
'ci_type': 'iot_sensor',
'severity': threshold['severity'],
'description': f'{metric} {direction}',
'fired_at': datetime.now().isoformat(),
'labels': {
'subsystem': 'iot',
'building': building_id,
'floor': floor,
'metric': metric,
},
})
return alerts
# MQTT客户端启动
client = mqtt.Client(client_id='building_event_bridge')
client.on_message = on_message
client.connect('mqtt-broker.internal', 1883, 60)
for topic in SUBSCRIBE_TOPICS:
client.subscribe(topic, qos=1)
client.loop_start()
4.3 IT网络对接(Zabbix Webhook)
网络设备监控走Zabbix,通过Webhook统一接入:
// Zabbix Media Type Webhook - 推送到事件中心
var params = JSON.parse(value);
var payload = {
source_system: 'zabbix',
alert_id: 'zbx_' + params.event_id,
ci_id: params.host_id,
ci_name: params.host_name,
ci_type: mapHostGroup(params.host_group),
severity: mapSeverity(params.trigger_severity),
description: params.trigger_name + ':' + params.trigger_description,
fired_at: params.event_time,
labels: {
subsystem: 'network',
building: extractBuilding(params.host_group),
floor: extractFloor(params.host_name),
ip: params.host_ip
}
};
var req = new HttpRequest();
req.addHeader('Content-Type: application/json');
req.post('http://event-engine:8080/api/v1/alerts/zabbix', JSON.stringify(payload));
function extractBuilding(hostGroup) {
// 主机组命名规则:B1-Core / B3-F5-Access / B7-ServerRoom
var match = hostGroup.match(/B(\d+)/);
return match ? match[1] : 'unknown';
}
function mapHostGroup(group) {
if (group.indexOf('Core') > -1) return 'network_core';
if (group.indexOf('Access') > -1) return 'network_access';
if (group.indexOf('AP') > -1) return 'wireless_ap';
if (group.indexOf('Server') > -1) return 'server';
return 'network_device';
}
五、告警归并规则:智慧楼宇场景专属
智慧楼宇的告警关联和纯IT环境不同,需要按物理位置+系统联动关系做归并。冠服云EMS的关联引擎支持用YAML定义归并规则,运维人员不用写代码,配好条件和动作实时生效——以下是我们实际在用的规则配置:
# 智慧楼宇告警归并规则
correlation_rules:
# 规则1:同一楼层多个温度传感器同时报高温 → 归并为"楼层温控异常"
rule_floor_temperature:
name: "楼层温控异常归并"
conditions:
- metric: temperature
- direction: high
- same_building: true
- same_floor: true
- count: ">= 3" # 同层3个以上传感器同时报
- time_window: 10m
action:
merge_to_single_event: true
event_title: "B{building}F{floor} 楼层温度异常({count}个传感器触发)"
severity: P2 # 升级为P2(可能是空调主机问题)
suggested_check: "检查该楼层AHU/FCU运行状态及冷冻水阀门开度"
# 规则2:空调主机故障 + 对应区域温度升高 → 合并,锁定根因
rule_hvac_cascade:
name: "空调故障级联归并"
conditions:
- event_a: {ci_type: "ba_equipment", description_contains: "冷机故障|AHU故障"}
- event_b: {metric: "temperature", direction: "high", same_building: true}
- time_window: 15m # B发生在A之后15分钟内
action:
merge_b_into_a: true
root_cause: event_a
event_title: "{event_a.ci_name} 故障,影响区域温度异常"
severity: P2
suggested_action: "联系暖通维保检查设备,临时启动备用机组"
# 规则3:核心交换机挂 → 该楼栋所有IP设备离线归并
rule_network_cascade:
name: "网络级联故障归并"
conditions:
- event_a: {ci_type: "network_core", severity: "P1|P2"}
- event_b: {ci_type: "network_access|wireless_ap|iot_sensor", same_building: true, description_contains: "离线|不可达"}
- time_window: 5m
action:
merge_b_into_a: true
root_cause: event_a
suppress_child_notifications: true # 子事件不再单独通知
event_title: "B{building} 核心网络故障,影响{child_count}个设备"
severity: P1
# 规则4:停车场道闸 + 门禁 同时异常 → 可能是供电问题
rule_power_correlation:
name: "供电异常关联"
conditions:
- subsystems_affected: [parking, access_control]
- same_building: true
- same_floor_or_zone: true
- time_window: 3m
action:
create_parent_event: true
event_title: "B{building} {zone} 疑似供电异常(多子系统同时故障)"
severity: P1
suggested_action: "优先检查配电室对应回路,确认UPS状态"
# 规则5:IoT传感器批量离线 → 不是传感器坏了,是网关/交换机问题
rule_iot_batch_offline:
name: "IoT批量离线归并"
conditions:
- ci_type: iot_sensor
- description_contains: "离线"
- same_building: true
- count: ">= 5"
- time_window: 5m
action:
merge_to_single_event: true
event_title: "B{building} IoT设备批量离线({count}台),疑似网关/网络问题"
severity: P2
override_individual_severity: true # 覆盖单个P4为整体P2
suggested_action: "检查IoT网关在线状态及上联交换机端口"
六、值班SOP:4人轮班的排班与处置流程
4人管12栋楼,排班和处置流程必须标准化。我们在EMS里配好班次→人员→升级链后,事件触发时系统自动按当前班次找到对应值班人,以下是具体配置:
# 值班排班配置
shift_schedule:
mode: "2班倒" # 白班08:00-20:00 / 夜班20:00-08:00
team_size: 4
rotation:
- day_1: {day_shift: [A, B], night_shift: [C, D]}
- day_2: {day_shift: [A, B], night_shift: [C, D]}
- day_3: {day_shift: [C, D], night_shift: [A, B]}
- day_4: {day_shift: [C, D], night_shift: [A, B]}
responsibilities:
primary_on_call: "负责P1/P2事件处置"
secondary_on_call: "负责P3事件+日常巡检+协助primary"
escalation:
- level_1: on_call_primary (当班)
- level_2: on_call_secondary (当班)
- level_3: team_lead (电话,非值班时间)
- level_4: facility_manager (电话)
# P1事件处置SOP
sop_p1_response:
trigger: "P1事件创建"
steps:
- step: 1
action: "确认事件(3分钟内)"
detail: "在事件控制台点击确认,开始SLA计时"
auto_action: "若3分钟未确认,自动电话呼叫primary"
- step: 2
action: "现场判断(5分钟内)"
detail: |
- 电梯困人 → 立即联系电梯维保 + 通过对讲安抚被困人员
- 消防报警 → 确认是否真实火情,非误报则启动应急预案
- 供电中断 → 确认影响范围,检查UPS剩余时间
- 网络核心故障 → 检查设备状态灯,尝试远程登录
- step: 3
action: "通知相关方(10分钟内)"
detail: |
- 影响租户 → 通知物业客服准备答复口径
- 需要外部维保 → 拨打对应维保单位电话
- 影响3栋以上 → 通知facility_manager
- step: 4
action: "持续更新事件状态"
detail: "每15分钟更新一次处置进展,直到解决"
- step: 5
action: "验证恢复"
detail: "确认告警恢复 + 确认业务/设备恢复正常 + 关闭事件"
- step: 6
action: "填写处置记录"
detail: "故障原因、处置措施、耗时、是否需要复盘"
七、效果对比:部署冠服云EMS前 vs 后
以下数据来自该物业公司12栋楼部署冠服云EMS运行3个月后的实际统计:
| 指标 | 部署前 | 部署EMS后 |
|---|---|---|
| 值班关注系统数 | 5个独立界面 | EMS统一事件控制台1个界面 |
| 日均告警量 | 2000+条(5系统合计) | EMS归并后40-60个事件 |
| P1事件平均响应 | 8-15分钟(看哪个屏先注意到) | 2-3分钟(EMS自动电话呼叫当班人) |
| 故障关联识别 | 靠人脑串(经常漏) | EMS关联引擎自动归并+标注根因 |
| 事件处置记录 | 微信群聊天记录 | EMS事件时间线+SLA统计+处置闭环 |
| 月度报表 | 手动做PPT(3人天/月) | EMS Dashboard自动出(0人天) |
| 租户投诉响应 | "我查查"→人肉翻记录 | EMS事件ID直接调完整处置过程 |
| 新楼接入周期 | 2周(重新配监控规则) | 2天(EMS场景模板一键套用) |
八、技术架构总览
┌────────────────────────────────────────────────────────────────┐
│ 数据源层(每栋楼) │
│ │
│ BA系统 IoT平台 安防系统 IT网络 停车场 │
│ (BACnet/IP) (MQTT) (TCP私有) (SNMP) (TCP/串口) │
└──────┬────────────┬───────────┬───────────┬──────────┬────────┘
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
┌────────────────────────────────────────────────────────────────┐
│ 协议适配层(每栋楼部署1台边缘网关) │
│ │
│ BACnet采集器 MQTT桥接 安防API适配 Zabbix 串口网关 │
│ (Python/BAC0) (Mosquitto) (HTTP Poll) (Webhook) (Modbus) │
│ │
│ → 全部转换为统一JSON告警格式 → 推送到事件中心 │
└────────────────────────────────┬───────────────────────────────┘
│
▼ (HTTPS/WebSocket)
┌────────────────────────────────────────────────────────────────┐
│ 事件处理中心(云端/总部) │
│ │
│ ┌──────┐ ┌──────┐ ┌──────────┐ ┌──────┐ ┌──────────┐ │
│ │ 去重 │→│ 关联 │→│ 场景归并 │→│ 分级 │→│ 通知路由 │ │
│ └──────┘ └──────┘ └──────────┘ └──────┘ └──────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 事件生命周期:新建→确认→处置→验证→关闭 │ │
│ │ SLA计时 / 预警 / 自动升级 / 处置记录 │ │
│ └──────────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────────────┘
九、为什么选冠服云EMS而不是自己搭
有人会问:上面这些逻辑自己写一套事件处理引擎不就行了?
理论上可以,但实际踩过坑:
| 自研方案 | 实际问题 | EMS怎么解决的 |
|---|---|---|
| 自己写告警接入API | 每种协议要造一个适配器轮子,BA/MQTT/SNMP各不同 | EMS内置6种协议适配器模板,改配置即可 |
| 自己写归并逻辑 | 写死在代码里,改规则要发版 | EMS用YAML配规则,运维人员自己改,实时生效 |
| 自己写SLA计时 | 5×8/7×24切换、暂停恢复、假日历要处理大量边界情况 | EMS内置计时引擎,配好服务窗口自动算 |
| 自己搭值班排班 | 又一个系统要维护 | EMS排班模块直接关联事件路由 |
| 自己做Dashboard | 数据聚合+可视化又是一坨工作 | EMS开箱即用的运维大屏,按楼栋/系统/级别分视角 |
我们最初确实尝试过自研,写了2个月发现光「BA系统BACnet告警格式解析」这一块的边界case就处理不完(不同厂商BA控制器的BACnet实现差异极大)。后来切到冠服云EMS,把精力集中在业务规则配置(分层策略、归并规则、SOP编写)上,平台能力不重复造。
对物业运维场景来说,核心价值不是"又多了一套监控",而是在不替换任何现有系统的前提下,加一层EMS把5套系统的告警串成可管理的事件流——这件事靠人脑串不住12栋楼的体量,靠自研代码维护成本也扛不住。
落地Checklist
准备做智慧楼宇统一运维的团队,先确认这些:
- 梳理清楚每栋楼有哪些子系统、用什么协议、告警从哪里出
- BA系统是否开放了BACnet/IP接口(有些老系统只有LonWorks或私有协议,需要网关转换)
- IoT平台是否支持MQTT外发或Webhook回调
- 网络监控(Zabbix/Prometheus)是否已覆盖所有网络设备
- 确定分层策略:哪些点位必须实时盯,哪些只做采集
- 确定值班排班和升级链
- 和各子系统维保单位确认对接方式和故障响应流程
更多推荐


所有评论(0)