Goal
Track body weight with a smart scale that (1) logs locally to Home Assistant
(local-first, no cloud) and (2) gets weight into Google Health so the AI
coach can use it.
Decision: Xiaomi Mi Body Composition Scale 2 (~€30)
One cheap scale satisfies both requirements via two independent paths that don't
conflict (BLE advertisements can be read by multiple listeners at once):
- Local (Home Assistant): HA's passive
xiaomi_ble integration reads the
scale's BLE broadcast directly — no account, no app, no Xiaomi cloud. This is
the real trend data, alongside the AirGradient sensors.
- Google Health (AI coach): Install Zepp Life (v8.3.0+) on iPhone →
Profile › Settings › Privacy & Security › Apple Health → enable Weight, Body
Fat %, BMI. Zepp writes to Apple Health, and Google Health ingests from Apple
Health on iOS. This is the official, durable route — it does not rely on
the Fitbit Web API (which sunsets September 2026).
So: weigh in once → BLE broadcast hits HA, and Zepp (when phone is nearby)
pushes the same reading up to Google Health.
Why not the alternatives
- Withings Body: its main advantage (auto-sync) runs through Google Health
Connect, which is Android-only; the HA integration is cloud-polled, not
local. No real edge over Xiaomi on iPhone, and pricier (~€80+).
- DIY local→Google bridge (HA pushing weight via Fitbit Web API): dead end.
The Fitbit Web API sunsets September 2026 and OAuth tokens don't transfer;
the replacement Google Health API has no documented write path yet (the
google-health skill is read-only).
Key finding that unblocked this
On iOS, Google Health links third-party data via Apple Health (Health
Connect is the Android equivalent). Withings and Xiaomi (Mi Fitness/Zepp) are
listed as supported sources, with weight/body measurements among shared metrics.
The legacy Fitbit app does NOT read Apple Health — but Google Health does,
which is what matters for the coach.
Implementation tasks
Notes / caveats
- Phone must be in BLE range when stepping on (or shortly after — Zepp caches and
syncs on next connect).
- Body-fat % on both paths is bioimpedance — treat as a trend, not gospel.
- Weight is noisy day-to-day (±1–2 kg on water/food/salt); the value is the
7-day rolling average, which HA can chart.
References
Goal
Track body weight with a smart scale that (1) logs locally to Home Assistant
(local-first, no cloud) and (2) gets weight into Google Health so the AI
coach can use it.
Decision: Xiaomi Mi Body Composition Scale 2 (~€30)
One cheap scale satisfies both requirements via two independent paths that don't
conflict (BLE advertisements can be read by multiple listeners at once):
xiaomi_bleintegration reads thescale's BLE broadcast directly — no account, no app, no Xiaomi cloud. This is
the real trend data, alongside the AirGradient sensors.
Profile › Settings › Privacy & Security › Apple Health → enable Weight, Body
Fat %, BMI. Zepp writes to Apple Health, and Google Health ingests from Apple
Health on iOS. This is the official, durable route — it does not rely on
the Fitbit Web API (which sunsets September 2026).
So: weigh in once → BLE broadcast hits HA, and Zepp (when phone is nearby)
pushes the same reading up to Google Health.
Why not the alternatives
Connect, which is Android-only; the HA integration is cloud-polled, not
local. No real edge over Xiaomi on iPhone, and pricier (~€80+).
The Fitbit Web API sunsets September 2026 and OAuth tokens don't transfer;
the replacement Google Health API has no documented write path yet (the
google-healthskill is read-only).Key finding that unblocked this
On iOS, Google Health links third-party data via Apple Health (Health
Connect is the Android equivalent). Withings and Xiaomi (Mi Fitness/Zepp) are
listed as supported sources, with weight/body measurements among shared metrics.
The legacy Fitbit app does NOT read Apple Health — but Google Health does,
which is what matters for the coach.
Implementation tasks
bathroom so HA can hear the scale
xiaomi_ble(passive BLE) and confirm weight appears%/BMI), confirm weight reaches Google Health (alternative: AirWeight,
$3.99, reads the scale straight into Apple Health without a Zepp account)
Notes / caveats
syncs on next connect).
7-day rolling average, which HA can chart.
References