Toca renovar nuestra báscula inteligente e integrar la Xiaomi Body Composition Scale S400 en Home Assistant.
Índice
Xiaomi Body Composition Scale S400
Durante muchos años he usado una báscula inteligente de Xiaomi (Mi Body Composition Scale 2) que se integraba fácilmente en Home Assistant… hasta que hace poco dejó de funcionar, y no he conseguido repararla.
Como me ha gustado mucho, tanto por su estética, su precio y la información que proporciona, he buscado un modelo actual con características similares.
En concreto, he comprado la Xiaomi Body Composition Scale S400 por 28€. Como mi modelo anterior, utiliza esos círculos de metal para enviar corrientes por tu cuerpo («impedancia bioeléctrica de doble frecuencia»), que le permiten estimar 25 valores de composición corporal (grasa corporal, masa muscular, contenido de agua, proteínas, densidad mineral ósea, grasa visceral…).
Integración en Home Assistant
Aunque es compatible con la integración Xiaomi BLE, integrar la Xiaomi Body Composition Scale S400 en HA tiene su «truco». Para conseguir que te reporte toda la información (y no solo la intensidad de señal), sigue estos pasos:
- En primer lugar, ten en cuenta que debes tener el Bluetooth disponible en tu instancia de HA (algo muy sencillo de hacer con una placa ESP32).
- Descarga e instala en tu dispositivo móvil la aplicación Xiaomi Home, vincula la báscula y pésate una vez (completando todo el proceso).
- Cierra completamente la app de Xiaomi Home, apaga el Bluetooth del móvil y vuelve a pesarte (para que no «compita» con el BT de HA). En Home Assistant, ve a Configuración > Dispositivos y servicios, y encontrarás una notificación indicando que ha sido descubierta.
- Al agregarla, únicamente verás una entidad que te indica la «Intensidad de señal». Para solucionarlo, vuelve a pesarte y busca una notificación que indica «Autenticación caducada…» entre tus reparaciones.

- Al hacer clic sobre la notificación, te dará dos alternativas para autenticarte en tu cuenta de Xiaomi. Te recomiendo que utilices la de «Introducir la clave de encriptación manualmente», ya que la autenticación con correo y contraseña falla mucho.
- Aquí tienes que introducir la «Clave de enlace» del dispositivo. Esta puedes obtenerla con el extractor de tokens de Xiaomi, descargando la última versión disponible del fichero ‘.exe’.
- Ejecuta el programa, teclea ‘q’ («using QR code»), copia la URL que aparece al final e introdúcela en tu navegador y haz clic en «Iniciar sesión».
- Vuelve a la consola anterior, y pulsa ‘enter’ (sin seleccionar ningún servidor). Esto te devolverá la información de todos tus dispositivos (incluyendo tu báscula). Copia el código del campo «BLE KEY» y pégalo en el campo «Clave de enlace» de Home Assistant.
- Pésate de nuevo, y observa como esta vez te proporciona más información.

