Skip to content

BLE Scale SyncAutomatic body composition sync

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.

BLE Scale Sync

Quick Start

Option 1: Docker (Linux)

bash
# 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

Ideal for Raspberry Pi and headless servers. Your data never leaves your network.

Option 2: Native (Linux, macOS, Windows)

bash
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 indefinitely

Requires Node.js v20+ and a BLE adapter. For always-on deployments, create a systemd service:

Example: /etc/systemd/system/ble-scale.service
ini
[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.target
bash
sudo systemctl enable --now ble-scale.service

Raspberry 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.

Released under the GPL-3.0 License.