| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- # ============================================================
- # 锡山中荷 水厂配置文件
- # ============================================================
- # 使用方法: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 台设备同时异常才触发聚合告警
- # ----------------------------------------------------------
- # 项目模式调度(参观/检修/调试模式下自动暂停异响检测)
- # ----------------------------------------------------------
- project_mode:
- base_url: http://120.55.44.4:8900 # 平台 API 根地址
- poll_interval: 60 # 查询间隔(秒)
- request_timeout: 10 # 请求超时(秒)
- # ----------------------------------------------------------
- # 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://120.55.44.4:8900/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 # 检测到有人后抑制告警的时间(分钟)
- # ----------------------------------------------------------
- # 自动增量训练
- # ----------------------------------------------------------
- auto_training:
- enabled: True # 总开关(暂时关闭自动增训)
- data:
- keep_normal_days: 7 # 正常音频保留天数
- keep_anomaly_days: -1 # 异常音频保留天数(-1=永久)
- cleanup_time: "00:00" # 每日清理时间(0点)
- incremental:
- enabled: true
- schedule_time: "18:00" # 每日训练时间
- use_days_ago: 1 # 使用N天前的数据(1=昨天)
- sample_hours: 1 # 随机采样时长(小时),0=使用全部
- min_samples: 50 # 最少样本数,不足则跳过
- epochs: 30 # 训练轮数(配合早停,实际通常更少)
- learning_rate: 0.0001 # 学习率
- batch_size: 32 # 批大小(降低显存占用)
- early_stop_patience: 5 # 早停耐心值:连续N轮loss无改善则停止
- training_device: auto
- min_gpu_mem_mb: 512 # auto模式下GPU空闲显存低于此值(MB)时回退CPU
- model:
- backup_before_train: true # 训练前备份
- keep_backups: 7 # 保留备份数量
- auto_deploy: true # 自动部署新模型
- update_thresholds: true # 训练后更新阈值npy
- rollback_on_degradation: true # 训练后损失异常时自动回滚到备份
- rollback_factor: 2.0 # 新模型损失 > 旧阈值 * 此因子则判定为退化
- validation:
- enabled: true
- cold_start:
- enabled: true
- wait_hours: 2 # 等待收集数据时长
- min_samples: 100 # 最少样本数
|