Gestión de perfiles
Es posible que te hayas fijado en que una de las entidades que te proporciona la integración es el «Profile ID». Esto significa dos cosas:
- La báscula es capaz de discriminar entre distintas personas, en función del rango de peso. Puedes configurar los perfiles desde la aplicación de Xiaomi Home, en los ajustes del dispositivo, dentro de la opción «Administrar usuarios».
- Las entidades del peso y la impedancia siempre son las mismas. Por lo tanto, no puedes asignarlas a una persona concreta (si sois varios los que os pesáis en casa).
No obstante, esto lo podemos solucionar muy fácilmente. Para ello vamos a crear unos ayudantes que guarden la información de cada usuario, y usaremos una automatización que se fije en el «Profile ID» para saber a quién corresponden los datos:
- Ve a Configuración > Dispositivos y servicios > Ayudantes > Crear ayudante > Número, y crea 3 ayudantes por cada usuario:
- Scale Peso
- Scale Impedance Low
- Scale Impedance
- Ahora ve a Configuración > Automatizaciones y escenas > Crear automatización, y configúrala de la siguiente manera:
- El disparador va a ser de tipo «Estado», cuando el sensor de peso de la báscula cambie (por ejemplo, ‘sensor.body_composition_scale_0891_peso’).
- En las acciones, añade un bloque del tipo «Si-entonces» por cada usuario. La condición será que el «Profile ID» de la báscula coincida con el del usuario, y las acciones serán grabar los valores de los sensores en los ayudantes creados en el paso anterior.
- A continuación puedes ver un ejemplo del código, con 2 usuarios.
alias: Báscula
description: ""
triggers:
- trigger: state
entity_id:
- sensor.body_composition_scale_0891_peso
id: Cambio de peso
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id:
- Cambio de peso
sequence:
- if:
- condition: template
value_template: >-
{{ states('sensor.body_composition_scale_0891_profile_id') |
int == 1 }}
then:
- action: input_number.set_value
metadata: {}
target:
entity_id: input_number.scale_peso_tito
data:
value: |
{{ states('sensor.body_composition_scale_0891_peso') }}
- action: input_number.set_value
metadata: {}
target:
entity_id: input_number.scale_impedance_low_tito
data:
value: >
{{
states('sensor.body_composition_scale_0891_impedance_low')
}}
- action: input_number.set_value
metadata: {}
target:
entity_id: input_number.scale_impedance_tito
data:
value: >
{{ states('sensor.body_composition_scale_0891_impedancia')
}}
alias: Usuario 1 (Tito)
- if:
- condition: template
value_template: >-
{{ states('sensor.body_composition_scale_0891_profile_id') |
int == 2 }}
then:
- action: input_number.set_value
metadata: {}
target:
entity_id: input_number.scale_peso_anna
data:
value: |
{{ states('sensor.body_composition_scale_0891_peso') }}
- action: input_number.set_value
metadata: {}
target:
entity_id: input_number.scale_impedance_low_anna
data:
value: >
{{
states('sensor.body_composition_scale_0891_impedance_low')
}}
- action: input_number.set_value
metadata: {}
target:
entity_id: input_number.scale_impedance_anna
data:
value: >
{{ states('sensor.body_composition_scale_0891_impedancia')
}}
alias: Usuario 2 (Anna)
mode: single
- Por último, una vez que verifiques que todo funciona correctamente, desvincula la báscula de la app Xiaomi Home (o, mejor aún, desinstálala). De esta forma, el tráfico de información irá directo a Home Assistant (en lugar de a tu teléfono).
- De esta manera, además de tener un sensor individual para cada usuario, tendrás información persistente (que no se borra si pierde la conexión con la báscula).
¿Y los demás datos?
Quizás esperabas que tras integrar la Xiaomi Body Composition Scale S400 tuvieras disponibles esos 25 datos que se indican en sus especificaciones.
La realidad es que estas básculas no miden cada parámetro, sino que los calculan mediante fórmulas matemáticas, partiendo del peso y la impedancia eléctrica (enviando una corriente a través de los pies y midiendo la resistencia que oponen los tejidos).
La Xiaomi Body Composition Scale S400 mejora sobre modelos anteriores porque usa doble frecuencia (50 kHz y 250 kHz), lo que permite distinguir el agua intracelular de la extracelular con mayor precisión.
Entendido lo anterior, puedes usar integraciones como BodyMiScale para ampliar la información muy fácilmente:
- Ve a a HACS, busca «BodyMiscale«, haz clic en «Descargar» y reinicia Home Assistant.
- Cuando termine, ve a Configuración > Dispositivos y servicios > Añadir integración > BodyMiScale. En el asistente de configuración, rellena los datos de tu perfil (nombre, sexo, altura…). Asimismo, selecciona los sensores de peso e impedancia de cada usuario, y pulsa en «Enviar» para ver todos estos datos.


