ここでは、Fitbitで計測されたデータをPythonで取得する方法を解説します。作業のおおまかな手順は下記の動画をご覧ください。
Anacondaのインストール
Python実行環境であるAnacondaのインストールを行う。とりあえずAnaconda3をダウンロードして道なりにインストール。Environmentから仮想環境「Fitbit」を作成し、「OpenTerminal」でターミナルを表示する。Pythonコマンドで動作を確認する。Ctrl+Zで対話モードを終了できる。インストールは、こちらのサイトが参考になる。
Fitbitの開発者向けサイトでアプリケーションを登録する
PythonからFitbitAPIを使うにはアプリの登録が必要となる。FitbitDevelopperサイトにログインして、Manage>RegisterAppの順で進み、アプリケーションを登録する。設定は以下の画像の通りにする。URL関係は全てダミーのURLで問題なく、RedirectURLは、「http://127.0.0.1:8080/」とする。ページ内で作成された「OAuth 2.0 Client ID」と「Client Secret」をPythonスクリプト中で使用することになる。
(Devサイトでのアプリ作成方法)


Fitbit API Python Clientのインストール
GitHub – orcasgit/python-fitbit: Fitbit API Python Client Implementationからcodeボタンを押し、Zipファイルをダウンロードし、中身をCドライブ直下に配置する(こちらのサイトが参考になる)。さらに、下記コマンドで追加パッケージをインストールする。
pip install -r requirements/base.txt
pip install cherrypy
Pythonスクリプトでクラウド上のファイルを取得
c:\python-fitbitフォルダに下記スクリプトをfitbit01.pyという名前で保存し、実行する。Anaconda Promptから下記コマンドを打ち込む
python fitbit01.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | #fitbit01.py import sys import fitbit import gather_keys_oauth2 as Oauth2 print ( 'Hello FitbitAPP3' ) USER_ID = "hoge" CLIENT_SECRET = "hoge" DATE = "2021-06-03" # 取得したい日付 server = Oauth2.OAuth2Server(USER_ID, CLIENT_SECRET) server.browser_authorize() ACCESS_TOKEN = str (server.fitbit.client.session.token[ 'access_token' ]) REFRESH_TOKEN = str (server.fitbit.client.session.token[ 'refresh_token' ]) #print(ACCESS_TOKEN) print('\n') #print(REFRESH_TOKEN)print('\n') """Authorization""" auth2_client = fitbit.Fitbit(USER_ID, CLIENT_SECRET, oauth2 = True , access_token = ACCESS_TOKEN, refresh_token = REFRESH_TOKEN) """Getting data""" #print('Getting data\n') #fitbit_stats = auth2_client.intraday_time_series('activities/heart', DATE, detail_level='1min') ################################################## fitbit_stats = auth2_client.intraday_time_series( 'activities/heart' , DATE, detail_level = '1min' ) stats = fitbit_stats[ 'activities-heart-intraday' ][ 'dataset' ] OUTPUT_FILE = "HR_%s.csv" % DATE csv_file = open (OUTPUT_FILE, 'w' ) for var in range ( 0 , len (stats)): csv_file.write(stats[var][ 'time' ]) csv_file.write( "," ) csv_file.write( str (stats[var][ 'value' ])) csv_file.write( "\n" ) csv_file.close() ################################################## fitbit_stats = auth2_client.intraday_time_series( 'activities/steps' , DATE, detail_level = '1min' ) stats = fitbit_stats[ 'activities-steps-intraday' ][ 'dataset' ] OUTPUT_FILE = "STEP%s.csv" % DATE csv_file = open (OUTPUT_FILE, 'w' ) for var in range ( 0 , len (stats)): csv_file.write(stats[var][ 'time' ]) csv_file.write( "," ) csv_file.write( str (stats[var][ 'value' ])) csv_file.write( "\n" ) csv_file.close() ################################################## fitbit_stats = auth2_client.intraday_time_series( 'activities/calories' , DATE, detail_level = '1min' ) stats = fitbit_stats[ 'activities-calories-intraday' ][ 'dataset' ] OUTPUT_FILE = "CALO%s.csv" % DATE csv_file = open (OUTPUT_FILE, 'w' ) for var in range ( 0 , len (stats)): csv_file.write(stats[var][ 'time' ]) csv_file.write( "," ) csv_file.write( str (stats[var][ 'value' ])) csv_file.write( "\n" ) csv_file.close() |
トラブルシューティング
・RedirectURLが、http://127.0.0.1:8080/で正しく動作しない場合
ポート8080をなにかのプログラムが使っている可能性がある。その場合は、RedirectURLを、「http://127.0.0.1:8088/」とし、python-fitbitフォルダ中のgather_keys_oauth2.pyの該当部分を「8088」に変更してスクリプトを実施する。
・Pythonのスクリプトは何で作ればいいの?
プログラミング用のテキストエディタ、Notepad++がおすすめです。