[fitbit] 2. PythonでFitbit APIを使ってデータ取得 その2 fitbit-pythonによる睡眠データの取得とmatplotlibによる表示

fitbit

はじめに

fitbitとは、心拍数、歩数や睡眠をトラッキングするために腕に着用するタイプのスマートウォッチです。日々の健康状態を把握するのにとても役立っています。ここでは、アプリの登録からtokenの取得までを解説したその1の続きとして、Fitbit APIを使って睡眠データを取得してmatplotlibで表示するところまで解説します。

その1はこちら↓です。

[fitbit] 1. PythonでFitbit APIを使ってデータ取得 その1 アプリの登録とtokenの取得
fitbitとは、心拍数、歩数や睡眠をトラッキングするために腕に着用するタイプのスマートウォッチです。日々の健康状態を把握するのにとても役立っています。ここでは、Fitbit APIを使ってデータを取得するために、アプリの登録からtokenの取得まで解説します。

手順

fitbit-pythonのインストール

pip install fitbit

fitbit APIをpythonで操作できるモジュールをインストールします。

fitbit-pythonのAPI VERSIONの変更

pip show fitbit

でfitbit-pythonがインストールされた場所を確認します。こうすると、Nameやversionなどに加えてLocationの情報が表示されます。locationの場所にあるapi.pyを開いて、

API_VERSION = 1.0

API_VERSION = 1.2

に変更して、保存して閉じます。2箇所あります。

これをすることでWake, Rem, Light, Deepの4段階の睡眠レベルの情報を受け取れるようになります。

モジュールのインポート

これ以降の処理はjupyter lab上で行います。

バージョン

CLIENT_ID, tokenなどを定義

その1で取得したCLIENT_IDとCLIENT_SECRETとtoken.txtをここで使います。token.txtは実行ファイルと同じ場所に置いておきます。

認証

fitbit.Fitbit()により、認証を行います。updateToken関数はtokenの更新用の関数でrefresh_cbupdateTokenとすることでtokenの期限切れの際に随時更新してくれるようになります。

睡眠データの取得

DATEを設定し、client.sleep(DATE)とすることで睡眠データが得られます。

取得したdata_sleep_1をpandasのDataFrameにすると以下のようになります。

dateTimelevelseconds
dateTime
2021-05-11 23:08:302021-05-11T23:08:30.000wake600
2021-05-11 23:18:302021-05-11T23:18:30.000light2850
2021-05-12 00:06:002021-05-12T00:06:00.000deep420
2021-05-12 00:13:002021-05-12T00:13:00.000light2070
2021-05-12 00:47:302021-05-12T00:47:30.000wake330
2021-05-12 00:53:002021-05-12T00:53:00.000light1800
2021-05-12 01:23:002021-05-12T01:23:00.000rem360
2021-05-12 01:29:002021-05-12T01:29:00.000light2220
2021-05-12 02:06:002021-05-12T02:06:00.000wake300
2021-05-12 02:11:002021-05-12T02:11:00.000light1770
2021-05-12 02:40:302021-05-12T02:40:30.000deep720
2021-05-12 02:52:302021-05-12T02:52:30.000light750
2021-05-12 03:05:002021-05-12T03:05:00.000rem1200
2021-05-12 03:25:002021-05-12T03:25:00.000light2880
2021-05-12 04:13:002021-05-12T04:13:00.000rem2190
2021-05-12 04:49:302021-05-12T04:49:30.000light1200
2021-05-12 05:09:302021-05-12T05:09:30.000deep1770
2021-05-12 05:39:002021-05-12T05:39:00.000light30
2021-05-12 05:39:302021-05-12T05:39:30.000wake240
2021-05-12 05:43:302021-05-12T05:43:30.000light1140
2021-05-12 06:02:302021-05-12T06:02:30.000wake270
2021-05-12 06:07:002021-05-12T06:07:00.000rem300
2021-05-12 06:12:002021-05-12T06:12:00.000wake510

sleepレベルを数値データに変換

dateTimelevelsecondslevel_int
dateTime
2021-05-11 23:08:302021-05-11T23:08:30.000wake6003
2021-05-11 23:18:302021-05-11T23:18:30.000light28501
2021-05-12 00:06:002021-05-12T00:06:00.000deep4200
2021-05-12 00:13:002021-05-12T00:13:00.000light20701
2021-05-12 00:47:302021-05-12T00:47:30.000wake3303
2021-05-12 00:53:002021-05-12T00:53:00.000light18001
2021-05-12 01:23:002021-05-12T01:23:00.000rem3602
2021-05-12 01:29:002021-05-12T01:29:00.000light22201
2021-05-12 02:06:002021-05-12T02:06:00.000wake3003
2021-05-12 02:11:002021-05-12T02:11:00.000light17701
2021-05-12 02:40:302021-05-12T02:40:30.000deep7200
2021-05-12 02:52:302021-05-12T02:52:30.000light7501
2021-05-12 03:05:002021-05-12T03:05:00.000rem12002
2021-05-12 03:25:002021-05-12T03:25:00.000light28801
2021-05-12 04:13:002021-05-12T04:13:00.000rem21902
2021-05-12 04:49:302021-05-12T04:49:30.000light12001
2021-05-12 05:09:302021-05-12T05:09:30.000deep17700
2021-05-12 05:39:002021-05-12T05:39:00.000light301
2021-05-12 05:39:302021-05-12T05:39:30.000wake2403
2021-05-12 05:43:302021-05-12T05:43:30.000light11401
2021-05-12 06:02:302021-05-12T06:02:30.000wake2703
2021-05-12 06:07:002021-05-12T06:07:00.000rem3002
2021-05-12 06:12:002021-05-12T06:12:00.000wake5103

睡眠レベルの経時的な変化を表示

睡眠レベルの経時的な変化をax.stepでステップ状のプロットで表示します。以下の図を作成することができます。

コードをダウンロード(.pyファイル)

参考

Overview — Python-Fitbit 0.3.0 documentation
PythonからFitbit APIを使ってデータを取得する(OAuth2) - ブログを書くまでが
昨年2016年にFitbitデビューしました。APIを使って遊んでみたかったのですができていませんでした。 以前この記事でもFitbit APIを使ってみたい的なことを言ったのでこの度やってみました。 この手のやってみた系は日本や海外ブログでいくつか見つけたのですが、最初のトークン取得を別の方法でできたのと、OAuth...

コメント