Browse Source

docs: 文档类移至 docs 目录,新增 README

luanshaofeng 1 week ago
parent
commit
894d757497

+ 121 - 0
README.md

@@ -0,0 +1,121 @@
+# ZoneAlarm - 车辆检测电子围栏系统
+
+基于 RK3576 NPU 的边缘计算电子围栏报警系统:多路 RTSP 摄像头视频接入,YOLO 目标检测 + NPU 推理,目标进入用户自定义电子围栏时触发网络继电器(声光报警器、警示灯等)并截图存档,提供 Web 平台进行实时预览、围栏绘制与报警查询。
+
+## 功能特性
+
+- **多路视频接入**:最多 8 路 RTSP 拉流(MPP 硬解 H.264/H.265),通道可 Web 热插拔增删改
+- **AI 检测**:RKNN NPU 推理(YOLOv5/v8 int8 模型),NMS 解析,报警类别可配置(车辆等)
+- **电子围栏**:每路视频支持多个任意多边形围栏,目标入侵即触发;Web 端绘制并持久化
+- **继电器控制**:智嵌物联网络继电器(TCP ASCII 协议),支持脉冲、周期闪烁、DI 输入联动
+- **报警策略**:脉冲 + 回合上限 + 重新武装(防抖动),每次动作留截图证据
+- **Web 平台**:登录会话/MJPEG 实时预览/围栏绘制/通道管理/报警与动作历史查询
+- **数据管理**:SQLite 报警历史 + 截图存档,按保留天数自动清理
+- **运维**:systemd 服务、开机自启、定时重启、版本化部署包
+
+## 技术栈
+
+| 组件 | 说明 |
+|---|---|
+| C++17 / CMake | 编译语言与构建系统 |
+| OpenCV | 图像处理、JPEG 编码、绘图 |
+| RKNN | Rockchip NPU 推理运行时 |
+| MPP | Rockchip 视频硬解码 |
+| FFmpeg | RTSP 协议拉流 |
+| cpp-httplib / nlohmann-json | Web 服务与 JSON |
+| SQLite | 报警历史存储 |
+| HTML/JS | Web 前端(MJPEG 预览) |
+
+## 项目结构
+
+```
+zone_alarm/
+├── src/                 # 源码
+│   ├── main.cpp         # 主程序:初始化、主循环、API 注册
+│   ├── rtsp_capture.*   # RTSP 拉流 + MPP 硬解(每通道一线程,断线重连)
+│   ├── rga_processor.*  # NV12→RGB 转换与 letterbox 缩放
+│   ├── yolo_detector.*  # RKNN 推理 + 后处理
+│   ├── fence_engine.*   # 围栏管理与射线法判定
+│   ├── relay_ctrl.*     # 网络继电器控制(持久 TCP、轮询、脉冲/周期模式)
+│   ├── alarm_history.*  # 截图与报警历史(SQLite,异步写盘)
+│   └── web_server.*     # HTTP 服务(登录会话、MJPEG、路由)
+├── include/             # 第三方头文件(httplib、json、rknn_api)
+├── config/              # 配置文件(config.json / fences.json)
+├── web/                 # Web 前端(index.html / login.html)
+├── models/              # RKNN/ONNX/PT 模型
+├── scripts/             # 模型导出脚本(export_onnx.py)
+├── docs/                # 文档(继电器控制手册、开发功能汇总表)
+├── deploy/              # 部署脚本(打包 install.sh / pack.sh)
+├── data/                # 运行数据(alarms.db / screenshots,不入库)
+└── zone_alarm.service   # systemd 服务文件
+```
+
+## 配置说明(config/config.json)
+
+| 项 | 默认值 | 说明 |
+|---|---|---|
+| `rtsp` | - | RTSP 通道列表(id/name/url),Web 端可热改 |
+| `model_path` | yolov5s_rk3576_int8.rknn | RKNN 模型路径 |
+| `input_size` | 640 | 模型输入尺寸 |
+| `conf_thresh` / `nms_thresh` | 0.35 / 0.45 | 置信度与 NMS 阈值 |
+| `skip_frames` | 3 | 抽帧推理间隔(每 N+1 帧推断一次) |
+| `alarm_classes` | 车辆类别列表 | 触发报警的检测类别 |
+| `web_port` / `web_auth` | 8080 / admin | Web 端口与登录凭据(登录后可改密) |
+| `fence_file` | config/fences.json | 围栏配置文件 |
+| `alarm_retention_days` | 30 | 报警历史保留天数 |
+| `auto_reboot` | 关闭 | 定时重启(周期/日期时间) |
+| `relay` | 192.168.1.253:1030 | 继电器主机/端口/地址、`pulse_sec` 脉冲、`rearm_sec` 重新武装、`alarm_max_sec` 回合上限、`di_bindings` 输入联动、`aliases` 通道别名、`y_config` 输出模式 |
+
+## 构建与运行
+
+```bash
+# 编译(自动解包项目内 SQLite 开发包到 .deps/)
+./build.sh
+
+# 运行(校验模型与配置后启动)
+./start.sh
+
+# 前台调试(可指定配置路径)
+./build/zone_alarm [config/config.json]
+```
+
+**工作目录要求**:程序按相对路径读取 `config/`、`web/`、`data/`、`models/`,必须在项目根目录启动。
+
+## 部署到目标机
+
+```bash
+# 开发机打包(自动编译、收集运行库、生成版本号与 CHANGELOG)
+bash deploy/pack.sh
+
+# 拷贝到目标机
+scp deploy/zone_alarm_v2.0_*_*.tar.gz root@目标机:/tmp/
+
+# 目标机安装(安装到 /opt/zone_alarm,注册 systemd,开机自启)
+cd /tmp && tar xzf zone_alarm_v2.0_*.tar.gz
+cd zone_alarm_v2.0_* && sudo bash install.sh
+```
+
+可选环境变量(install.sh):`ZA_PORT=80` Web 端口、`ZA_INSTALL_DIR=/opt/zone_alarm` 安装目录、`ZA_SKIP_SERVICE=1` 跳过注册服务。
+
+## Web 平台
+
+访问 `http://<设备IP>:8080`(默认账号 admin/admin,登录后可修改密码):
+
+- **实时预览**:各通道 MJPEG 画面,叠加围栏与检测框,报警目标红色高亮
+- **围栏配置**:绘制/编辑多边形围栏,绑定触发继电器通道
+- **继电器面板**:输出通道手动开合、周期闪烁模式、输入联动绑定、运行状态与动作历史
+- **通道管理**:增删改 RTSP 通道、连通性测试
+- **报警查询**:按时间/通道查询报警记录与截图,支持删除与清空
+- **系统设置**:抽帧间隔、置信度、保留天数、定时重启、立即重启
+
+## systemd 服务
+
+```bash
+systemctl status zone_alarm     # 状态
+journalctl -u zone_alarm -f     # 日志
+systemctl restart zone_alarm    # 重启
+```
+
+## 版本
+
+- **v2.0**(2026-09-03):当前版本。RK3576 NPU 推理 + MPP 硬解、电子围栏、继电器联动、Web 平台、SQLite 报警史

+ 0 - 0
【智嵌物联】4路网络继电器控制器用户使用手册 V1.1(1).pdf → docs/【智嵌物联】4路网络继电器控制器用户使用手册 V1.1(1).pdf


BIN
docs/功能开发汇总.xlsx


BIN
功能开发汇总.xlsx