「fitbit」カテゴリーアーカイブ

Fitbitデータの取得手順

 Fitbit研究を行う上で,実験初日にデバイスとアプリの同機・記録,トークン認証などやる事が比較的多いため,こちらのブログに実施手順をまとめる。Fitbitデータ取得に用いるプログラムは,152ブログに「Fitbit自動管理化の巻」というタイトルで掲載しています。

開発環境の設定
 Fitbitデータを取得するPCの環境設定は,下記のブログを参照してください。心理サイエンス応用で使ったブログでも可。

===============================================================

実験当日の全体的な流れ
1. Fitbitアプリをインストールする(参照)
 インフォームドコンセントを行った後,AppleStoreからFitbitアプリをインストールする。次に,Fitbitアプリを開いて,デバイスのバージョン選択(Charge4,6)とプライバシーポリシーに同意する。Fitbitアカウントを作成し(新規もしくはGoogleアカウント),Fitbit端末と連携しているかを確認する。

*Fitbit端末の充電残量が不足しがちのため,充電しながらアプリをインストール

2. Fitbitアプリの説明
・アプリの機能を説明する(生理・行動指標の見方,LINEとの連携可能など)
・「1日1回アプリ画面を開いてデータの更新」を行うように教示する
・デバイスを充電するタイミングは,お風呂の時

3.Fitbit_API取得(参照)
 Fitbit開発者サイトにアクセスし,「Manage→RegisterApp→ManageMyApps」からClient_ID/Secretを取得する。

4. トークン取得・データ取得
 Fitbitデータを自動取得するうえで,「アクセス・リフレッシュトークン(以下AT・RT)」を取得する必要がある。これらトークンを取得する方法は下記のブログを参照してください。一先ず,「(1)getTokens.py,(2)refreshTokens.py」でトークン取得の動作チェックを行い,「(3)FitbitDetaUploader.py」でphpにグラフ送信と,UnityのUserID・Passwardを作成する。

*トークン認証できない場合は,protolabのpythonフォルダで動作確認を行う。
*各種プログラムの役割:「(1)getTokens.py→トークンの取得」,「(2)refreshTokens.py→fitbituserフォルダの作成」「(3)FitbitDetaUploader.py→グラフ作成しphpに送信」

5. アプリの動作チェック
 phpにある,users.csvからClient_IDに対応したUserID・Passwardを実験参加者に配布する.Unityアプリでも確認でき,グラフが正常にアップロードされているかを確認する.

↑ここまでは,参加者と必ず行う。Client_IDとトークン認証が行えていればok.

*PCの環境設定を終えたうえで,データ取得できない場合は,プライバシーポリシーに同意していない可能性が高い。

================================================================

デバイスの管理
・端末の掃除:ベルト部分が着脱可能なため,水洗いする
・防水・温熱耐性:本体は防水使用だが,過度な水洗いと高温に注意
・データ管理:実験終了後は,ファクトリーリセットを行う

*ベルト部分が汚れがちのため,実験参加前に洗った方がよさげ

Fitbit/Python Instructions

※本記事は公開を想定して書かれています。

前回のあらすじ

データを取得した。

今回

Pythonを用いて,Fitbitに蓄積されたデータを取り出していく方法をして残しておきます。

まず,大まかな流れは以下の通りです。

  1. Fitbitを装着して,データを取得。
  2. FitbitをAppと同期。(サーバーにデータが記録)
  3. Fitbit Developerにて,APP Registration
  4. Anaconda install
  5. Anaconda作業フォルダ変更
  6. (Notepad++ install)
  7. コードをpyファイル化
  8. Anacondaでpyファイルを実行
  9. Excel閲覧

というような感じです。

解説すべきところを詳細に説明していきます。

3.Fitbit Developerにて,APP Registration

これは,Fitbitに「APP作って,データ取得するよ~」と言うものです。

  1. Fitbit Developerサイトにlogin
  2. 右上から,Manage > Register An APP
  3. 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_IDCLIENT_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)

運動方法のご紹介

*本記事は徳永によるFitBitを用いた研究にご協力いただいている方に向けてのものです。

この度は研究にご協力くださりありがとうございます。
運動をしろと言われたが,何をしたらいいのかわからんという方に向けていくつか動画を紹介させて頂きます。あくまで参考ですので,ご自身にあった運動を行ってください。

運動に慣れていない方から,そうでない方まで。水準別に運動動画を紹介します。

