fitbitでは、心拍数、歩数、カロリー、登った階数など、多様なデータを計測しています!
それらのデータのpythonでの取得方法をまとめます。
Access Tokenなど、APIの使用環境を整えるのは前回記事を参考にして下さい。
【環境】
・ OS : OS X EI Capitan
・ 言語 : Python 3.5.2
・ライブラリ : python-fitbit
心拍数・運動 時系列データの取得
intraday_time_series という関数を使います。
例:歩数の取得
準備.py
import fitbit
# メモしたID等
CLIENT_ID = "XXXXXXXXXXXXXXXXXXXXXXX"
CLIENT_SECRET = "XXXXXXXXXXXXXXXXXXXXXXX"
ACCESS_TOKEN = "XXXXXXXXXXXXXXXXXXXXXXX"
REFRESH_TOKEN = "XXXXXXXXXXXXXXXXXXXXXXX"
# ID等の設定
authd_client = fitbit.Fitbit(CLIENT_ID, CLIENT_SECRET
,access_token=ACCESS_TOKEN, refresh_token=REFRESH_TOKEN)
歩数取得.py
# 歩数を取得(1分単位)
authd_client.intraday_time_series('activities/steps', base_date="2017-01-31", detail_level='1min', start_time="02:00", end_time="04:00")
結果
{'activities-steps': [{'dateTime': '2017-01-31', 'value': '0'}],
'activities-steps-intraday': {'dataset': [{'time': '02:00:00', 'value': 0},
{'time': '02:01:00', 'value': 0},
{'time': '02:02:00', 'value': 0},
{'time': '02:03:00', 'value': 0},
{'time': '02:04:00', 'value': 0},
{'time': '02:05:00', 'value': 0},
...
detail_level
取得するデータの間隔
1sec, 1min, 15min のどれか
欠損値がある可能性が高いです。
取得するデータの種類
上記関数の'activities/steps'という項目を変更することで、いろいろな情報を時系列で取得することができます。
値 | 説明 |
---|---|
activities/heart | 平均心拍数 |
activities/steps | 歩数 |
activities/calories | 消費カロリー |
activities/floors | 登った階数(3m登って1階) |
activities/minutesSedentary | 座っている時間(分間) |
activities/minutesLightlyActive | 軽い運動をしている時間(分間) |
activities/minutesFairlyActive | アクティブな運動をしている時間(分間) |
activities/minutesVeryActive | 激しい運動をしている時間(分間) |
睡眠データの取得
睡眠データは sleep 関数が便利です。
睡眠情報取得.py
authd_client.sleep(date="2017-01-29")
結果
{'sleep': [{'awakeCount': 1,
'awakeDuration': 6,
'awakeningsCount': 19,
'dateOfSleep': '2017-01-29',
'duration': 26700000,
'efficiency': 93,
'isMainSleep': True,
'logId': 13626289712,
'minuteData': [
{'dateTime': '01:16:00', 'value': '3'},
{'dateTime': '01:17:00', 'value': '3'},
{'dateTime': '01:18:00', 'value': '3'},
{'dateTime': '01:19:00', 'value': '3'},
{'dateTime': '01:20:00', 'value': '3'},
{'dateTime': '08:38:00', 'value': '1'},
{'dateTime': '08:39:00', 'value': '1'},
{'dateTime': '08:40:00', 'value': '2'}],
'minutesAfterWakeup': 1,
'minutesAsleep': 414,
'minutesAwake': 30,
'minutesToFallAsleep': 0,
'restlessCount': 18,
'restlessDuration': 25,
'startTime': '2017-01-29T01:16:00.000',
'timeInBed': 445}
データの中身
key名 | 内容 |
---|---|
dateOfSleep | 日付(起床日) |
isMainSleep | その睡眠がメインの睡眠かどうか |
dateOfSleep | 起床回数 |
startTime | 就寝時間 |
timeInBed | ベッドに横になっていた時間(分間) |
awakeCount | 起床回数 |
restlessCount | 寝返り回数 |
minutesAsleep | 睡眠時間(分間) |
minutesAwake | ベットで起きていた時間(分数) |
minutesToFallAsleep | 眠りに落ちるまでの時間(分間) |
minutesAfterWakeup | 起きてから起き上がるまでの時間(分間) |
dateOfSleep | 起床回数 |
minuteData | 1分毎の睡眠レベル { 1:睡眠, 2:寝返りを繰り返す, 3:覚醒} |