This repository cotains my approach to reverse engineer and implement the protocol for communication with a "Crenot Gofit S2" scale in Python by using Bleak.
Once the protocol is understood the scale also can be added to the openScale app.
- Device name: Crénot Gofit S2 (new model 2024)
- Manufacturer: ICOMON (from BLE scanner)
- Model number: FG2210LB (from BLE scanner)
- App: Fitdays
- Chipset: Chipsea (based on Wireshark's name resolution of the devices physical address)
There also seem to be some identical scales with a different branding on the market (for example"Runstar FG2210").
- v0.3.0: Wait for BIA and verify that weights from different messages match. No BIA data yet.
- v0.2.0: Wait for weight to stabilize with a timeout and add command line arguments
- v0.1.1: Use asyncio.sleep() instead of dev. info requests to keep notifications incoming
- v0.1.0: The client is able to get the weight from the scale.
- Discover BLE devices
- Connect to scale
- Activate notifications/indications on characteristics 'FFB2', 'FFB3'
- Receive notifications for 'FFB2' (weight measurement) and process data:
- update weight value from bytes 6-8 (18 lowest bits)
- if byte 4 is 2 stop updating the values (weight got stable)
- If stable weight was received, now wait for 'FFB3' indication (sent when BIA is finished but BIA data not found yet) and process data:
- if byte 3 is 'a3' save weight value from bytes 5-7 (18 lowest bits)
- Verify that weight from 'FFB2' and 'FFB3' messages match