About
BodyMiScale calculates body composition metrics from a weight sensor and optional impedance data in Home Assistant. It creates sensors such as BMI, basal metabolism, body fat, bone mass, body score and extracellular water, all computed locally without sending data to external services. Three calculation modes are available: one matching the Zepp Life app, one using WHO and Schofield formulas, and a dual-frequency mode for S400 scales at 50 and 250 kHz. It works with any weight sensor already in Home Assistant, not only a specific scale. Several people can share one scale, with measurements assigned by interactive notification, weight range, nearest current weight or profile ID. Setup is done in the UI, and it needs the Marketplace (HACS on 2026.10 and older).
Automatic summary of the README and code of dckiller51/bodymiscale. Something wrong, or are you the maintainer and want your own text here? Get in touch
Supports
Works locally Talks to your devices on your own network. No vendor cloud in between.
From the Marketplace Installed through the Marketplace, formerly HACS.
Actively maintained Its author released or pushed a change in the last six months.
Provides
- Sensors
Setting it up
Install it from the Marketplace and restart Home Assistant, then add it under Settings, Devices and services.
User identity
- Date of birth
- Gender
- Name
Operating modes
- Calculation methodChoose according to your scale. Mi Scale (single frequency): Xiaomi — Zepp Life = same values as the Zepp Life app, Scientific = WHO / Schofield formulas. S400 (dual frequency): Scientific = S400 scientific formulas, Xiaomi Home = same values as the Xiaomi Home app.
- Height (cm)
- Impedance modeNone: scale without impedance sensor. Standard: single-frequency (Xiaomi Gen2). Dual-frequency S400: two sensors at 50 kHz and 250 kHz.
- User identification methodHow bodymiscale determines which user to assign a measurement to. Choose "None" if you use dedicated sensors per person.
Profile settings
- Initial weight (kg)Current weight used to initialize this user when nearest-weight matching is first enabled.
- Nearest-weight tolerance (kg)Maximum allowed distance between the sensor value and the user's current weight. Default is ±5 kg.
- Mobile devices receiving the notificationThe phones that will receive an interactive notification after each weighing. Select several to let anyone in the household confirm. Tap your name to confirm the measurement.
- Maximum weight to notify (optional)Notify this user only if the measured weight is less than or equal to this value. Leave empty to always notify.
- Minimum weight to notify (optional)Notify this user only if the measured weight is greater than or equal to this value. Leave empty to always notify.
- Profile ID (1–5)
- Range maximum weight (kg, excluded)Upper bound, excluded from the range. If the next user starts at 65 kg, enter at most 64.99 kg here.
- Range minimum weight (kg, included)Lower bound, included in the range. The measurement is assigned to this user if their weight is ≥ this value.
Sensor selection
- Impedance sensor (single-frequency)Single impedance value provided by your scale.
- High-frequency impedance sensor (250 kHz)Impedance measured at 250 kHz (S400).
- Low-frequency impedance sensor (50 kHz)Impedance measured at 50 kHz (S400).
- Profile ID sensor (Scale ID)
- Stabilization sensorBinary sensor (binary_sensor) provided by the scale indicating that a stable measurement is available.
- Weight sensor
After setup
- Calculation methodChoose according to your scale. Mi Scale (single frequency): Xiaomi — Zepp Life = same values as the Zepp Life app, Scientific = WHO / Schofield formulas. S400 (dual frequency): Scientific = S400 scientific formulas, Xiaomi Home = same values as the Xiaomi Home app.
- Height (cm)
- Impedance modeNone: scale without impedance sensor. Standard: single-frequency (Xiaomi Gen2). Dual-frequency S400: two sensors at 50 kHz and 250 kHz.
- User identification methodHow bodymiscale determines which user to assign a measurement to. Choose "None" if you use dedicated sensors per person.
- Initial weight (kg)Current weight used to initialize this user when nearest-weight matching is first enabled.
- Nearest-weight tolerance (kg)Maximum allowed distance between the sensor value and the user's current weight. Default is ±5 kg.
- Mobile devices receiving the notificationThe phones that will receive an interactive notification after each weighing. Select several to let anyone in the household confirm. Tap your name to confirm the measurement.
- Maximum weight to notify (optional)Notify this user only if the measured weight is less than or equal to this value. Leave empty to always notify.
- Minimum weight to notify (optional)Notify this user only if the measured weight is greater than or equal to this value. Leave empty to always notify.
- Profile ID (1–5)
- Range maximum weight (kg, excluded)Upper bound, excluded from the range. If the next user starts at 65 kg, enter at most 64.99 kg here.
- Range minimum weight (kg, included)Lower bound, included in the range. The measurement is assigned to this user if their weight is ≥ this value.
- Impedance sensor (single-frequency)Single impedance value provided by your scale.
- High-frequency impedance sensor (250 kHz)Impedance measured at 250 kHz (S400).
- Low-frequency impedance sensor (50 kHz)Impedance measured at 50 kHz (S400).
- Profile ID sensor (Scale ID)
- Stabilization sensorBinary sensor (binary_sensor) provided by the scale indicating that a stable measurement is available.
- Weight sensor
Texts from the code of dckiller51/bodymiscale.
Entities
- SensorsBasal metabolism, BMI, Body cell mass, Body fat, Body score, Body type, Bone mass, ECW/TBW ratio, Extracellular water, Impedance, Impedance (250 kHz), Impedance (50 kHz), and 10 more
Shows in Vulpo
Chart card, Apple Watch.Information
- Installs
- 1.9k sharing analytics
- GitHub stars
- 349
- Connection
- Works locally
- Upkeep
- Updated in the last 6 months
- Version
- 2026.10.5,
- Category
- Health and wellbeing
- Kind
- Marketplace integration
- Needs
- Needs the Marketplace (HACS on 2026.10 and older)
- Domain
bodymiscale- Issues
- Report an issue












