finds.dev← search

// the find

arpanghosh8453/fitbit-grafana

★ 894 · Python · BSD-4-Clause · updated May 2026

A script to fetch data from Fitbit servers using their API and store the data in a local influxdb database and visualize them with Grafana

A Docker-composable pipeline that pulls health metrics from Fitbit/Google Health API and dumps them into InfluxDB for Grafana visualization. Handles intraday heart rate, HRV, SpO2, sleep, and steps with automatic OAuth token refresh. Targets self-hosters who want more granular data than the Fitbit app shows without paying for Fitbit Premium.

The rate-limit handling for historical backfill is genuinely well-thought-out — it batches by endpoint period limits, fills coarse data first, then intraday, and sleeps exactly until the 150-call/hour window resets rather than hammering and failing. The migration to Google Health API (Fitbit's replacement) is already in place before the deadline, which is not obvious effort. The compose file ships a ready dashboard import code (23088/23090) so first-run to visible data is actually fast. InfluxDB schema is documented separately, which matters if you want to write your own panels.

It's a single Python script (Fitbit_Fetch.py) doing everything — scheduling, API calls, token management, DB writes — so when something breaks at 3am you're reading one large file with no separation of concerns. InfluxDB 2.x support is community-contributed and explicitly described as inferior; if you're already on v2 for other dashboards this will push you back to v1.11. The compose file leaves InfluxDB wide open with no auth enabled by default and documents this as acceptable as long as you don't expose it externally — fine until you forget. The setup sequence still has a manual interactive step (initial token exchange) that breaks unattended provisioning and leaves token files sitting on disk with no encryption at rest.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →