I Cut My Withings Scale Out of the Cloud with an ESP32

I Connected My Withings Body+ to Home Assistant with an ESP32

I Cut My Withings Scale Out of the Cloud with an ESP32

A developer reverse-engineered the Bluetooth protocol of his Withings Body+ scale so it syncs directly to Home Assistant via an ESP32, bypassing the Withings cloud entirely. He used an AI coding agent to decompile the Withings Android app and build a custom ESPHome component, testing it with repeated weigh-ins. The result: weight, body fat, and other metrics update locally for two profiles, with no Wi-Fi needed on the scale.

It was a lot of spend tokens when the official integration already exists, but now it works exactly how I wanted.
  1. AshleyGrant

    Using AI to reverse engineer undocumented Bluetooth protocols has been a godsend for me. We have an RV that came with a "Smart RV" system from BMPro that controls all of the lights, the air conditioning, starting the generator, leveling, slideouts, and other stuff.

    The BMPro app is... well, it's like they actively worked to make it terrible.

    I put up with it for 2 years and then had the bright idea to throw the APK at Claude Opus earlier this year. I now no longer have to use their terrible app as it reverse engineered the Bluetooth protocol and I can either use the custom-built Android app, website hosted on GitHub Pages, or the Home Assistant app I built using AI.

    It's not perfect, and it has bugs, but it is less buggy than their app. I've been busy at work lately, so I haven't had a chance to resolve the bugs, but I'll get around to it.

    I ended up also using Opus to patch the original APK to fix several bugs and inexplicably bad UI choices they made. I still prefer to use my own app, but I have the patched app as a fallback.

  2. dgacmu

    If you have a eufy scale, you can do this with no LLM needed - just set up an esp32 Bluetooth proxy, add it to home assistant, and then use the EufyLife integration someone already made. I did this recently with my scale to avoid having to sync it to my phone, go to the cloud, fetch data from the cloud, etc., and it's working fantastically. I have a little Home Assistant integration that pokes scale updates to a Python script running locally that provides a UI I like.

    Huge fan of running it this way.

    (Yesterday I ordered a more commercial, polished-looking esp32 Bluetooth proxy integrated into a smart plug - athome brand - but it's the same functionality, just in a nicer package than having a USB thing dangling from my outlet)

  3. sowbug

    I'm planning on doing something similar with a $150 treadmill that uses an app called "Gymax." I don't want the app or its adorably embryonic social network. I just want three buttons: slow, fast, and really fast for 60 seconds.

More from this day

2026-09-07