SmartScaleConnect
Application for sync smart scale data between different ecosystems
Install / Use
/learn @AlexxIT/SmartScaleConnectREADME

Application for synchronizing smart scale data between different ecosystems.
Features:
- Load data from Garmin, Home Assistant, Mi Fitness, My TANITA, Picooc, Xiaomi Home, Zepp Life, CSV, JSON
- Save data to Garmin, Home Assistant, Zepp Life, CSV, JSON
- Support params:
Weight,BMI,Body Fat,Body Water,Bone Mass,Metabolic Age,Muscle Mass,Physique Rating,ProteinMass,Visceral Fat,Basal Metabolism,Heart Rate,Skeletal Muscle Mass - Support multiple users data
- Support scripting language
Inspired by: series of projects from @lswiderski.
Attention. The application is at an early stage of development. The configuration and functionality can change a lot.
<!-- TOC --> <!-- TOC -->
Fast start
- Download binary for your OS from latest release.
- Or use the Docker container.
- Or add Home Assistant add-on.
Configuration
A configuration file with name scaleconnect.yaml may be located in the current working directory or near application binary.
The YAML format is very demanding on indentation and spaces. Please observe them.
After the first launch, the scaleconnect.json file may appear next to the configuration file. It contains the authorization credentials for your services.
Config file example:
sync_alex_fitbit:
from: fitbit AlexMyFitbitData.zip
to: garmin alex@gmail.com garmin-password
sync_alex_zepp:
from: zepp/xiaomi alex@gmail.com xiaomi-password
to: garmin alex@gmail.com garmin-password
expr:
Weight: 'BodyFat == 0 || Date >= date("2024-11-25") ? 0 : Weight'
sync_alex_mifitness:
from: mifitness alex@gmail.com xiaomi-password
to: garmin alex@gmail.com garmin-password
expr:
Weight: 'BodyFat == 0 ? 0 : Weight'
BodyFat: 'Date >= date("2025-04-01") && Source == "blt.3.1abcdefabcd00" ? 0 : BodyFat'
To: Garmin

