Skip to content

Commit b2ea12d

Browse files
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/ScaleFactory.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import com.health.openscale.core.bluetooth.scales.GattScaleAdapter
3636
import com.health.openscale.core.bluetooth.scales.HesleyHandler
3737
import com.health.openscale.core.bluetooth.scales.HoffenBbs8107Handler
3838
import com.health.openscale.core.bluetooth.scales.HuaweiAH100Handler
39+
import com.health.openscale.core.bluetooth.scales.HuaweiCH100SHandler
3940
import com.health.openscale.core.bluetooth.scales.IHealthHS3Handler
4041
import com.health.openscale.core.bluetooth.scales.InlifeHandler
4142
import com.health.openscale.core.bluetooth.scales.LinkMode
@@ -110,6 +111,7 @@ class ScaleFactory @Inject constructor(
110111
InlifeHandler(),
111112
IHealthHS3Handler(),
112113
HuaweiAH100Handler(),
114+
HuaweiCH100SHandler(),
113115
HoffenBbs8107Handler(),
114116
HesleyHandler(),
115117
ExingtechY1Handler(),

0 commit comments

Comments
 (0)