From 0e2a6a351fe36d75922f8357c4e744f97eb8ddd1 Mon Sep 17 00:00:00 2001 From: agent Date: Fri, 24 Jul 2026 11:04:34 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20README=20=E4=BD=BF=E7=94=A8=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..ed1ab65 --- /dev/null +++ b/README.md @@ -0,0 +1,84 @@ +# ppclock — 4.2寸墨水屏设备离线 CLI 上位机 + +替代厂商 Web 上位机(mspppclock.tech)与 Android App 的**完全离线**命令行工具, +面向 agent 编排设计:所有命令支持 `--json` 机器可读输出,`batch` 子命令支持 JSONL 批量执行。 + +设备:4.2" 400×300 黑/白/红三色墨水屏,Dialog DA14585 BLE SoC(广播名前缀 `NRF-`)。 + +## 安装 + +```bash +python3 -m venv .venv +.venv/bin/pip install -e . # 依赖:bleak、pillow(离线 wheel 即可,运行零网络) +.venv/bin/ppclock --help +``` + +运行环境要求:Linux + 蓝牙适配器(bleak/D-Bus)。**不需要互联网**。 + +## 快速开始 + +```bash +ppclock scan # 扫描设备(NRF- 前缀) +ppclock --mac AA:BB:CC:DD:EE:FF time # 对时(免扫描直连) +ppclock mode clock1 # 时钟模式一 +ppclock image photo.jpg --slot 0 # 传图到图一(默认 atkinson 抖动+三色) +ppclock template custom --data '{"text":"你好【世界】"}' +ppclock countdown 2026-12-31 --prefix "目标" # 倒计时 +ppclock batch job.jsonl --json # 批量执行(单连接) +``` + +## 命令一览 + +| 命令 | 功能 | 对应 Web 上位机功能 | +|------|------|---------------------| +| `scan` | 扫描设备 | 搜索设备 | +| `time [ISO]` | 对时 | 设置时间 | +| `mode NAME` | clock1-3/calendar1-3/image0-3/tricolor/mono | 时钟/日历/图片模式、三色/黑白 | +| `toggle NAME` | invert/font/rotate180/hour_format/clock_color | 反色/字体/旋转/12-24h/颜色 | +| `clear` | 刷屏 | 刷屏 | +| `image PATH` | 传图(6 种抖动+亮度/对比度/饱和度/旋转/缩放+槽位) | 4.2传图/上传图片 | +| `template NAME` | 本地渲染 6 模板并上传 | 模板系统 | +| `countdown` | 倒计时日期/前缀文字/日历中文字/关闭 | 倒计时 | +| `sleep` | 休眠时段 | 休眠 | +| `parking NUM` | 停车牌 | 停车牌 | +| `rotation` | 轮播数量/间隔 | 轮播 | +| `lut HEX` | 红/黑 LUT 校准 | LUT | +| `activate` | 激活码下发/读取设备 ID | 激活 | +| `wifi` | WiFi+城市配置 | WiFi 配置 | +| `raw HEX` | 高级命令直发 | 高级命令 | +| `batch FILE` | JSONL 批量(单连接) | —(增强) | + +## JSON 输出契约(`--json`) + +成功:`{"ok": true, "cmd": "", "data": {...}}` +失败:`{"ok": false, "cmd": "", "error": ""}` +退出码:0 成功 / 1 参数错误 / 2 传输(BLE)错误 / 3 其他错误。 + +## batch JSONL 格式 + +每行一条命令:`{"argv": ["mode", "clock1"]}`,输出 `{"ok":true,"cmd":"batch","data":{"results":[...]}}`。 +整个批量在**一次 BLE 连接**内完成;`--stop-on-error` 遇错即停。 + +## 定时推送(增强) + +CLI 全部为单次执行语义,调度交给系统 cron: + +```cron +# 每小时整点更新倒计时画面 +0 * * * * /path/.venv/bin/ppclock --mac AA:BB:CC:DD:EE:FF countdown 2026-12-31 --prefix 目标 --json >> /var/log/ppclock.log 2>&1 +``` + +## 离线说明 + +- 激活:原厂流程依赖云端 `key_generator.php`。本工具的本地化方案见 + `docs/firmware-analysis.md`(激活校验分析)与 `docs/protocol.md` §7。 +- 模板渲染、二维码生成(本地 qrcode 库)、抖动算法全部本地实现,无任何 CDN/服务器依赖。 +- 天气(CITY 代码)属原厂云功能,本地化范围外;`wifi` 命令仅透传配置。 + +## 开发 + +```bash +.venv/bin/python -m pytest tests/ -q # 104 测试 +``` + +治理规则见 `GOVERNANCE.md`;计划见 `PLAN.md`;协议规范见 `docs/protocol.md`。