• このエントリーをはてなブックマークに追加

スポンサードリンク

はじめに

fitbit ionicを購入しました! fitbit Charge, altaに続いて、3台目の購入となります。ここまでくると私もfitbit マニア??

購入の動機は、睡眠の深度を測る機能が欲しかったから。てっきり、浅い睡眠で起こしてくれる機能がついたと思ったのだけれども、それはなかった(T_T)。

別の理由は、fitbit初のスマートウォッチということで、ディベロッパーとしてなにか応援できないかと思ったから。というわけで、このHackableなガジェットをハックします! Let’s Hack begin。

Fitbit APIをつかってみる

データの取得をするために、Fitbit APIを利用する。

まずは、API の IDを取得する。

https://dev.fitbit.com/login からログインして、 REGISTER AN APP を選択。情報を入力する。

  • Application Name 適当
  • Description 適当
  • Application Website 適当
  • Organization 適当
  • Organization Website 適当
  • OAuth 2.0 Application Type Personalを選択
  • Callback URL http://127.0.0.1:8080/ と入力
  • Default Access Type Read & Write を選択

次に、Access Tokenを取得する。取得するために、Pythonのツール、python-fitbitを利用する。

$ git clone git@github.com:orcasgit/python-fitbit.git
$ cd python-fitbit
$ pip install -r requirements/dev.txt
$ ./gather_keys_oauth2.py <Client ID> <client secret>

Access Tokenと Refresh Tokenをメモする。以下の4つはプログラムで必要になるのでメモする。

  • Client ID
  • Client Secret
  • Access Token
  • Refresh Token

スクリプトの作成

心拍数を取得するスクリプト。

import fitbit
import pandas as pd

CLIENT_ID =  "xxx"
CLIENT_SECRET  = "xxxx"
ACCESS_TOKEN =  "xxxx"
REFRESH_TOKEN =  "xxxx"

DATE = "2018-01-26"
client = fitbit.Fitbit(CLIENT_ID, CLIENT_SECRET,
                       access_token=ACCESS_TOKEN,
                       refresh_token=REFRESH_TOKEN)

stats = client.intraday_time_series('activities/heart', DATE, detail_level='1min')
heart_beat = stats["activities-heart-intraday"]["dataset"]

heart_df = pd.DataFrame.from_dict(heart_beat)
heart_df.index = pd.to_datetime([DATE + " " + t for t in heart_df.time])
heart_df.drop(["time"], axis=1, inplace=True)
heart_df.plot(y="value", figsize=(20,5))

以下のような時系列グラフが出力される。寝ている時間は心拍数が低い。