Commit b2ea12d
authored
Add support for Honor Smart Scale CH100S (#1338)
Add a new BLE handler for the Honor Smart Scale CH100S (Chipsea CST34M97
chipset), which advertises as "CH100S" over Bluetooth.
Protocol details (reverse-engineered from companion app and BLE captures):
- Service 0xFAA0, TX char 0xFAA1 (write), RX char 0xFAA2 (notify)
- Measurement frames arrive as two 16-byte AES-CTR encrypted packets
(opcodes 0x0E + 0x8E), each decrypted separately with IV reset
- After AES decryption + MAC-XOR deobfuscation, frame layout:
[userId, weightLE, fatLE, yearLE, month, day, hour, min, sec, dow, impedanceLE]
- USER_INFO (CMD 0x09): MAC-XOR then AES-CTR encrypted, 14-byte payload
- Water%, muscle%, bone mass, BMR, and visceral fat are computed app-side
from impedance using BIA formulas (EtekcityLib)
Implemented features:
- Weight (LE uint16, tenths of kg)
- Body fat % (from scale, LE uint16, tenths of %)
- Impedance (LE uint16, ohms)
- Timestamp (from scale)
- Body composition (water, muscle, bone, BMR, visceral fat via EtekcityLib)
- Time sync, user sync, history read
Files changed:
- New: HuaweiCH100SHandler.kt
- Modified: ScaleFactory.kt (register new handler)1 parent 2c52f54 commit b2ea12d
2 files changed
Lines changed: 391 additions & 0 deletions
File tree
- android_app/app/src/main/java/com/health/openscale/core/bluetooth
- scales
Lines changed: 2 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
| 39 | + | |
39 | 40 | | |
40 | 41 | | |
41 | 42 | | |
| |||
110 | 111 | | |
111 | 112 | | |
112 | 113 | | |
| 114 | + | |
113 | 115 | | |
114 | 116 | | |
115 | 117 | | |
| |||
0 commit comments