feat(大屏): 视频识别直连 park-vision + 绑定轮询/二维码

- config.js 增 getVisionApiBase(),优先绑定下发的本园区 vision_api(经 tenant info)
- main.jsx bootstrap 读 /park/api/config 的 vision_api
- useVisionDetection 帧 POST 到独立 vision 服务;未配置识别整体禁用
- BindScreen 连接码轮询(无码5s/有码30min) + 渲染二维码(qrcode.react)、绑定后入园区
- 部署文档补 vision_api/识别服务说明
This commit is contained in:
Pine
2026-08-25 01:52:53 +08:00
parent ba34f40baa
commit 1566477b97
9 changed files with 121 additions and 22 deletions
+21 -1
View File
@@ -11,13 +11,15 @@
"mqtt_url": "ws://192.168.1.3:8083/mqtt",
"mqtt_username": "dpm",
"mqtt_password": "123456",
"voice_url": "ws://192.168.1.3:8765/v1/realtime"
"voice_url": "ws://192.168.1.3:8765/v1/realtime",
"vision_api": "http://192.168.1.9:8091"
}
```
- `api_base`server-core 统一入口园区地址(`http://<IP>:8090/park`;生产 `https://opc.pinesound.cn/park`),大屏 API/媒体/OTA 都走它
- `mqtt_url`EMQX Broker 的 **WebSocket** 地址(端口 8083
- `mqtt_username/password`Broker 鉴权账号(默认 dpm / 123456,与后端 .env 一致)
- `vision_api`:**可选**。视频识别独立服务(code/park-vision`http://<IP>:8091`)。不填=视频识别禁用(摄像头不开启)。也可经 server-core `/park/api/config` 下发(见「三、视频识别」)。
地址解析优先级:**config.json > 后端 /api/config > 构建默认(192.168.1.9**。
@@ -76,3 +78,21 @@ Test-NetConnection 192.168.1.3 -Port 8083
- 应用日志打印 `[bootstrap] config.json MQTT -> ...` = config.json 生效
- 打印 `[bootstrap] /api/config MQTT -> ...` = 后端下发
- 两者都没有 = 两个来源都不可达,请检查 IP/防火墙
## 三、视频识别(可选,独立 park-vision 服务)
视频识别能力已从 server-core 剥离为**独立项目 `code/park-vision`**YOLO 帧识别 + LLM 场景语义),
server-core `/park` 不再承接识别请求(`/park/api/vision/frame|llm` 已移除,仅保留遥测 `/api/vision/event`)。
**配置方式(二选一)**,未配置则视频识别整体禁用(摄像头不开启、页面显示「手势识别未启用」):
1. **config.json(部署机)**`"vision_api": "http://<IP>:8091"`
2. **server-core 全局(admin 端)**:运营端「视频识别服务」页启用+填地址 → 写 `park_settings`
大屏启动时从 `GET /park/api/config``vision_api`enabled=1 才下发)
**部署完整识别链路**
```bash
# 独立识别服务(需 torch/ultralytics + 模型 yolov8n-face.pt / yolov8n-pose.pt 置于 models/
cd code/park-vision && uv sync && uv run uvicorn app.main:app --host 0.0.0.0 --port 8091
# 放模型后再启动;缺模型时 /vision/frame 返回「模型未加载」
```