rtsp_config_xishan.yaml 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. # ============================================================
  2. # 锡山中荷 水厂配置文件
  3. # ============================================================
  4. # 使用方法:python tool/migrate_yaml_to_db.py --yaml 本文件路径 --force
  5. # 导入后可通过 API(:8080)在线修改,无需再编辑此文件
  6. # ============================================================
  7. # ----------------------------------------------------------
  8. # 水厂列表(一个 YAML 文件只配一个水厂)
  9. # ----------------------------------------------------------
  10. plants:
  11. - name: 锡山中荷 # 水厂名称(用于日志和推送显示)
  12. enabled: true # 是否启用该水厂的检测
  13. project_id: 92 # 平台项目 ID(推送接口需要)
  14. # 流量 PLC 映射(泵名称 -> PLC 地址,用于辅助判断运行状态)
  15. # key = pump_name(与 rtsp_streams 中的 pump_name 对应)
  16. flow_plc:
  17. A: C.M.RO1_FT_JS@out # A 泵进水流量点位
  18. B: C.M.RO2_FT_JS@out
  19. C: C.M.RO3_FT_JS@out
  20. D: C.M.RO4_FT_JS@out
  21. # 泵状态 PLC 点位(判断泵启停,启停后进入 15 分钟过渡期不检测)
  22. # key = pump_name, value = 点位列表
  23. # point: SCADA 系统中的点位地址, val=1 表示运行, val=0 表示停机
  24. pump_status_plc:
  25. A:
  26. - point: C.M.RO1_GYB@run
  27. name: RO高压泵A # 显示名称(用于日志)
  28. B:
  29. - point: C.M.RO2_GYB@run
  30. name: RO高压泵B
  31. C:
  32. - point: C.M.RO3_GYB@run
  33. name: RO高压泵C
  34. D:
  35. - point: C.M.RO4_GYB@run
  36. name: RO高压泵D
  37. # RTSP 拾音器流列表(每个流 = 一台拾音器 = 一个检测点)
  38. rtsp_streams:
  39. - name: RO高压泵A # 拾音器名称(日志和推送显示)
  40. url: rtsp://admin:hao123456@192.168.31.240:554/cam/realmonitor?channel=38&subtype=0 # RTSP 地址
  41. channel: 38 # 通道号
  42. device_code: 1#-1 # 设备编码(唯一标识,训练数据文件夹名、模型目录名)
  43. pump_name: A # 关联的泵名称(对应 pump_status_plc 的 key)
  44. # model_subdir: 1#-1 # 模型子目录(默认 = device_code,一般无需指定)
  45. - name: RO高压泵B
  46. url: rtsp://admin:hao123456@192.168.31.240:554/cam/realmonitor?channel=41&subtype=0
  47. channel: 41
  48. device_code: 1#-2
  49. pump_name: B
  50. - name: RO高压泵C
  51. url: rtsp://admin:hao123456@192.168.31.240:554/cam/realmonitor?channel=42&subtype=0
  52. channel: 42
  53. device_code: 1#-3
  54. pump_name: C
  55. - name: RO高压泵D
  56. url: rtsp://admin:hao123456@192.168.31.240:554/cam/realmonitor?channel=43&subtype=0
  57. channel: 43
  58. device_code: 1#-4
  59. pump_name: D
  60. # ----------------------------------------------------------
  61. # 音频采集参数
  62. # ----------------------------------------------------------
  63. audio:
  64. sample_rate: 16000 # 采样率 Hz(必须与训练时一致,勿改)
  65. file_duration: 60 # 每个音频文件时长(秒)
  66. segment_duration: 60 # FFmpeg 切片时长(秒)
  67. auto_cleanup: # 自动清理旧音频(节省磁盘)
  68. enabled: true
  69. delete_normal: true # 删除正常检测的音频
  70. keep_recent_count: 100 # 每设备保留最近 100 个文件
  71. # ----------------------------------------------------------
  72. # 异常检测参数
  73. # ----------------------------------------------------------
  74. prediction:
  75. batch_size: 64 # 推理批大小
  76. check_interval: 1.0 # 检查新文件间隔(秒)
  77. default_threshold: 0.01 # 默认阈值(模型未加载时使用)
  78. voting: # 滑动窗口投票(减少误报)
  79. enabled: true
  80. window_size: 5 # 窗口大小(5 个检测周期,约 5 分钟)
  81. threshold: 3 # 5 次中 3 次异常才判定为异常
  82. frequency_history: # 误差频率统计
  83. enabled: true
  84. history_minutes: 10 # 统计最近 10 分钟的异常频率
  85. energy_detection: # 音频能量检测(无 PLC 时用于判断泵启停)
  86. enabled: true
  87. skip_when_stopped: true # 泵停机时跳过检测
  88. save_anomaly_audio: # 保存异常音频(用于后续分析/训练)
  89. enabled: true
  90. save_dir: data/anomaly_detected
  91. cooldown_minutes: 15 # 同一设备异常音频保存冷却(避免重复保存)
  92. context_capture: # 上下文捕获(保存异常前后的音频)
  93. enabled: true
  94. pre_minutes: 2 # 异常前 2 分钟
  95. post_minutes: 2 # 异常后 2 分钟
  96. # ----------------------------------------------------------
  97. # 推送通知
  98. # ----------------------------------------------------------
  99. push_notification:
  100. enabled: true # 总开关
  101. alert_enabled: false # 是否推送告警(false = 只推心跳,不推异常告警)
  102. push_base_urls: # 推送基地址列表(每个 base_url/{project_id} 拼接)
  103. - label: "外网" # 标签(日志显示)
  104. url: "http://120.55.44.4:8900/api/v1/dumu/push-msg"
  105. - label: "内网"
  106. url: "http://192.168.60.8:8900/api/v1/dumu/push-msg"
  107. timeout: 30 # HTTP 超时(秒)
  108. retry_count: 2 # 失败重试次数
  109. cooldown_minutes: 15 # 同设备告警冷却时间(分钟)
  110. cooldown_same_type_hours: 24 # 同类型异常冷却(小时)
  111. cooldown_diff_type_hours: 1 # 不同类型异常冷却(小时)
  112. alert_aggregate: # 跨设备聚合告警
  113. enabled: true
  114. window_seconds: 300 # 聚合窗口(秒)
  115. min_devices: 2 # 至少 2 台设备同时异常才触发聚合告警
  116. # ----------------------------------------------------------
  117. # SCADA/PLC 接口(泵状态查询)
  118. # ----------------------------------------------------------
  119. scada_api:
  120. enabled: true # 是否启用 PLC 查询(false 时用音频能量判断启停)
  121. base_url: http://120.55.44.4:8900/api/v1/jinke-cloud/db/device/history-data # 历史数据接口
  122. realtime_url: http://47.96.12.136:8788/api/v1/jinke-cloud/device/current-data # 实时数据接口
  123. jwt_token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJRCI6NywiVXNlcm5hbWUiOiJhZG1pbiIsIkRlcCI6IjEzNSIsImV4cCI6MTc3NjExOTExNCwiaXNzIjoiZ2luLWJsb2cifQ.0HTtzHZjyd2mHo8VCy8icYROxmntRMuQhyoZsAYRL_M
  124. timeout: 10 # 查询超时(秒)
  125. # ----------------------------------------------------------
  126. # 人体检测抑制(有人在设备旁时抑制告警,减少误报)
  127. # ----------------------------------------------------------
  128. human_detection:
  129. enabled: false # 是否启用(需要独立的人体检测服务)
  130. db_path: /data/human_detector/detection_status.db # 人体检测状态 DB 路径
  131. cooldown_minutes: 5 # 检测到有人后抑制告警的时间(分钟)