Live data from Hacker News

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

didac.dev

11–20 of 35 posts

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

#14
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.

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

#15

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 a…

Just to be pedantic, was it reverse engineered? Or did it just extract it out of the apk? Those are very different things imo

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

#16

Withings has a full available API, I wrote a tool to just scrape what I need from the app at https://developer.withings.com/

You can also have a Webhook be delivered when you take a new measurement. I wrote a small script that syncs my weight to Garmin using python-garminconnect.

The experience integrating with Withings was really good. Garmin on the other hand seems to be actively hostile if you (as an end user) want to programmatically interact with their ecosystem.

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

#17
You can build your own scale with an ESP32 for like $25 in parts - Hx711, load cells, ESP32, and a handful of trivial components. I threw together one that sits under my gas bottle, so I know when it’s running low. Adding impedance would be a pretty trivial step.

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

#19
post #15

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 a…

Just to be pedantic, was it reverse engineered? Or did it just extract it out of the apk? Those are very different things imo

For me, it was reverse engineered. I am not an expert or even conversant in decompiling Android APKs. It took the decompiled Java (app was apparently written in Kotlin) and extracted all the necessary information.

Call it what you will, the point is I do not have the necessary skills to accomplish this task, but I was able to go from an APK to a working implementation that was controlling the lights in my RV in a couple of hours back in early April using whatever was the current version of Opus at the time. While I understand what it did to accomplish this, it might as well be magic for me, because it would take me months of free time to get to where it got.

It also wrote out documentation of the protocol so subsequent work would not require reading decompiled Java code.

Post reply on HN