日別アーカイブ: 2023年9月2日

Fitbit+Python(1)

ここでは、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

#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++がおすすめです。

H10+EliteHRV+Kubios

PolarH10+EliteHRV+Kubiosで心拍変動解析
 PolarH10は、運動研究分野で広く使われるチェストバンド型心拍モニターであり、多くの研究に採用されています。EliteHRVは、PolarH10と併用することでHRV測定を行うことのできるスマートフォンソフトウェアであり、無料で利用できます。HF・LFパワーやSDNN、RMSSDなど、基本的なHRV指標をPC無しで確認できます。Kubiosは、HRV解析に広く用いられるソフトウェアであり、機能を限定したStandard版を無料で利用することができます(有料版は、エラー補正機能など、より先進的な追加機能を使用することができます)。Kubiosのマニュアルは、HRV解析を理解する上で非常に参考になります。
 これらのハードウェア・ソフトウェアの組み合わせは、心拍・心拍変動の計測と解析を行う上で、コストパフォマンスの高い優れた方法と言えます。下記動画に大まかな手順を示したので、研究や実験演習における、心拍・心拍変動解析に導入されてはいかがでしょうか。

Schaffarczyk, M., Rogers, B., Reer, R., & Gronwald, T. (2022). Validity of the polar H10 sensor for heart rate variability analysis during resting state and incremental exercise in recreational men and women. Sensors, 22(17), 6536. 

Perrotta, A. S., Jeklin, A. T., Hives, B. A., Meanwell, L. E., & Warburton, D. E. (2017). Validity of the elite HRV smartphone application for examining heart rate variability in a field-based setting. The Journal of Strength & Conditioning Research, 31(8), 2296-2302. 

Tarvainen, M. P., Niskanen, J. P., Lipponen, J. A., Ranta-Aho, P. O., & Karjalainen, P. A. (2014). Kubios HRV–heart rate variability analysis software. Computer methods and programs in biomedicine, 113(1), 210-220.