WaterH

Intake
0ml
Sips
0
Temp
°C
Goal
0%
TimeAmountTemp
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

  1. Ruled out cloud interception — mitmproxy showed the app makes zero network calls. All data stays local over BLE.
  2. Discovered the bottle — BLE scan from a nearby Linux box found it advertising as WaterH-Boost-24oz.
  3. Mapped GATT services — standard Chinese BLE UART bridge. Notify on 0xFFE4, write on 0xFFE9.
  4. Fuzzed commands — sent every single-byte command 0x00–0x20, ASCII prefix pairs, and framed packets. Found that 0x04 triggers a full data dump.
  5. 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

GitHub →