Limitations:
- Currently, two-factor authentication is not supported.
- Currently, China server is not supported.
Example. Upload data go Garmin Connect from CSV:
sync_garmin:
from: csv alex_garmin.csv
to: garmin {username} {password}
If you want to upload custom manual data to Garmin, just import it from CSV file.
From: Garmin
Example. Download data from Garmin Connect to CSV:
sync_garmin:
from: garmin {username} {password}
to: csv alex_garmin.csv
From: Xiaomi
Xiaomi scales, depending on the model, are supported in different applications - Mi Fitness, Xiaomi Home, Zepp Life.
Mi Body Composition Scale 2 (XMTZC05HM)
- Supported in the Zepp Life app
- Get user data:
from: zepp/xiaomi alex@gmail.com xiaomi-password - Get other user data:
from: zepp/xiaomi alex@gmail.com xiaomi-password Yulia
- Get user data:
Mi Body Composition Scale S400 CN (MJTZC01YM, yunmai.scales.ms103)
- China version
- Supported in the Mi Fitness app in China region
- Get user data:
from: mifitness alex@gmail.com xiaomi-password - Get scale data:
from: mifitness alex@gmail.com xiaomi-password yunmai.scales.ms103
- Get user data:
- Supported in the Mi Fitness app in Euro region (ONLY via Vevs mod)
- Get user data:
from: mifitness alex@gmail.com ru - Get scale data:
from: mifitness alex@gmail.com xiaomi-password yunmai.scales.ms103
- Get user data:
- Supported in the Xiaomi Home app
- Get scale data:
from: xiaomihome alex@gmail.com xiaomi-password cn yunmai.scales.ms103
- Get scale data:
Mi Body Composition Scale S400 EU (MJTZC01YM, yunmai.scales.ms104)
- Euro version
- Not supported in the Mi Fitness app
- Supported in the Xiaomi Home app in Euro region
- Get scale data:
from: xiaomihome alex@gmail.com xiaomi-password ru yunmai.scales.ms104
- Get scale data:
Xiaomi 8-Electrode Body Composition Scale CN (XMTZC01YM, yunmai.scales.ms3001)
- China version
- Supported in the Mi Fitness app
- Get user data:
from: mifitness alex@gmail.com xiaomi-password
- Get user data:
- Not supported in the Xiaomi Home app
From: Mi Fitness
Tested on scales:
- Mi Body Composition Scale S400 CN (
MJTZC01YM,yunmai.scales.ms103) - getting other users data is supported. - Xiaomi 8-Electrode Body Composition Scale CN (
XMTZC01YM,yunmai.scales.ms3001) - getting other users data is not supported yet.
Example. Get data from all scales of the main user (China region):
sync_mifitness:
from: mifitness {username} {password}
to: csv alex_mifitness.csv
Example. Get data from all scales of the main user (other region):
de(Europe)i2(India)ru(Russia)sg(Singapore)us(United States)
sync_mifitness:
from: mifitness {username} {password} {region}
to: csv alex_mifitness_region.csv
Example. Get the data of all users from specific scales:
sync_mifitness:
from: mifitness {username} {password} {scales model}
to: csv all_users_mifitness.csv
- You can check scales model name from Mi Fitness app > Device > Scale > About device > Device model.
- You can add a filter by username.
Example:
sync_yulia_mifitness:
from: mifitness alex@gmail.com xiaomi-password yunmai.scales.ms103
to: csv yulia_mifitness.csv
expr:
Weight: 'User == "Yulia" ? Weight : 0'
From: Xiaomi Home
Tested on scales:
- Mi Body Composition Scale S400 EU (
MJTZC01YM,yunmai.scales.ms104) - getting other users data is supported.
Example. Get the data of all users from specific scales and region:
de(Europe)i2(India)ru(Russia)sg(Singapore)us(United States)
sync_xiaomihome:
from: xiaomihome {username} {password} {region} {scales model}
to: csv all_users_xiaomihome.csv
Example:
sync_yulia_xiaomihome:
from: xiaomihome alex@gmail.com xiaomi-password ru yunmai.scales.ms104
to: csv yulia_xiaomihome.csv
expr:
Weight: 'User == "Yulia" ? Weight : 0'
From: Zepp Life
Limitations:
- Currently, only login via a Xiaomi account is supported.
- When syncing, you are logged out of the mobile app. It is not known how this problem can be fixed.
Tested on scales:
- Mi Body Composition Scale 2 (XMTZC05HM)
Example. Get data from all scales of the main user:
sync_zepp:
from: zepp/xiaomi {username} {password}
to: csv alex_zepp.csv
Example. Getting data from all scales of the selected user:
sync_zepp:
from: zepp/xiaomi {username} {password} {user}
to: csv alex_zepp.csv
To: Zepp Life
You can upload data to Zepp Life.
Important. Your data must have Weight, BodyFat, BodyScore and Height, so it will be displayed in advanced view. Otherwise, it will only be displayed as Weight data.
Example. Send data to Zepp Life from config file:
sync_zepp:
from:
Weight: 64.30
BodyFat: 10.0
BodyScore: 85
Height: 172
to: zepp/xiaomi {username} {password}
From: My TANINA
On Tanita servers, the weighing time is stored with an unknown time zone and may be incorrect.
sync_tanita:
from: tanita {username} {password}
to: csv alex_tanita.csv
From: Picooc
Example. Get data from all scales of the main user:
sync_picooc:
from: picooc {username} {password}
to: csv alex_picooc.csv
Example. Getting data from all scales of the selected user:
sync_picooc:
from: picooc {username} {password} {user}
to: csv alex_picooc.csv
From: Fitbit
My Fitbit Aria scales are no longer working. Therefore, I am interested in this service only from the point of view of archived data.
Google bought this service and sent an email with the subject "Take action by February 2, 2026 to keep using Fitbit". There they offer to download all the data, otherwise it will disappear.
Example. Retrieving data from the archive:
sync_fitbit:
from: fitbit MyFitbitData.zip
to: csv alex_fitbit.csv
From/to: CSV

A good format for human-readable text. The time inside the file is always your local time. Well-supported in MS Office. It is convenient to
