feat(bridge): BLE 桥接能力——bridge_server.py(Windows原生) + BridgeTransport + --via/PPCLOCK_VIA,149 测试全绿

This commit is contained in:
agent committed 2026-07-28 14:23:30 +00:00
1 parent 17e2512f6a
commit 49b2010088
7 files changed
+658 -2

No files matched your search

+35 -1
View File
@@ -86,10 +86,44 @@ CLI 全部为单次执行语义,调度交给系统 cron:
结果自动写入 `docs/field-test-result.md`。
## BLE bridge(蓝牙在他机时)
当本机无蓝牙(或蓝牙经 USB/IP 透传不稳定)时,把 BLE 操作桥接到蓝牙物理所在机:
**服务端**(蓝牙所在机,如 Windows host-win;单文件,仅依赖 bleak):
```bash
pip install bleak
python tools/bridge_server.py --host 0.0.0.0 --port 8971
```
**客户端**(本机,全部 CLI 命令透明可用):
```bash
ppclock --via bridge://192.168.61.35:8971 --json scan
export PPCLOCK_VIA=bridge://192.168.61.35:8971 # 或环境变量一次设定
ppclock --json image photo.jpg --slot 0
PPCLOCK_VIA=bridge://192.168.61.35 .venv/bin/python tools/field_test.py
```
协议:JSONL over TCP(`ping/scan/connect/write/read/request_device_id/ota/close`),
OTA 进度以事件流回。仅限可信 LAN 使用(无鉴权)。
## 本机蓝牙经 USB/IP 透传的已知问题
大 MTU GATT 流量会触发断流(详见 DECISIONS.md 2026-07-28)。保留缓解:
`/sys/bus/usb/devices/1-1/power/control=on`(禁用 runtime PM)。重启后失效,固化:
```bash
echo 'ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="8087", ATTR{idProduct}=="0029", ATTR{power/control}="on"' | sudo tee /etc/udev/rules.d/99-ax200-pm.rules
```
根治请用上面的 bridge 模式。
## 开发
```bash
.venv/bin/python -m pytest tests/ -q # 132 测试
.venv/bin/python -m pytest tests/ -q # 149 测试
```
治理规则见 `GOVERNANCE.md`;计划见 `PLAN.md`;协议规范见 `docs/protocol.md`。