Help us understand the problem. What is going on with this article?

python-fitbit データ取得クエリまとめ

More than 1 year has passed since last update.

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:覚醒}

参考サイト

python-fitbit GitHub
python-fitbit ドキュメント

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away