Skip to main content

Download data from Garmin Connect and store it in a SQLite db for analysis.

Project description

Screen shot of browsing the DB

Screen shot of a daily graph

Screen shot of a steps graph

GarminDB

Python scripts for parsing health data into and manipulating data in a SQLite DB. SQLite is a light weight DB that requires no server.

What they can do:

  • Automatically download and import Garmin daily monitoring files (all day heart rate, activity, climb/descend, stress, and intensity minutes) from the user's Garmin Connect "Daily Summary" page.
  • Extract sleep, weight, and resting heart rate data from Garmin Connect, store it as JSON files, and import it into the DB.
  • Download and import activity files from Garmin Connect. A summary table for all activities and more detailed data for some activity types. Lap and record entries for activities.
  • Summarizing data into stats.txt and a common DB with tables containing daily summaries, weekly summaries, and monthly summaries.
  • Graph your data from the commandline or with Jupyter notebooks.
  • Retain data as JSON files or FIT files so that the DB can be regenerated without connecting or redownloading data from Garmin Connect.
  • Export activities as TCX files.

Once you have your data in the DB, I recommend using a SQLite browser like SQLite Studio or DB Browser for SQLite for browsing and working with the data. The scripts create some default views in the DBs that make browsing the data easier.

Using It

Releases

GarminDB requires Python. With Python installed, install the latest release with pip by running pip install garmindb in a terminal.

  • Copy GarminConnectConfig.json.example to ~/.garmindb/GarminConnectConfig.json, edit it, and add your Garmin Connect username and password and adjust the start dates to match the dats of your data in Garmin Connect.
  • Starting out: download all of your data and create your db by running garmindb_cli.py --all --download --import --analyze in a terminal.
  • Incrementally update your db by downloading the latest data and importing it by running garmindb_cli.py --all --download --import --analyze --latest in a terminal.
  • Ocassionally run garmin_cli.py --backup to backup your DB files.

Update to the latest release with pip install --upgrade garmindb.

From Source

The scripts are automated with Make. Run the Make commands in a terminal window.

  • Git clone GarminDB repo using the SSH clone method. The submodules require you to use SSH and not HTTPS. Get the command from the green button on the project home page.
  • Run make setup in the cloned tree to get the scripts ready to process data.
  • Copy GarminConnectConfig.json.example to ~/.garmindb/GarminConnectConfig.json, edit it, and add your Garmin Connect username and password and adjust the start dates to match the dats of your data in Garmin Connect.
  • Run make create_dbs once to fetch and process for you data.
  • Keep all of your local data up to date by periodically running only one command: make.

There is more help on using the program in the wiki.

Plugins

Plugins allow the user to expand the types of data that are processed and stored in the database. GarminDb already has a number of plugins for handling data from third-party Connect IQ apps and data fields. Read more about plugins here.

Success Stories

Find out who's using GarminDb on what platforms, OSes, and python versions here. If you're using GarminDB and your scenario isn't listed send me a message or file an issue with your success case.

Notes

  • You may get a DB version exception after updating the code, this means that the DB schema was updated and you need to rebuild your DBs by running make rebuild_dbs. Your DBs will be regenerated from the previously downloaded data files. All of your data will not be redownloaded from Garmin.
  • The scripts were developed on MacOS. Information or patches on using these scripts on other platforms are welcome.
  • Running the scripts on Linux should require little or no changes. You may need to install git and make.
  • There are two ways to use this project on Windows. Installing the Ubuntu subsystem on Windows 10 is one way. Using a Linux container or VM is also possible.
  • When a database update finishes, a summary of the data in the DB will be saved to stats.txt. The output includes the date ranges included in the downloaded daily monitoring files and activities. It includes the number of records for daily monitoring, activities, sleep, resting heart rate, weight, etc. Use the summary information to determine if all of your data has been downloaded from Garmin Connect. If not, adjust the dates in GarminConnectConfig.json and runt he download again.
  • In GarminConnectConfig.json the "steps" element of the "course_views" is list of course ids that per course database views will be generated for. The database view allows you to compare all activities from that course.

Bugs and Debugging

  • If you have issues, file a bug here on the project. See the Issues tab at the top of the project page. Run make bugreport or bugreport.sh and include bugreport.txt in your bug report.
  • Besides errors that appear on the screen, one of the first places to look for more information is the log files (garmin.log, graphs.log).
  • If your having issues with a particular data files, please considering sharing so I can debug it.

Contributing

Please submit a pull request targeting the develop branch and add your self to the contributors file. Run make flake8 at the top level and fix all errors before submitting your pull request.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

garmindb-3.0.2.tar.gz (76.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

garmindb-3.0.2-py3-none-any.whl (83.0 kB view details)

Uploaded Python 3

File details

Details for the file garmindb-3.0.2.tar.gz.

File metadata

  • Download URL: garmindb-3.0.2.tar.gz
  • Upload date:
  • Size: 76.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.5

File hashes

Hashes for garmindb-3.0.2.tar.gz
Algorithm Hash digest
SHA256 869da3b0e4b8263cb594021bf63d33c8b011fb2c57e047e9a64e6d6dc23cd06e
MD5 1dab9d167e6e60d0dbb5eabead1a90d6
BLAKE2b-256 1003d9883cc1eb2d7d8fcb4949d28f5e59f3ab74da14c9e6c28c3f3ef0736fc7

See more details on using hashes here.

File details

Details for the file garmindb-3.0.2-py3-none-any.whl.

File metadata

  • Download URL: garmindb-3.0.2-py3-none-any.whl
  • Upload date:
  • Size: 83.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.5

File hashes

Hashes for garmindb-3.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 98501b2a4e80c40cd7b753259e211a6be145109f46aaee4d1208ab9e4fd68761
MD5 ada88e7117b328e524e817db5b775cc2
BLAKE2b-256 2dccb37dc684d672b6f29841c4cc9b210106673dfcc31fd13e964a58985803a3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page