23 Scale Brands
Xiaomi, Renpho, Eufy, Yunmai, Beurer, Sanitas, Medisana, and more. Auto-detection out of the box.
See all scales
Cross-platform CLI for Linux, macOS & Windows. Read weight & impedance from 23 BLE smart scales and export to Garmin Connect, Home Assistant, InfluxDB, Webhooks & Ntfy. No phone app needed.
# 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:latestIdeal for Raspberry Pi and headless servers. Your data never leaves your network.
git clone https://github.com/KristianP26/ble-scale-sync.git
cd ble-scale-sync && npm install
npm run setup # interactive wizard — scale discovery, user profile, exporters
CONTINUOUS_MODE=true npm start # always-on, listens for scale indefinitelyRequires Node.js v20+ and a BLE adapter. For always-on deployments, create a systemd service:
[Unit]
Description=BLE Scale Sync
After=network.target bluetooth.target
[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/ble-scale-sync
EnvironmentFile=/home/pi/ble-scale-sync/.env
Environment="CONTINUOUS_MODE=true"
Environment="PATH=/home/pi/ble-scale-sync/venv/bin:/usr/local/bin:/usr/bin:/bin"
ExecStart=/usr/bin/npm start
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.targetsudo systemctl enable --now ble-scale.serviceRaspberry Pi Zero 2W
The ideal setup: a $15 single-board computer with built-in BLE, always on, always listening. Step on the scale and your data appears in Garmin Connect within seconds — no phone needed.