※本記事は公開を想定して書かれています。
前回のあらすじ
データを取得した。
今回
Pythonを用いて,Fitbitに蓄積されたデータを取り出していく方法をして残しておきます。
まず,大まかな流れは以下の通りです。
- Fitbitを装着して,データを取得。
- FitbitをAppと同期。(サーバーにデータが記録)
- Fitbit Developerにて,APP Registration
- Anaconda install
- Anaconda作業フォルダ変更
- (Notepad++ install)
- コードをpyファイル化
- Anacondaでpyファイルを実行
- Excel閲覧
というような感じです。
解説すべきところを詳細に説明していきます。
3.Fitbit Developerにて,APP Registration
これは,Fitbitに「APP作って,データ取得するよ~」と言うものです。
- Fitbit Developerサイトにlogin
- 右上から,Manage > Register An APP
- Application Name : 任意。
Description : APPの内容説明。
Application Website URL : Website URLを持っているなら記載。私は,先生のリンクを借りました。
Organization : このAPPが所属している組織。先生と同じにしました。
Organization Website URL : OrganizerのURL。先生はApplication Website URLと同じ。
Terms of Service URL : APPの利用規約。先生は同上。
OAuth 2.0 Application Type : Personal
Redirect URL : デフォルトhttp://127.0.0.1:8080/ 先生http://127.0.0.1:8088/
先生はPort8088。私はPort8080でできました。ピリオドとコロンを間違えたのかなと思ったり
元記事はこちら
4.Anaconda install
5.Anaconda作業フォルダ変更
Pythonファイルを扱うAnacondaをinstall.
元記事からインストールして,作業フォルダを変更してください。
見れない方はこちら
6.(Notepad++ install)
[Notepad++]で検索してインストールしてください。
おおよそ窓の社からになると思います。
7.コードをpyファイル化
Notepad++で元記事のコードをコピペ。pyファイルとして保存。
見れない方はページ下部↓211104のコードとなっています。
APP Registrationしたときに発行されたUSER_IDとCLIENT_SECRETを,
Line9(以下L9)の””間に入力。
1度目のAPP Registrationから時間が空いた場合は,CLIENT_SECRETが変わっている可能性があります。
保存したファイルは,変更した作業フォルダに入れることを忘れずに
心拍数のデータ取得なら211104のコードをおススメします。
8.Anacondaでpyファイルを実行
Anacondaでと入力, Enter.
私は,211104.pyと保存しています。任意のファイル名で保存してください。
9.Excelで閲覧
作業フォルダ内に,ALL.csvが作成されています。
実行完了後にcsvファイルを開いた方がいいかもしれません。
あとは,xlsxファイルにするなり好きにしてください。
何のグラフかは言わないけど,試しに出してみました。
+α
そのままのコードだと,ALL.csvと出力されます。
L18とL43のファイル名を変更することによって,ALL以外のファイル名で出力することができます。
211104コード
import sys
import fitbit
import gather_keys_oauth2 as Oauth2
from datetime import datetime, date, timedelta
print('Hello FitbitAPP4')
#nagano
USER_ID = ""; CLIENT_SECRET = ""
def requestFitbit(DATE):
rval=""
global auth2_client
fitbit_stats = auth2_client.intraday_time_series('activities/heart', DATE, detail_level='1min')
HRstats = fitbit_stats['activities-heart-intraday']['dataset']
OUTPUT_FILE = "ALL.csv"
csv_file = open(OUTPUT_FILE, 'a')
csv_file.write(DATE+",")
for num1 in range(24):
for num2 in range(60):
key='{:02}'.format(num1)+':{:02}'.format(num2)+':00'
#print(key+"/")
hr=""
for var in range(0, len(HRstats)):
#csv_file.write(str(HRstats[var]['time']))
#csv_file.write(",")
if str(HRstats[var]['time']) == key:
hr=str(HRstats[var]['value'])
#print("hit")
break
csv_file.write(hr)
csv_file.write(",")
csv_file.write("\n")
csv_file.close()
return rval
##################################################
def writeindex():
OUTPUT_FILE = "ALL.csv"
csv_file = open(OUTPUT_FILE, 'a')
csv_file.write(",")
for num1 in range(24):
for num2 in range(60):
key='{:02}'.format(num1)+':{:02}'.format(num2)+':00'
csv_file.write(key)
csv_file.write(",")
csv_file.write("\n")
csv_file.close()
##################################################
"""Get tokens"""
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(REFRESH_TOKEN)
"""Authorization"""
auth2_client = fitbit.Fitbit(USER_ID, CLIENT_SECRET, oauth2=True, access_token=ACCESS_TOKEN, refresh_token=REFRESH_TOKEN)
"""request"""
#DATE = "2021-06-19"
#today = datetime.today()
#requestFitbit(datetime.strftime(today, '%Y-%m-%d'))
#requestFitbit("2021-06-19")
writeindex()
today = datetime.today()
for var in range(0, 150):
#day=today + timedelta(days=1)
#print(var+":" + datetime.strftime(yesterday, '%Y-%m-%d'))
stamp=datetime.strftime(today - timedelta(days=var), '%Y-%m-%d')
print("target: " + stamp)
requestFitbit(stamp)