개발/기타

가민 (Garmin) 기술조사 와 api 사용

hoilog 2022. 11. 20. 15:59

Garmin Health SDK

Android 또는 iOS 앱에서 Garmin 웨어러블을 직접 통합할 수 있습니다.

 

  • 건강 api
    • 유저 정보, 활동 정보, 걸음수 등의 정보를 REST API로 제공해줍니다.
    • 승인된 비즈니스 개발자로 등록 시 무료로 사용 가능
  • 표준 sdk
    • 웹서비스 통합 없이 Android, apple 제품용 모바일 앱에서 모든 건강 및 피트니스 활동 데이터에 직접 액세스 할 수 있습니다.
    • 평가판 : 무료
    • 상업용 : 라이선스 비용 또는 최소 장치 연동
  • 컴패니언 sdk
    • 실시간 센서 스트림 활용 가능
    • 걸음 수와 같은 현재 활동 데이터에 즉시 액세스 하거나 심박수, 스트레스 점수, 가속도계 등의 실시간 정보를 활용할 수 있습니다.
    • 평가판 : 무료
    • 상업용 : 라이선스 비용 또는 최소 장치 연동

 

가민 API는 승인된 비즈니스 개발자 등록 또는 SDK 사용 요청을 해야 API 문서와 샘플 코드를 받을 수 있습니다.

리서치해 본 결과 NPM garmin-connect 패키지를 사용하면 개발자 등록을 하지 않더라도 일부 활동 데이터를 보내고 받을 수 있었습니다. 

하지만 분당 리퀘스트 제한이 있는 것으로 보입니다. 1분에 약 50개를 초과하면 일정 시간이 지난 뒤 API 호출이 가능합니다.

아래는 garmin-connect 패키지를 이용해 API 결과를 가져온 정보입니다.

가민 웨어러블 기기가 없기 때문에 garmin connect 앱을 이용해 수동으로 데이터를 넣어 테스트를 진행했습니다.

그 때문에 비어있는 값이 많습니다.

 

API 테스트를 위한 NPM Garmin-connect 설치

npm install garmin-connect
또는
yarn add garmin-connect

 

Garmin-connect 사용 예

가민 계정을 이용해 connection을.

const { GarminConnect } = require('garmin-connect');
const GCClient = new GarminConnect();
await GCClient.login('my.email@example.com', 'MySecretPassword');
const userInfo = await GCClient.getUserInfo();

 

테스트한 API

  • 유저 정보
  • 소셜 사용자 정보
  • 활동 정보
  • 걸음수
  • 심박수
  • 수면 요약정보
  • 수면 세부 정보
  • 체중 설정
  • 운동 추가

→ 유저 정보

const userInfo = await GCClient.getUserInfo();
console.log(userInfo);

 

→ 활동정보

const activities = await GCClient.getActivities();
const id = activities[0].activityId;
const activitDetail = await GCClient.getActivity({ activityId: id });
console.log(activitDetail);

 

→ 특정 날짜의 걸음수

const steps = await GCClient.getSteps(new Date('2022-11-20'));
console.log(steps);

 

→ 심박수

const heartRate = await GCClient.getHeartRate(new Date('2022-11-20'));
console.log(heartRate);

 

→ 수면요약정보

const sleep = await GCClient.getSleep(new Date('2022-11-20'));
console.log(sleep);

 

→ 수면세부정보

const detailedSleep = await GCClient.getSleepData(new Date('2020-03-24'));
console.log(detailedSleep);

 

api실행 결과 값은 첨부하지 않았습니다.

직접 간단하게 테스트해보시고 결괏값을 확인해보시면 좋을 것 같습니다.

 

 

 

참고사이트

https://mxd.codes/articles/fetching-and-storing-activities-from-garmin-connect-with-strapi-and-visualizing-them-with-next-js

https://www.npmjs.com/package/garmin-connect