Highlights
Universal BLE Smart Scale bridge — captures body composition from 23 scale types, calculates full body metrics via BIA impedance formulas, and exports to multiple targets simultaneously. Designed for headless operation on Raspberry Pi.
Scale Support
23 scale adapters covering Renpho, Xiaomi Mi Scale 2, Yunmai, QN-Scale (Sencor, Renpho ES-CS20M), Eufy (1byone), Beurer/Sanitas, MGB (Swan/Icomon), Medisana, Senssun, Excelvan, Digoo, Hoffen, Hesley, Active Era, Trisa, Soehnle, and more. Full list in README.
Exporters
- Garmin Connect — automatic body composition upload via Python subprocess (no phone app needed)
- MQTT — Home Assistant auto-discovery with 11 metrics, LWT, and configurable device name
- InfluxDB — v2 write API with line protocol, token auth
- Webhook — configurable HTTP method, headers, and timeout
- Ntfy — push notifications with priority and auth support
All exporters run in parallel with retry logic (2 attempts). Partial failure is non-fatal.
BLE Platform Support
| Platform | Handler | Status |
|---|---|---|
| Linux (Raspberry Pi) | node-ble (BlueZ D-Bus)
| Tested |
| Linux (override) | @stoprocent/noble
| Tested |
| Windows 11 | @abandonware/noble
| Tested |
| macOS | @stoprocent/noble
| Supported |
Continuous mode with auto-reconnect, progressive retry delays, and graceful shutdown (SIGINT/SIGTERM).
Configuration
config.yaml(recommended) — Zod-validated schema with${ENV_VAR}references.env(legacy fallback) — fully supported, auto-detected- CLI flags:
--config <path>,--help npm run validate— config validation with human-readable error messages- Environment overrides always apply on top of config file
Body Composition Metrics
Weight, body fat %, water %, muscle mass, bone mass, BMI, BMR, visceral fat, physiqueRating — computed via BIA impedance formulas with gender/athlete coefficients.
Quality
- 822 unit tests across 45 test files (Vitest)
- TypeScript strict mode, ESLint, Prettier
- End-to-end tested on Raspberry Pi Zero 2W and Windows 11