Files
yovision/Sense
QiuSW 5208891e02
Harness governance / validate (push) Has been cancelled
Harness governance / validate (pull_request) Has been cancelled
feat(sense): establish M1 offline intake skeleton
2026-08-04 15:45:50 +08:00
..

Sense M1 骨架

本目录是 YoVision Sense 的无实机接入骨架。数据库保存期望态,ONVIF 和 MediaMTX 通过端口隔离;当前只能用确定性 fake、MediaMTX 假 HTTP 服务及可选合成 RTSP 源验证,不能据此宣称任何真实摄像头兼容性。

常用命令

cd Sense
go mod download
go generate ./internal/mtx
go test ./...
go vet ./...
go build -o bin/sense-api.exe ./cmd/sense-api
go run ./cmd/sense-api

Unix 将构建产物改为 bin/sense-api。服务默认监听 127.0.0.1:8080,SQLite 默认写入 Sense/data/sense.db,MediaMTX 控制 API 默认是 http://127.0.0.1:9997。当前只有 /healthz 与 /readyz,设备管理公共 API 尚未冻结。

常用环境变量:

变量 默认值 说明
SENSE_HTTP_ADDR 127.0.0.1:8080 HTTP 监听地址
SENSE_ALLOW_NON_LOOPBACK false 显式允许监听非回环地址;只应在可信网络及外部认证/防火墙就绪后开启
SENSE_DB_DSN file:data/sense.db SQLite DSN;凭据不得放入该值
SENSE_MEDIAMTX_URL http://127.0.0.1:9997 MediaMTX 控制 API;不得包含 userinfo
SENSE_RECONCILE_INTERVAL 5s 对账周期
SENSE_PROBE_INTERVAL 10s path 探活周期

MediaMTX v1.19.3 应作为独立二进制启动并只在可信网络开放 API。获取与 SHA-256 校验值见 docs/03-tech-stack.md。生成客户端使用固定版本工具和 vendored 官方 OpenAPI;internal/mtx/generated/client.gen.go 不可手改。

Windows 本地准备 MediaMTX(从仓库根目录执行):

$asset = "mediamtx_v1.19.3_windows_amd64.zip"
Invoke-WebRequest "https://github.com/bluenviron/mediamtx/releases/download/v1.19.3/$asset" -OutFile "$env:TEMP\$asset"
if ((Get-FileHash "$env:TEMP\$asset" -Algorithm SHA256).Hash.ToLowerInvariant() -ne "5d82148d1032a6a190d9909a2997d9989457aaadf49af87dd02cd4512d31bebe") { throw "MediaMTX checksum mismatch" }
Expand-Archive "$env:TEMP\$asset" -DestinationPath "$env:TEMP\yovision-mediamtx-v1.19.3" -Force
& "$env:TEMP\yovision-mediamtx-v1.19.3\mediamtx.exe" "Sense\deploy\mediamtx.yml"

Linux amd64 使用同版 mediamtx_v1.19.3_linux_amd64.tar.gz,SHA-256 为 a7ba21268fccda3ebc43fdad76b87fddb85ce77e725b5cb637bca724b5394fbe。不要把下载的二进制或摄像头凭据提交到仓库。