Skip to content

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

License

Notifications You must be signed in to change notification settings

KristianP26/ble-scale-sync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

183 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

BLE Scale Sync

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

A cross-platform CLI tool that reads body composition data from 23 BLE smart scales and exports to Garmin Connect, MQTT (Home Assistant), InfluxDB, Webhooks, and Ntfy. No phone app needed. Your data stays on your device.

Documentation · Getting Started · Supported Scales · Exporters

Why This Exists

Most BLE smart scales measure weight and body impedance over Bluetooth, but their companion apps have no way to sync data to Garmin Connect. The only workflow was: open the phone app, wait for it to sync, then manually type the numbers into Garmin. Every single time.

I didn't want to depend on a phone app. So I built this tool. A Raspberry Pi Zero 2W sits next to the scale, always on, always listening. Step on the scale, wait a few seconds, and the reading appears in Garmin Connect — no phone needed, no app, no manual entry. It just works.

Quick Start

Docker (Linux)

# Configure
docker run --rm -it --network host --cap-add NET_ADMIN --cap-add NET_RAW \
  --group-add 112 -v /var/run/dbus:/var/run/dbus:ro \
  -v ./config.yaml:/app/config.yaml ghcr.io/kristianp26/ble-scale-sync:latest setup

# Run (continuous mode, auto-restart)
docker run -d --restart unless-stopped --network host \
  --cap-add NET_ADMIN --cap-add NET_RAW \
  --group-add 112 -v /var/run/dbus:/var/run/dbus:ro \
  -v ./config.yaml:/app/config.yaml:ro \
  -e CONTINUOUS_MODE=true \
  ghcr.io/kristianp26/ble-scale-sync:latest

Native (Linux, macOS, Windows)

git clone https://github.com/KristianP26/ble-scale-sync.git
cd ble-scale-sync && npm install
npm run setup                       # interactive wizard
CONTINUOUS_MODE=true npm start      # always-on

Requires Node.js v20+ and a BLE adapter. See the full install guide for prerequisites and systemd service setup.

Features

  • 23 scale brands — Xiaomi, Renpho, Eufy, Yunmai, Beurer, Sanitas, Medisana, and more
  • 5 export targets — Garmin Connect (multi-user Docker auth), MQTT (Home Assistant), InfluxDB, Webhook, Ntfy
  • 10 body metrics — BIA-based body composition from weight + impedance
  • Multi-user — automatic weight-based identification with per-user exporters
  • Interactive setup wizard — scale discovery, exporter config, connectivity tests
  • Cross-platform — Linux (Docker + native), macOS, Windows
  • Private — your data stays on your device, no vendor cloud

Credits

Contributing

See CONTRIBUTING.md for development setup, project structure, and how to add new scale adapters or exporters.

License

GPL-3.0 — see LICENSE for details.

About

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

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors 3

  •  
  •  
  •