https://github.com/dmuth/splunk-fitbit
Splunk data from your Fitbit!
https://github.com/dmuth/splunk-fitbit
Last synced: 8 months ago
JSON representation
Splunk data from your Fitbit!
- Host: GitHub
- URL: https://github.com/dmuth/splunk-fitbit
- Owner: dmuth
- License: gpl-3.0
- Created: 2019-07-27T00:05:41.000Z (almost 7 years ago)
- Default Branch: main
- Last Pushed: 2020-09-03T22:22:22.000Z (almost 6 years ago)
- Last Synced: 2025-04-12T14:51:27.087Z (about 1 year ago)
- Language: Python
- Size: 258 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# Splunking Fitbit Data
Some years ago, I bought a Fitbit Charge 2 so I could track my activity.
As a surprise to exactly no one, I have pretty bad sleeping habits.
Fitbit's dashboard is alright, but I wanted a little more freedom to do
data analytics on the data my way, and that's how this app came into being!
With Splunk Fitbit, the following metrics will be reported on:
- Sleep data
- Nightly hours asleep, broken down by day of week
- "Good" sleep days ( > 7 hours of sleep) and "Bad" sleep days ( < 7 hours) by week.
- Trending good/bad sleep days over the last 30 days
- Heartrate data
- Resting heartrate by day (more on how it's calculated below)
- Trending minimum resting heartrate over the last 30 days
- Trending maximum resting heartrate over the last 30 days
This app uses Splunk Lab, an open-source
app I built to effortlessly run Splunk in a Docker container.
# Screenshots
## Requirements
- Make sure Docker is installed
## Running The App
- Go to https://www.fitbit.com/settings/data/export and download your fitbit data
- Unzip the ZIP file
- Move your exported data into a local directory called `fitbit/`:
- `mv path/to/fitbit/USERNAME/user-site-export fitbit`
- `SPLUNK_START_ARGS=--accept-license bash <(curl -s https://raw.githubusercontent.com/dmuth/splunk-fitbit/master/go.sh)`
- This will run a Python script which will read in the JSON data from Fitbit (both types of data are in different formats...) and write it out into a `logs/` directory
- If you want to change how many days back the script goes for either sleep or heartrate data, or change rollup values for heartrate data, add `-h` onto the end of that command to get syntax.
- Then, Splunk will be started. Ingested data will be written to `splunk-data/`
- Go to https://localhost:8000/, log in with the password you set, and you'll see your Fitbit data in a dashboard!
## Development
Mostly for my benefit, these are the scripts that I use to make my life easier:
- `./bin/build.sh` - Build the Python and Splunk Docker containers
- `./bin/push.sh` - Upload the Docker containers to Docker Hub
- `./bin/devel.sh` - Build and run the Splunk Docker container with an interactive shell
- `./bin/stop.sh` - Stop the Splunk container
- `./bin/clean.sh` - Stop Splunk, and remove the data and logs
## Notes/Bugs
- Don't bother trying to get steps--the data in the export doesn't match what's in the dashboard at ALL. Step counts are wrong, days are missing, etc. If Fitbit fixes this, then I will add in support. :-)
- I can't seem to get rangemaps working for nightly sleep hours, which is frustrating
- Heartrate data has an insane volume--nearly as often as 1 reading every 5 seconds. So my import script will do rollup and output the avg/min/max/mean of all values. By default, the rollup period is 5 minutes. This can be adjusted, but may break certain assumptions in the graphs.
- I was able to approximate, but not perfectly match Fitbit's resting heartrate as reported on my personal dashboard on the site. I ended up grabbing the 6 periods with the lowest minimum heartrate each day, and average those readings out to get a daily value. Not great, not terrible.
- I suspect that Fitbit's readings come from having higher granularity of the data, using only readings from the deepest part of sleep, and possibly throwing in a weighted average as well.
## Credits
I'd like to thank Splunk, for having such a kick-ass data
analytics platform, and the operational excellence which it embodies.
Also:
- This text to ASCII art generator, for the logo I used in the script.
## Copyright
Splunk is copyright by Splunk. Apps included within Splunk Lab are copyright their creators,
and made available under the respective license.
## Contact

