PythonでFitbit(1)

本ページの概要
PythonでFitbitデータを取得する基本的な方法を学習します。具体的には,(1)Python実行環境であるAnacondaのインストール,(2)Fitbitデータ取得用開発環境のダウンロード,(3)Fitbitデベロッパーサイトでのテストアプリケーションの作成,(4)サンプルコードの実行,を学びます。
Anacondaのインストール

Python実行環境である、Anacondaをインストールする。Anacondaをインストールしたら,EnvironmentからFITBITを作成し,ターミナルを開く。さらに,下記サイトから,開発環境を,自分のマシンの開発用ディレクトリ(C:\FITBIT)にコピーしてくる。
GitHub – orcasgit/python-fitbit: Fitbit API Python Client Implementation
AnacondaのTerminalで,下記コマンドを実行する。
pip install -r requirements/base.txt
pip install cherrypy

Fitbitアプリケーションの用意
FitbitDevelopperサイトの,「Manage>Register APP」からアプリケーション情報を入力する。URLは全て「http://kodamalab.sakura.ne.jp/wordpress/?p=46853」で良い。RedirectURLは「http://127.0.0.1:8080/」に設定する。登録後に表示される,「OAuth 2.0 Client ID」と「Client Secret」が必要になる。

PythonでFitbitデータを取得する
下記のプログラム「fitbitTest.py」をエディタで開発ディレクトリに作成し,プログラムのUSER_ID ,CLIENT_SECRET ,DATEをセットします。ターミナル上で,
python fitbitTest.py
と入力し,実行する。正常に動作すると,
「STEP2025-10-15.csv」「HR_2025-10-15.csv」「CALO2025-10-15.csv」
などのファイルが開発ディレクトリに作成される。

#fitbitTest.py
import sys
import fitbit
import gather_keys_oauth2 as Oauth2
   
print('Hello FitbitAPP3') 
   
USER_ID     = "hogehoge"
CLIENT_SECRET = "hogehoge"
   
DATE = "2025-10-15" # 取得したい日付
   
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()

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です