feat: 设备配置二维码——设备池里出码,Agent 扫一下配好
配合设备端 Agent 新增的「扫码配置」:人在机架前、设备还没接进平台时,
不用插线也不用在手机上打字输地址/令牌(还容易漏指纹)。
- `GET /api/devices/qrcode?serial=`:生成配置二维码(PNG data-url),内容为
{"v":1,"server":…,"token":…,"fingerprint":…,"name":…}
* 前置:设备端商店已启用(令牌从那儿来),否则 400 并说明去哪儿开
* `warn` 非空必须显示:①用 localhost 打开平台时,二维码里的地址手机会连不上
(提示改用局域网地址,_lan_ip() 优先挑 192.168/10.x,**不用** gethostbyname ——
那会返回 Tailscale 的 100.x 或 docker 的 172.17,手机根本连不上)
②设备还没采到指纹 → 扫完平台认不出是哪台
- 设备池每行加「二维码」按钮 → 弹窗显示二维码 + 设备名/地址 + 可展开看原始内容
- requirements 加 qrcode(纯 Python,配合已有的 Pillow 出 PNG,不引前端二维码库)
- 文档:API.md §6.2.2 新增、§6.2.1 名称呈现表补齐(剪贴板/安装弹窗/版本管理/
安装进度四处);DEVICE_AGENT.md §5.3 新增二维码内容格式(设备端契约)
验证:二维码用 cv2.QRCodeDetector 解回来与 payload 完全一致;手机上实测——
扫 A07 的码 → 相机启动 → 解码 → 保存 → 立刻拉清单,平台认出「A07」。
This commit is contained in:
+22
-2
@@ -195,7 +195,7 @@ adb -s <serial> shell am start -n <pkg>/.ClipActivity --es text_b64 <base64(UTF-
|
||||
- 平台判定失败的方式:`am start` 输出里有 `unable to resolve Intent` / `does not exist`
|
||||
→ 视为"设备未安装 Agent"
|
||||
|
||||
### 5.2 设备身份显示(待设备端实现)
|
||||
### 5.2 设备身份显示(设备端已实现)
|
||||
|
||||
```bash
|
||||
adb -s <serial> shell am start -n <pkg>/.InfoActivity \
|
||||
@@ -206,7 +206,27 @@ adb -s <serial> shell am start -n <pkg>/.InfoActivity \
|
||||
|
||||
要求:全屏大字、再次调用可覆盖内容、`close` 可关闭、不驻留前台。
|
||||
|
||||
### 5.3 一次性配置下发(建议设备端实现)
|
||||
### 5.3 扫码配置(设备端已实现)
|
||||
|
||||
平台「设备池」里点某台设备的「**二维码**」→ 生成一张二维码 → 手机上的 Agent 点
|
||||
「扫码配置」扫一下,就把 **平台地址 + 设备令牌 + 这台设备的指纹** 一次写入。
|
||||
|
||||
**二维码内容**(JSON 文本,设备端按字段名解析,多余的字段忽略):
|
||||
```json
|
||||
{"v":1,"server":"http://192.168.20.250:18050","token":"<设备令牌>",
|
||||
"fingerprint":"s8o7nrt8pbzhfadq","name":"A07"}
|
||||
```
|
||||
|
||||
- `v` = 格式版本(当前 1);`fingerprint` 可能为空串(平台还没采到指纹)
|
||||
- 设备端扫到**不是本平台的二维码**时应提示并继续扫,不要静默失败
|
||||
- 平台侧生成接口:`GET /api/devices/qrcode?serial=<设备地址>`(需登录 + 设备权限),
|
||||
返回 `{png( base64 data-url), payload, warn}`;`warn` 非空时要显示出来
|
||||
(最常见的是"你现在用 localhost 打开平台,二维码里的地址手机会连不上")
|
||||
|
||||
> 与 §5.4 的 adb 下发**等价、互为补位**:设备已经连上平台时用 adb 批量下发(零操作),
|
||||
> 人在机器旁或设备还没接进来时用扫码(不用线、不用打字)。
|
||||
|
||||
### 5.4 一次性配置下发(adb,建议设备端实现)
|
||||
|
||||
```bash
|
||||
adb -s <serial> shell am start -n <pkg>/.ConfigActivity \
|
||||
|
||||
Reference in New Issue
Block a user