LoginSignup
7
14

More than 5 years have passed since last update.

Fitbitで心拍数を取得する(忘備録)

Last updated at Posted at 2018-07-10

Fitbitで心拍数を取得する(忘備録)

先日Fitbit Alta HRを購入しました。
データ分析に心拍数や睡眠状態が欲しかったのでAPIを取得できるFitbitを購入。
【環境】
python 3.6.6
windows10

【前提】
Fitbitにログイン済み
pythonインストール済み

python-fitbit/gather_keys_oauth2.py 【OAuth 2.0 Client ID】 【Client Secret】をコマンドラインに入力してアプリ認証をしようとしたのですが、以下のメッセージが出てきて認証できませんでした。
ーーーーーーーーーーーーー
接続しようとしているアプリは Fitbit に有効なデータを提供しませんでした。この問題を報告してください。

Developer information: invalid_request - Invalid redirect_uri parameter value
ーーーーーーーーーーーーー
この原因はわからなかったのですが、今回試した方法では認証できたので、認証できなかった方は試してみて下さい。

0 準備

0-1 Postmanをインストール

Postman公式ページからPostmanをインストールします。

0-2 データ取得用のクライアントをダウンロードする

データ取得用のクライアントをインストールする。Zipファイルでダウンロード。(解凍後、Desktopに置いて使っていました。)

0-3 クライアントのREADMEに従って必要なものをインストール

コマンドプロンプト
pip install python-dateutil==2.4.0
コマンドプロンプト
pip install requests-oauthlib
コマンドプロンプト
pip install -r requirements/base.txt
コマンドプロンプト
pip install -r requirements/dev.txt
コマンドプロンプト
pip install -r requirements/test.txt

sudo上手くいかなかったので、とりあえず抜いて入れています。(アドバイスあればお願いします。)
これに加えてcherrypyが必要らしい

コマンドプロンプト
pip install cherrypy

コマンドプロンプトに黄色いエラーが出たらとりあえずpathを書き換えたり加えたりして対応してました。
上2つとcherrypyはDesktop、他はpython-fitbit-masterを広げてインストールしました↓

コマンドプロンプト
C:\Users\ユーザー名\Desktop\python-fitbit-master>pip install -r requirements/base.txt

C:\Users\ユーザー名\Desktop>pip install numpy

※Could not open requirements file: [Errno 2] No such file or directory: 'requirements/base.txt'などのエラーが出たらこのインストールの仕方を見直してみてください。

1 Fitbitのアプリケーションに登録

Fitbit開発者ページから自分のfitbitアカウントでログインし、Manageタブ→REGISTER AN APPタブからアプリケーションを登録

項目名 入力値
Application Name 適当
Description 適当
Application Website 適当
Organization 適当
Organization Website 適当
OAuth 2.0 Application Type Personal
Callback URL https://www.getpostman.com/oauth2/callback
Default Access Type Read-Only

※上の5つは適当で構わないようです。(以下注意事項)
Descriptionは10字以上
○○Websiteにはhttp://localhost/をいれてます
OAuth 2.0 Application TypeにはClientまたはPersonalを選択
(Personalにすると秒単位でデータが取れる)
Callback URLにはhttps://www.getpostman.com/oauth2/callbackを入力

Registerボタンをクリックで登録完了

これで、OAuth 2.0 Client ID,Client Secret,Callback URL,OAuth 2.0: Authorization URI,OAuth 2.0: Access/Refresh Token Request URI全てを取得できるのでメモする。

2 PostmanでAccess Token,refresh Tokenを取得

ここから先はこの方の「2. リクエストヘッダにOAuth認証情報を追加」を参考にしました。
この方のFitbitのアクセス許可で、許可ボタンをクリックすると、Existing Tokensの後に作成されたトークンが表示されるところまで行います。

Available TokensからManage Tokensを選択するとAccess Token,refresh Tokenが表示されます。

3 データの取得

python-fitbit-masterの中にFitbitTry.pyというファイルを作ります。(ファイル名は自由)

FitbitTry.py
import fitbit
# 2,3で取得したID
CLIENT_ID =  "XXXXXXXXXXXXXXXXXXXXXXX"
CLIENT_SECRET  = "XXXXXXXXXXXXXXXXXXXXXXX"
ACCESS_TOKEN =  "XXXXXXXXXXXXXXXXXXXXXXX"
REFRESH_TOKEN =  "XXXXXXXXXXXXXXXXXXXXXXX"

# 取得したい日付
DATE = "2018-07-06"

authd_client = fitbit.Fitbit(CLIENT_ID, CLIENT_SECRET
                             ,access_token=ACCESS_TOKEN, refresh_token=REFRESH_TOKEN)
# 心拍数を取得(1秒単位)
data_sec = authd_client.intraday_time_series('activities/heart', DATE, detail_level='1sec') #'1sec', '1min', or '15min'
heart_sec = data_sec["activities-heart-intraday"]["dataset"]
heart_sec[:10]

print(heart_sec[:10])

これを実行すると心拍数が取れます!

4.参考

●Qiita
FitbitのOAuth 2.0 APIをPostmanで試してみる方法
Pythonでfitbit APIから心拍数を取得してみよう!
python-fitbit データ取得クエリまとめ
一番分かりやすい OAuth の説明
Python 3でのファイルのimportのしかたまとめ
FitbitのAPIを手っ取り早く試してみる方法
●それ以外のサイト
Fitbit Charge HRの心拍数データを取得する
APIの開発がむちゃくちゃ捗る「Postman」の使い方
Fitbit Apiとpythonで心拍数の取得をする
FitbitのAlta HRを使ってプログラミング無しでゲーム中の心拍数を見る

5.おすすめ

金の果実 ゴールデンキウイ果汁味

7
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
14