Python使ってFitbitのアクティビティデータ(安静時心拍、歩数、消費カロリー)を取得する

Fitbitのアクティビティデータを取得し、クラウド上のデータベースなり、CSV出力して、NoSQL DBにCSVごと投げるなり処理するコードについて、とりあえず動きましたので、忘れないようにメモしました。特に安静時心拍や歩数、消費カロリーは、日本語で情報がほぼ無いので苦労しました。

Python 2.x と Fitbit API接続のため、python-fitbit を使用しています。 前日のデータを取得するために、Fitbitへの接続と下記の変数を定義します。

アクティビティ変数 安静時心拍 歩数 消費カロリー
変数名 resthr act cal

ポイント部分

DATE = datetime.date.today()
DATE = (DATE -  datetime.timedelta(days=1)) 
client = fitbit.Fitbit(CLIENT_ID, CLIENT_SECRET, ACCESS_TOKEN, REFRESH_TOKEN , refresh_cb = updateToken)

#Get resting HeartRate
fitbit_resthr = client.time_series('activities/heart', base_date=DATE,  period='1d')
resthr = fitbit_resthr['activities-heart']

#Get Activity Steps
fitbit_act = client.time_series('activities/steps', base_date=DATE,  period='1d')
act = fitbit_act['activities-steps']

#Get Activity Calories
fitbit_cal = client.time_series('activities/calories', base_date=DATE,  period='1d')
cal = fitbit_cal['activities-calories']

上記は、Fitbit APIの、「Activity Time Series」と「Heart Rate Time Series」を使用しており、base_dateがターゲットの日付(ここでは前日で、period で日付範囲を指定します。ここでは、period を1d=1日としています。データの仕様は下記の公式ドキュメントを確認してください。

dev.fitbit.com dev.fitbit.com

出力する処理です。

#Activity-resting-HeartRate
for varrest in reversed ( range( 0, len(resthr) ) ):
    print  ( str( resthr[varrest]['value']['restingHeartRate'] ) )

#Activity-Steps
for vars in reversed ( range( 0, len(act) ) ):
    print  ( str( act[vars]['value'] ) )

#Activity-Calories
for varc in reversed ( range( 0, len(cal) ) ):
    print  ( str( cal[varc]['value'] ) )

わかってみると単純でした。