初心者向け
運動をあまりしてこなかった方におすすめです。

中級者向け
運動経験はあるが,ブランクがある方におすすめです。

上級者向け
今でも運動をやっている,体力には自信があるという方におすすめです。

ランブリング:自然の中を歩く習慣の勧め

 ランブリングとは、気ままにそぞろ歩くことであり、イギリス国民がこよなく愛する習慣である。 特にスコットランドでは、古来より私有地の散策が認められており、ウォーキングは大変人気のあるスポーツであるという。
 イングランドで行われた大規模調査からは、 近隣に公園、森、広場、河畔などがある場所に暮らしているひとは死亡率が低ことが示された。また、自然豊かなレクリエーション施設の近くで暮らす人たちは、そうでない人たちに比べ精神的健康状態が良好であることも示された。韓国で行われた研究では、乳がんに罹患した女性たちが2週間森の中で過ごしたところ免疫系のキラーT細胞の数が増え、その効果は14日間持続した。また、未婚の妊婦が森林で胎教レッスンに参加したところ、うつ病や不安の状態が大きく軽減したとの結果もある。
 このような研究結果を受け、スコットランド政府は、 誰もが自宅から500メートル以内の安全な森に行けるようにすると宣言し、植樹と森の美化活動に注力している。韓国は、100億円相当を投じて、プールや温泉施設、全長50キロメートルのトレイルなどが整備された国立山林治癒院を建設している。日本にも、科学的な効果が検証された全国60箇所以上の森林セラピー基地が存在する。その効果は折り紙付きで、環境は整いつつある。あとは歩くだけである。
(フローレンス・ウィリアムス著、 栗木さつき・森崎マリ訳 「NATURE FIX 自然が最高の脳をつくる 最新科学でわかった創造性と幸福感の高め方」より抜粋、一部加筆)

自然が心身に及ぼす効果の検証

 1980年代、建築家でもあった心理学者、ロジャー・ウルリッヒは、「なぜドライバーは遠回りになっても、わざわざ並木のある車道を走りたがるのか」疑問に思った。実験を行った結果、自然の風景のスライドを見せると、無機質なビルが並ぶ都会の風景を見せた場合に比べ、 リラックスを示すアルファ波が増加すること見出した。自然の風景は、ストレスからの回復に役立つことを示したわけである。
 現在では、自然の中で行う散歩が心身に様々な良い影響を与えることが確かめられている。感情調節機能について研究するジェームズ・グロスは、都会の中を歩いた参加者に比べ、自然の中を歩いた参加者は、記憶力や注意力が向上し、悲観的な思考を行う際活性化する、膝下前頭前野の血流が大きく減少することを見出した。日本の生理人類学者である宮崎良文は、森の中をゆっくり散策すると、都会を歩いている時に比べストレスホルモンであるコルチゾールが16%下がることを見出した。その他、交感神経活動や心拍数、血圧をも下げる効果が認められた。質問紙調査では、気分が良くなり不安感が軽減するという。環境医学を研究する免疫学者である李卿は、東京在住のビジネスマンを森に連れて行き、 2~4時間程度の ハイキングを3日間行ったところ、NK細胞(ナチュラルキラー細胞:がんの発生予防、細菌およびウイルス感染予防に大きな役割をはたす白血球の一種)活性が40%増加し、その効果が七日間持続することを見出した。このように、自然の中で過ごすことは、心身に様々な健康増進効果をもたらすことが、科学的な手法により確かめられている。
(フローレンス・ウィリアムス著、 栗木さつき・森崎マリ訳 「NATURE FIX 自然が最高の脳をつくる 最新科学でわかった創造性と幸福感の高め方」より抜粋、一部加筆)

アンケート調査記録のお願い

 Fitbitを使ったアクティブトラッカーの研究に参加している方は、下記の日程(2週間おき)で主観評定(GHQ30)の記録にご協力ください。

11月27日 12月11日 12月25日 1月8日 1月22日 2月5日 2月19日
日程はいずれも土曜日。

GHQ30記入の際は、日付と氏名のみご記入ください。氏名はfitbitアカウントに用いているメールアドレスの、@より前の部分(fit01, bunfit06など)をご記入ください。記入し終えたGHQ30用紙は、担当教員(畑・正保・長野のいずれか)にご提出ください。
 またその際、こちらのフォームから自然・運動・幸福感に関連するアンケートに併せてお答えください。