Intake
0ml
Sips
0
Temp
—°C
Goal
0%
| Time | Amount | Temp |
|---|
Avg Daily
0ml
Best Day
0ml
Streak
0days
How this works
This dashboard displays live hydration data from a WaterH-Boost-24oz smart water bottle, reverse-engineered from its undocumented BLE protocol.
The process
- Ruled out cloud interception — mitmproxy showed the app makes zero network calls. All data stays local over BLE.
- Discovered the bottle — BLE scan from a nearby Linux box found it advertising as
WaterH-Boost-24oz. - Mapped GATT services — standard Chinese BLE UART bridge. Notify on
0xFFE4, write on0xFFE9. - Fuzzed commands — sent every single-byte command 0x00–0x20, ASCII prefix pairs, and framed packets. Found that
0x04triggers a full data dump. - Decoded the protocol — response comes as RT (status) + RP (config) + PT (sip history). Each sip record is 13 bytes: timestamp + intake_ml + temperature.
Architecture
Bottle --BLE--> fridge (collector) --HTTPS--> VPS (API + dashboard)
polling 30s water.syl.rest