- 改 Bundle ID rumeng-v1.0.Rumeng → syke.maomao.app - 显示名 如梦 → Syke - 头像换白图占位 - 删除沈晏头像图片、空目录、bridge 旧数据 - ServerConfig.swift 含明文 token,已加入 .gitignore
79 lines
2.3 KiB
Markdown
79 lines
2.3 KiB
Markdown
# SA255A 玩具控制协议
|
||
|
||
## 硬件信息
|
||
|
||
- 品牌:Svakom(司沃康偏欣)
|
||
- 型号:SA255A
|
||
- BLE 广播名:SA255A
|
||
- MAC:B7B76384-3586-0B4D-11E8-F633CEDBCEC8(可能随机变化)
|
||
|
||
## GATT 结构
|
||
|
||
| 服务 | UUID | 用途 |
|
||
|------|------|------|
|
||
| 控制服务 | `0000ffe0-0000-1000-8000-00805f9b34fb` | 震动控制 |
|
||
| 写特征 | `0000ffe1-0000-1000-8000-00805f9b34fb` | Write No Response |
|
||
| 通知特征 | `0000ffe2-0000-1000-8000-00805f9b34fb` | Notify(状态回传) |
|
||
| OTA服务 | `0000ae00-0000-1000-8000-00805f9b34fb` | 固件升级(禁止写入) |
|
||
|
||
## 震动指令格式
|
||
|
||
```
|
||
55 <func> 00 00 <mode> <intensity> 00
|
||
```
|
||
|
||
| 字节 | 含义 | 取值范围 |
|
||
|------|------|---------|
|
||
| [0] | 帧头 | `0x55`(固定) |
|
||
| [1] | 功能码 | `0x08` = 震动 |
|
||
| [2-3] | 保留 | `0x00 0x00` |
|
||
| [4] | 模式 | `0x01`-`0x03`(变化不大) |
|
||
| [5] | 强度 | `0x01`-`0x05`(实测差异不明显) |
|
||
| [6] | 保留 | `0x00` |
|
||
|
||
**示例**:
|
||
- 震动模式1 强度3:`55 08 00 00 01 03 00`
|
||
- 震动模式1 最低:`55 08 00 00 01 01 00`
|
||
|
||
## 停指令
|
||
|
||
**未知**。实测 `55 FE 08 00 00 00 00`、`55 08 00 00 01 00 00`、全零等均无效。当前用 **BLE 断开连接** 作为停止方式(玩具自动停)。
|
||
|
||
## Notify 回传格式
|
||
|
||
```
|
||
55 87 00 00 <mode> <intensity>
|
||
```
|
||
|
||
- `0x87` = 状态回传标志
|
||
- 仅回传当前运行模式/强度,**无压力/力反馈数据**
|
||
- 需要持久事件循环才能收到(已修复)
|
||
|
||
## 力反馈
|
||
|
||
**SA255A 不支持**。Notify 通道只有指令回显,无压力传感器读数。产品详情页的"力反馈"可能是营销措辞或仅官方 App 内部处理。
|
||
|
||
## 控制链路
|
||
|
||
```
|
||
Claude Code → toy.py → BLE bridge (:8796) → bleak → BLE → SA255A
|
||
↑ 权限白名单已配
|
||
```
|
||
|
||
- `python3 /tmp/CcCompanion/apns-server/toy.py scan` — 扫描
|
||
- `python3 /tmp/CcCompanion/apns-server/toy.py connect [addr]` — 连接
|
||
- `python3 /tmp/CcCompanion/apns-server/toy.py on [1-5]` — 震动
|
||
- `python3 /tmp/CcCompanion/apns-server/toy.py off` — 断开停
|
||
- `python3 /tmp/CcCompanion/apns-server/toy.py feedback` — 读 Notify
|
||
|
||
## BLE Bridge
|
||
|
||
- 端口:8796
|
||
- 持久事件循环(保证 Notify 回调)
|
||
- SessionStart hook 自动拉起
|
||
- 写入模式:Write Without Response
|
||
|
||
## 权限
|
||
|
||
`Bash(python3 */toy.py *)` 加入 `~/.claude/settings.json` allowlist,无需用户批准。
|