GN⁺: GarminDB - 가민 커넥터/워치에서 데이터를 가져와 파싱하는 DB
(github.com/tcgoetz)- 건강 데이터를 SQLite 데이터베이스로 파싱하고 조작하는 Python 스크립트
- Garmin Connect 또는 Garmin 시계, FitBit CSV, MS Health CSV 파일에서 데이터를 다운로드하여 구문 분석하고, Jupyter 노트북을 사용해 Sqlite 데이터베이스에 있는 데이터를 분석
기능
- Garmin Connect의 "Daily Summary" 페이지에서 하루 종일 심박수, 활동, 등반/하강, 스트레스, 강도 분 등의 데이터를 자동으로 다운로드하고 가져옴
- 수면, 체중, 안정 시 심박수 데이터를 Garmin Connect에서 추출하여 JSON 파일로 저장하고 데이터베이스에 가져옴
- Garmin Connect에서 활동 파일을 다운로드하고 가져옴. 모든 활동에 대한 요약 테이블과 일부 활동 유형에 대한 세부 데이터 포함
- 일일, 주간, 월간, 연간 요약을 포함하는 테이블로 데이터를 요약함
- 명령줄 또는 Jupyter 노트북을 사용하여 데이터를 그래프로 표시함
- 다운로드한 JSON 및 FIT 파일을 보관하여 Garmin Connect에 다시 연결하거나 데이터를 다시 다운로드하지 않고 데이터베이스를 재생성할 수 있음
- 활동을 TCX 파일로 내보낼 수 있음
사용 방법
릴리스
- GarminDb는 PyPI에 호스팅됨. Python 3.x가 필요함. 터미널에서
pip install garmindb
를 실행하여 최신 릴리스를 설치함 -
GarminConnectConfig.json.example
을~/.GarminDb/GarminConnectConfig.json
으로 복사하고, Garmin Connect 사용자 이름과 비밀번호를 추가하고 데이터의 시작 날짜를 조정함 - 모든 데이터를 다운로드하고 데이터베이스를 생성하려면
garmindb_cli.py --all --download --import --analyze
를 실행함 - 최신 데이터를 다운로드하고 가져와 데이터베이스를 점진적으로 업데이트하려면
garmindb_cli.py --all --download --import --analyze --latest
를 실행함 - 데이터베이스 파일을 백업하려면 가끔
garmindb_cli.py --backup
을 실행함
소스에서
- SSH 클론 방법을 사용하여 GarminDB 저장소를 Git 클론함. 서브모듈은 SSH를 사용해야 함
- 클론한 트리에서
make setup
을 실행하여 데이터를 처리할 준비를 함 -
GarminConnectConfig.json.example
을~/.GarminDb/GarminConnectConfig.json
으로 복사하고, 사용자 이름과 비밀번호를 추가하고 시작 날짜를 조정함 -
make create_dbs
를 한 번 실행하여 데이터를 가져오고 처리함 -
make
명령을 주기적으로 실행하여 모든 로컬 데이터를 최신 상태로 유지함
Jupyter 노트북
- 데이터베이스에서 데이터를 분석하기 위한 Jupyter 노트북은 소스 트리의 'Jupyter' 디렉토리에 있음
플러그인
- 플러그인은 사용자가 데이터베이스에 처리하고 저장할 데이터 유형을 확장할 수 있도록 함. GarminDb는 이미 타사 Connect IQ 앱과 데이터 필드를 처리하기 위한 여러 플러그인을 보유하고 있음
Hacker News 의견
-
Garth를 사용하여 인증하는 앱에 주의가 필요함. Garmin과의 통합이 어려움
- Garmin의 API와 SDK는 사용하기 어려움
- Garmin Connect에서 데이터를 FIT 파일로 내보내는 방법이 있음
- Python과 Go의 오픈 소스 라이브러리로 FIT 파일을 읽고 해석할 수 있음
-
장치에서 현재 데이터를 가져오는 방법이 있음
- 장치를 컴퓨터에 연결하고 파일 시스템으로 마운트하여 .FIT 파일을 가져올 수 있음
-
Intervals를 사용하여 Garmin과 Strava 관련 데이터를 분석하는 것이 유용함
- 특히 조정 관련 메트릭을 생성할 수 있어 좋음
-
Garmin은 스마트폰 앱에 의존하는 대신 데이터를 더 잘 관리할 수 있는 하드웨어를 제공해야 함
- API 접근이 어려운 것뿐만 아니라 커뮤니티의 의견을 듣지 않음
- 장비 없이 운동을 필터링할 수 있는 기능이 필요함
-
Garmin의 SDK는 오래되었고 데이터 접근이 제한적임
- FIT 파일 형식은 제한된 앱에서만 지원됨
-
데이터 접근이 더 나은 피트니스 시계가 필요함
- 실시간 건강 정보에 접근할 수 있는 시계가 필요함
-
새로운 Garmin Vivoactive5를 구입했으며, Garmin의 API가 최적은 아니지만 만족함
- Apple Watch 시리즈 10을 고려했으나 배터리 수명과 가격 때문에 포기함
- 해킹 가능한 오픈 시계가 필요하며, Pebble의 부활이 이 공백을 채울 수 있을 것임