| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- # ============================================================
- # 锡山中荷 水厂配置文件
- # ============================================================
- # 使用方法:python tool/migrate_yaml_to_db.py --yaml 本文件路径 --force
- # 导入后可通过 API(:8080)在线修改,无需再编辑此文件
- # ============================================================
- # ----------------------------------------------------------
- # 水厂列表(一个 YAML 文件只配一个水厂)
- # ----------------------------------------------------------
- plants:
- - name: 锡山中荷 # 水厂名称(用于日志和推送显示)
- enabled: true # 是否启用该水厂的检测
- project_id: 92 # 平台项目 ID(推送接口需要)
- # 流量 PLC 映射(泵名称 -> PLC 地址,用于辅助判断运行状态)
- # key = pump_name(与 rtsp_streams 中的 pump_name 对应)
- flow_plc:
- A: C.M.RO1_FT_JS@out # A 泵进水流量点位
- B: C.M.RO2_FT_JS@out
- C: C.M.RO3_FT_JS@out
- D: C.M.RO4_FT_JS@out
- # 泵状态 PLC 点位(判断泵启停,启停后进入 15 分钟过渡期不检测)
- # key = pump_name, value = 点位列表
- # point: SCADA 系统中的点位地址, val=1 表示运行, val=0 表示停机
- pump_status_plc:
- A:
- - point: C.M.RO1_GYB@run
- name: RO高压泵A # 显示名称(用于日志)
- B:
- - point: C.M.RO2_GYB@run
- name: RO高压泵B
- C:
- - point: C.M.RO3_GYB@run
- name: RO高压泵C
- D:
- - point: C.M.RO4_GYB@run
- name: RO高压泵D
- # RTSP 拾音器流列表(每个流 = 一台拾音器 = 一个检测点)
- rtsp_streams:
- - name: RO高压泵A # 拾音器名称(日志和推送显示)
- url: rtsp://admin:hao123456@192.168.31.240:554/cam/realmonitor?channel=38&subtype=0 # RTSP 地址
- channel: 38 # 通道号
- device_code: 1#-1 # 设备编码(唯一标识,训练数据文件夹名、模型目录名)
- pump_name: A # 关联的泵名称(对应 pump_status_plc 的 key)
- # model_subdir: 1#-1 # 模型子目录(默认 = device_code,一般无需指定)
- - name: RO高压泵B
- url: rtsp://admin:hao123456@192.168.31.240:554/cam/realmonitor?channel=41&subtype=0
- channel: 41
- device_code: 1#-2
- pump_name: B
- - name: RO高压泵C
- url: rtsp://admin:hao123456@192.168.31.240:554/cam/realmonitor?channel=42&subtype=0
- channel: 42
- device_code: 1#-3
- pump_name: C
- - name: RO高压泵D
- url: rtsp://admin:hao123456@192.168.31.240:554/cam/realmonitor?channel=43&subtype=0
- channel: 43
- device_code: 1#-4
- pump_name: D
- # ----------------------------------------------------------
- # 音频采集参数
- # ----------------------------------------------------------
- audio:
- sample_rate: 16000 # 采样率 Hz(必须与训练时一致,勿改)
- file_duration: 60 # 每个音频文件时长(秒)
- segment_duration: 60 # FFmpeg 切片时长(秒)
- auto_cleanup: # 自动清理旧音频(节省磁盘)
- enabled: true
- delete_normal: true # 删除正常检测的音频
- keep_recent_count: 100 # 每设备保留最近 100 个文件
- # ----------------------------------------------------------
- # 异常检测参数
- # ----------------------------------------------------------
- prediction:
- batch_size: 64 # 推理批大小
- check_interval: 1.0 # 检查新文件间隔(秒)
- default_threshold: 0.01 # 默认阈值(模型未加载时使用)
- voting: # 滑动窗口投票(减少误报)
- enabled: true
- window_size: 5 # 窗口大小(5 个检测周期,约 5 分钟)
- threshold: 3 # 5 次中 3 次异常才判定为异常
- frequency_history: # 误差频率统计
- enabled: true
- history_minutes: 10 # 统计最近 10 分钟的异常频率
- energy_detection: # 音频能量检测(无 PLC 时用于判断泵启停)
- enabled: true
- skip_when_stopped: true # 泵停机时跳过检测
- save_anomaly_audio: # 保存异常音频(用于后续分析/训练)
- enabled: true
- save_dir: data/anomaly_detected
- cooldown_minutes: 15 # 同一设备异常音频保存冷却(避免重复保存)
- context_capture: # 上下文捕获(保存异常前后的音频)
- enabled: true
- pre_minutes: 2 # 异常前 2 分钟
- post_minutes: 2 # 异常后 2 分钟
- # ----------------------------------------------------------
- # 推送通知
- # ----------------------------------------------------------
- push_notification:
- enabled: true # 总开关
- alert_enabled: false # 是否推送告警(false = 只推心跳,不推异常告警)
- push_base_urls: # 推送基地址列表(每个 base_url/{project_id} 拼接)
- - label: "外网" # 标签(日志显示)
- url: "http://120.55.44.4:8900/api/v1/dumu/push-msg"
- - label: "内网"
- url: "http://192.168.60.8:8900/api/v1/dumu/push-msg"
- timeout: 30 # HTTP 超时(秒)
- retry_count: 2 # 失败重试次数
- cooldown_minutes: 15 # 同设备告警冷却时间(分钟)
- cooldown_same_type_hours: 24 # 同类型异常冷却(小时)
- cooldown_diff_type_hours: 1 # 不同类型异常冷却(小时)
- alert_aggregate: # 跨设备聚合告警
- enabled: true
- window_seconds: 300 # 聚合窗口(秒)
- min_devices: 2 # 至少 2 台设备同时异常才触发聚合告警
- # ----------------------------------------------------------
- # SCADA/PLC 接口(泵状态查询)
- # ----------------------------------------------------------
- scada_api:
- enabled: true # 是否启用 PLC 查询(false 时用音频能量判断启停)
- base_url: http://120.55.44.4:8900/api/v1/jinke-cloud/db/device/history-data # 历史数据接口
- realtime_url: http://47.96.12.136:8788/api/v1/jinke-cloud/device/current-data # 实时数据接口
- jwt_token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJRCI6NywiVXNlcm5hbWUiOiJhZG1pbiIsIkRlcCI6IjEzNSIsImV4cCI6MTc3NjExOTExNCwiaXNzIjoiZ2luLWJsb2cifQ.0HTtzHZjyd2mHo8VCy8icYROxmntRMuQhyoZsAYRL_M
- timeout: 10 # 查询超时(秒)
- # ----------------------------------------------------------
- # 人体检测抑制(有人在设备旁时抑制告警,减少误报)
- # ----------------------------------------------------------
- human_detection:
- enabled: false # 是否启用(需要独立的人体检测服务)
- db_path: /data/human_detector/detection_status.db # 人体检测状态 DB 路径
- cooldown_minutes: 5 # 检测到有人后抑制告警的时间(分钟)
|