Skip to content

About

Universal BLE Smart Scale bridge. Captures body composition from Renpho, Xiaomi & 20+ others, syncs to Garmin Connect, Strava, MQTT (Home Assistant), InfluxDB, Webhooks, Ntfy & local files (CSV/JSONL). Headless CLI for Raspberry Pi, Linux, macOS & Windows.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

223 stars

Watchers

2 watching

Forks

Latest commit

 

History

1,697 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

BLE Scale Sync

CI GitHub Release License: GPL-3.0 TypeScript Node.js Docker

BLE Scale Sync reads weight and body composition from Bluetooth Low Energy smart scales and sends every reading to Garmin Connect, Home Assistant, InfluxDB and other services. It runs on a Raspberry Pi, a Linux server, macOS, Windows or as a Home Assistant add-on, so you do not need the scale's phone app.

Documentation | Getting Started | Supported Scales | Exporters | Troubleshooting | FAQ

Install

Docker (Linux)

Run the setup wizard in the container to write config.yaml, then start the container with host networking and the D-Bus socket mounted. Docker needs a Linux host with BlueZ, such as a Raspberry Pi. The commands and a Compose file are in Getting Started: Docker.

Home Assistant Add-on

Add BLE Scale Sync repository to your Home Assistant

The add-on needs Home Assistant OS or Supervised. On HA Container or Core, use Docker; the sensors still appear through MQTT discovery. The add-on guide covers options, Garmin sign-in and MFA.

Node.js (Linux, macOS, Windows)

npx ble-scale-sync setup                 # wizard, writes ./config.yaml
CONTINUOUS_MODE=true npx ble-scale-sync  # always on

Requires Node.js 22.23.4+, 24.22.1+ or 26.12.1+ and a BLE adapter. Getting Started: Standalone has the prerequisites, a systemd service and the install from a clone.

Features

  • Reads scales from Xiaomi, Renpho, Eufy, Yunmai, Beurer, Sanitas, Medisana and other brands, over a GATT connection or from their advertisements (Supported Scales).
  • Sends each reading to 13 export targets, among them Garmin Connect, Strava, MQTT with Home Assistant discovery, InfluxDB, webhooks and CSV or JSONL files.
  • Computes body composition from weight and impedance, with a BMI-based estimate for scales that report no impedance.
  • Tells household members apart by weight and gives each person their own exporters (Multi-User).
  • Imports measurements stored in the scale's memory with their original time, for exporters that can record a past measurement (historical readings).
  • Uses the computer's own Bluetooth adapter, an ESP32 BLE proxy, an ESPHome Bluetooth proxy or Home Assistant Bluetooth as the radio (Bluetooth Transports).
  • Sets up through an interactive setup wizard, with scan, validate and diagnose commands for checking the result.
  • Recovers BlueZ on Linux when discovery stops after hours of uptime (BlueZ stuck state).
  • Logs a notice when a new version is out; Auto Updates has recipes for Watchtower, a systemd timer and the add-on.

Privacy

No scale vendor app or account is involved. Readings go only to the exporters you configure. The one other request is a version check, at most once a day, that sends the app version, OS and CPU architecture; those also feed the public usage stats. Set update_check: false to turn it off (what the update check sends).

Help

If your scale is not found or its values look wrong, follow Troubleshooting. For a scale that is not listed, collect a log with debug mode and open an issue with the log and the scale model.

Credits

Contributors

KristianP26
KristianP26

1,373 commits
APIUM
APIUM

34 commits
alasano
alasano

8 commits
marcelorodrigo
marcelorodrigo

7 commits
alexw23
alexw23

3 commits
bondesen
bondesen

3 commits
albert-canfield
albert-canfield

3 commits
ibrokemypie
ibrokemypie

3 commits
fromport
fromport

2 commits
O-Palda
O-Palda

2 commits
chrisauer
chrisauer

2 commits
gvarph
gvarph

2 commits
vargamihaly
vargamihaly

2 commits
FridoE
FridoE

2 commits
boildead
boildead

1 commit
junaidk
junaidk

1 commit
hedoric
hedoric

1 commit
Bretos
Bretos

1 commit
JamieSBenson
JamieSBenson

1 commit
totalitarian
totalitarian

1 commit
ocurero
ocurero

1 commit
rolandgeider
rolandgeider

1 commit
sanglt
sanglt

1 commit
rjekelmans
rjekelmans

1 commit
intrak
intrak

1 commit
codewirrwarr
codewirrwarr

1 commit
Nitrogenbear
Nitrogenbear

1 commit
snajby
snajby

1 commit

Contributing

See CONTRIBUTING.md for the development setup, tests and how to add a scale adapter or an exporter.

License

GPL-3.0. See LICENSE.

Star History

Star History Chart

About

Universal BLE Smart Scale bridge. Captures body composition from Renpho, Xiaomi & 20+ others, syncs to Garmin Connect, Strava, MQTT (Home Assistant), InfluxDB, Webhooks, Ntfy & local files (CSV/JSONL). Headless CLI for Raspberry Pi, Linux, macOS & Windows.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

223 stars

Watchers

2 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages