Cómo conectar una báscula Withings Body+ a Home Assistant con un ESP32, sin pasar por la nube

Fuentes: I connected my Withings Body+ to Home Assistant with an ESP32

Un usuario ha conseguido integrar su báscula Withings Body+ en Home Assistant sin depender de la nube de Withings, usando un microcontrolador ESP32 clásico y el firmware ESPHome. La motivación era eliminar el paso intermedio: aunque Home Assistant dispone de una integración oficial con Withings, los datos deben viajar antes por los servidores de la marca. El autor quería que las mediciones llegasen directamente a su sistema domótico.

El montaje no requiere abrir la báscula ni modificarla. Basta con colocar el ESP32 cerca y alimentarlo por USB. Tras cada pesaje, la Body+ envía la medición por Bluetooth al ESP32, que la reenvía por Wi-Fi a Home Assistant. Para evitar cualquier fuga, el autor eliminó la red Wi-Fi guardada en la báscula, de modo que el dispositivo ya no puede subir datos a Withings por sí mismo.

Un detalle técnico clave es el tipo de ESP32: la Body+ utiliza Bluetooth Classic, por lo que solo sirven los modelos originales de ESP32; las variantes ESP32-C3 y ESP32-S3, que únicamente soportan Bluetooth LE, no son compatibles.

La parte más compleja fue la ingeniería inversa. Con la ayuda de Codex (ejecutado sobre OpenCode), el autor analizó una versión antigua de la app de Withings para Android, comparó el protocolo Bluetooth con trabajos previos y generó un componente ESPHome en C++. El proceso consistió en un ciclo repetitivo de flashear firmware, subir a la báscula, volver con los registros y ajustar el código, hasta lograr que la asociación con la Body+ se completase.

La báscula identifica automáticamente a cada usuario mediante su ID interno, lo que permitió configurar dos perfiles en ESPHome: cada medición se asigna a sus sensores correctos (peso, grasa corporal, masa grasa, masa muscular, agua, masa ósea y masa libre de grasa). Para que los datos no desaparezcan al desconectar el ESP32, se añadieron sensores plantilla en Home Assistant que conservan el último valor.

El autor aclara que solo ha probado la solución con su Body+, dos perfiles y un ESP32 concreto, por lo que no se trata de una integración universal para cualquier báscula de Withings. El código aún no se ha publicado, aunque promete enlazarlo pronto.