@@ -0,0 +1,42 @@
|
||||
# Garmin Activity Loader
|
||||
|
||||
Downloads all Garmin Connect activities (original files, full history on the
|
||||
first run, then new ones every 5 minutes) and hands the FIT files of selected
|
||||
activity types to fit-monitor.
|
||||
|
||||
Uses the unofficial Garmin Connect login via
|
||||
[garminconnect](https://github.com/cyberjunky/python-garminconnect); Garmin
|
||||
changes its login now and then, so a library update may be needed when it
|
||||
stops working.
|
||||
|
||||
## Data layout (`/srv/garmin-activity-loader/data`)
|
||||
|
||||
| Path | Content |
|
||||
|-----------------------|------------------------------------------------------|
|
||||
| `archive/<typeKey>/` | every activity, `<id>_<date>_<name>.fit` |
|
||||
| `import/<typeKey>/` | hard links to the FIT files of the selected types; mounted into fit-monitor as `/data/garmin` |
|
||||
| `garmin-state.json` | downloaded activities, failed downloads, import progress |
|
||||
| `.garminconnect/` | login tokens |
|
||||
|
||||
## Activity type switch
|
||||
|
||||
`GARMIN_IMPORT_TYPES` in `.env` is a comma-separated list of Garmin type keys.
|
||||
A parent key includes its sub types (`cycling` covers `road_biking`,
|
||||
`virtual_ride`, …). Empty means archive only. List the keys, with `*` marking
|
||||
the currently selected ones:
|
||||
|
||||
```sh
|
||||
docker compose run --rm garmin-activity-loader types
|
||||
```
|
||||
|
||||
After changing the switch, restart the container; `import/` is updated on the
|
||||
next cycle. Removing a type only removes its links, activities fit-monitor has
|
||||
already imported stay in the database.
|
||||
|
||||
## Setup
|
||||
|
||||
```sh
|
||||
cp .env.example .env # fill in credentials and GARMIN_IMPORT_TYPES
|
||||
docker compose run --rm garmin-activity-loader login # asks for the MFA code if needed
|
||||
docker compose up -d
|
||||
```
|
||||
Reference in New Issue
Block a user