Heart rate tracker data handler
This suite consists of a library portion (lib/) and a Flask-based web app (app/).
The library part has an optional requirement for fitdecode but is usable otherwise.
The web app (app/app.py) requires the packages listed in app/requirements.txt.
The motivation behind this is dealing with Google Fit and heart point calculation but also heart rate upload.
The library can be broken up into four parts, roughly following a map-filter-reduce pipeline with types:
consumers-- these consume the pipeline and yield heart points and pnn-sgt files (reducers)producers-- these decode the files and produce a pipeline (mappers)transformers-- these filter the pipeline but can also transform one-to-many, like the splitter (filters)types-- these describe the types used by the pipeline
The app can be broken up into three parts:
/-- the index/points-- the heart points calculator/zipsplit-- the hourly splits zipper
Supported input formats are: Garmin Fit and com.pnn.android.sport_gear_tracker (pnn-sgt)
Supported output formats are: pnn-sgt
To make use of pnn-sgt files, unzip to
/sdcard/Android/data/com.pnn.android.sport_gear_tracker/files/user/detailed (Android 10).