Files
fire_leave_tool/动火离人业务逻辑.md
2026-05-12 15:45:50 +08:00

1.9 KiB

flowchart TD A[前端配置设备/检测区/参数] --> B[后端下发或本地生成 service.conf] B --> C[微服务启动] C --> D[读取 /usr/local/etc/service.conf] D --> E[按设备初始化]

E --> F1[启动 fire_leave 推理程序<br/>./yolov5 -m model]
E --> F2[启动 fire_check 推理程序<br/>./yolov5 -m fire_check -R]
E --> F3[启动测温程序<br/>run_thermometry.sh]

F1 --> G1[HTTP 回传人员检测结果]
F2 --> G2[HTTP 回传火焰检测结果]
F3 --> G3[TCP 回传温度值]

G1 --> H1[更新当前人数 PersonCount]
G3 --> H2[更新当前温度 Temperature]

H1 --> I1{PersonCount == 0?}
H2 --> I2{温度 > 阈值?}

I1 -->|是| J1[无人条件成立]
I2 -->|是| J2[超温条件成立]

J1 --> K{无人 + 超温<br/>是否同时成立?}
J2 --> K

K -->|否| K0[重置持续计时]
K -->|是| L[开始累计持续时间]

L --> M{持续时间 >= detection_time?}
M -->|否| L
M -->|是| N{是否在 alarm_time 冷却期?}

N -->|是| N0[不上报,继续监测]
N -->|否| O[触发 fire_leave 动火离人报警]

G2 --> P{检测到火焰<br/>ClassIdx=0 且 Number>0?}
P -->|否| P0[重置火焰计时]
P -->|是| Q[累计火焰持续时间]
Q --> R{持续时间 >= fire_check detection_time?}
R -->|否| Q
R -->|是| S[触发 fire_check 火焰报警]

O --> T[查找报警前后视频片段]
S --> T

T --> U[拼接约30秒报警视频]
U --> V[复制到 /data/upload]
V --> W[上传视频到后端/Nginx]
W --> X[WebSocket 上报告警事件]
X --> Y[后端转发前端展示]

Z1[GPIO按钮] --> Z2[目标业务:暂停 fire_leave 上报]
Z2 --> Z3[暂停期内人员离开报警不上报]
Z3 --> K

Z2 -.不影响.-> P

WS1[WebSocket /dhlr/alert] --> BEEP[控制蜂鸣器 GPIO109]
WS2[WebSocket /dhlr/forbid_time] --> Z2