docs: solidify HM42 firmware protocol
This commit is contained in:
1 parent
2919ebe312
commit
578cd7fa20
3 files changed
+14
-5
No files matched your search
+11
-2
@@ -131,12 +131,21 @@ ASCII UTF-8 直发:`WIFI_SSID:{ssid};WIFI_PASS:{pass};CITY:{城市代码}`(
|
||||
|
||||
## 6. 标准会话流程
|
||||
|
||||
1. 扫描(namePrefix `NRF-`)→ 连接 → EPD service → RXTX service → 订阅两通道 notify。
|
||||
1. 扫描(namePrefix `NRF-`)→ 连接 → 读取 DIS 固件版本 → 按固件选择 RXTX 特征。`PP_da14585_4.2` 使用 `331F`(notify/write/read);`HM42_AIO_*` 使用 `1F1F`(write-only,不订阅 notify)。首选特征不存在时才回退到另一特征。
|
||||
2. (可选)`EFEF` 取设备 ID。
|
||||
3. 对时:`dd…` + `e2`。
|
||||
4. 操作:模式切换(+`e2`)/ 传图(`EA0{slot}` → 数据块×N → `01`/`AA`)/ 倒计时 / WiFi。
|
||||
4. 操作:模式切换(+`e2`)/ 传图 / 倒计时 / WiFi。
|
||||
5. 断线自动重连 ≤5 次。
|
||||
|
||||
### 6.1 图像协议的固件差异
|
||||
|
||||
| 固件家族 | RXTX | 400×300 单色平面 | EPD 图像会话 |
|
||||
|---|---|---|---|
|
||||
| `PP_da14585_4.2` / 未知 | `331F` | 黑白平面 | 旧序列:数据块 → `01`(小图 `AA`) |
|
||||
| `HM42_AIO_*` | `1F1F` | 黑白 15,000B + 全零红色 15,000B | `8001` → `0000` → `020000` → 双平面数据 → `0101` → RXTX `e2` |
|
||||
|
||||
HM42 的双平面和会话帧均为必需条件:缺红色平面会出现红屏噪点,缺会话帧会出现黑白噪点。400×300 双平面在 Windows BLE 实机约需 8 分钟;调用方不得依赖跨网络的单个长 HTTP 连接,应在 BLE 主机本地执行并持久化结果后再轮询。
|
||||
|
||||
## 7. 本地化(去云)清单 —— 已全部解决
|
||||
|
||||
| 云依赖 | 本地化方案 | 状态 |
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@ from ppclock import PPClient
|
||||
|
||||
| 方法 | 签名 | 说明 |
|
||||
|---|---|---|
|
||||
| `upload_image` | `async (source, slot=None, algo="atkinson", mono=False, size=(400,300), **adjust) -> dict` | source=路径或 PIL.Image;algo∈`none/floydsteinberg/atkinson/bayer/stucki/jarvis`;adjust∈`threshold/diffusion/brightness/contrast/saturation/rotate`;返回 `{"bytes_bw","bytes_red","small","slot"}`。小图(3500B/9000B)自动走 cod=04 |
|
||||
| `upload_image` | `async (source, slot=None, algo="atkinson", mono=False, size=(400,300), **adjust) -> dict` | source=路径或 PIL.Image;algo∈`none/floydsteinberg/atkinson/bayer/stucki/jarvis`;adjust∈`threshold/diffusion/brightness/contrast/saturation/rotate`;返回 `{"bytes_bw","bytes_red","small","slot"}`。小图(3500B/9000B)自动走 cod=04;`HM42_AIO_*` 会自动补齐双平面并使用厂商图像会话 |
|
||||
| `render_template` | `async (name, payload=None, slot=None, algo="atkinson") -> dict` | 6 模板本地渲染上传:`schedule/businesscard/memo/course/qrcode/custom`;payload 见 `src/ppclock/templates.py` docstring |
|
||||
|
||||
### 倒计时与文字
|
||||
|
||||
@@ -8,8 +8,8 @@ from typing import Iterator
|
||||
EPD_SERVICE_UUID = "13187b10-eba9-a3ba-044e-83d3217d9a38"
|
||||
EPD_CHAR_UUID = "4b646063-6264-f3a7-8941-e65356ea82fe"
|
||||
RXTX_SERVICE_UUID = "00001f10-0000-1000-8000-00805f9b34fb"
|
||||
RXTX_CHAR_UUID = "0000331f-0000-1000-8000-00805f9b34fb" # 活命令通道(h=57, notify+write+read)
|
||||
RXTX_CHAR_UUID_LEGACY = "00001f1f-0000-1000-8000-00805f9b34fb" # h=53 仅write,本设备不执行命令
|
||||
RXTX_CHAR_UUID = "0000331f-0000-1000-8000-00805f9b34fb" # PP 4.2 活命令通道(h=57, notify+write+read)
|
||||
RXTX_CHAR_UUID_LEGACY = "00001f1f-0000-1000-8000-00805f9b34fb" # HM42_AIO 活命令通道(h=53, write-only)
|
||||
FIRMWARE_REVISION_UUID = "00002a26-0000-1000-8000-00805f9b34fb"
|
||||
DEVICE_NAME_PREFIX = "NRF-"
|
||||
|
||||
|
||||
Reference in new issue
Block a user