Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
53
Help us understand the problem. What is going on with this article?
@fujit33

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

More than 3 years have 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 ドキュメント

53
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  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
fujit33
brainpad
ブレインパッドは、2004年の創業以来、データによるビジネス創造と経営改善に向き合ってきたデータ活用・分析企業です。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
53
Help us understand the problem. What is going on with this article?