RでfitbitとJawboneから睡眠データを取得する

流れでfitbit HR chargeとJawbone UP3を入手できたので、各デバイスで取得した睡眠データを比較したい。
今回はまずデータを取得するところまで。

ターゲットとするデータ

fitbitは以下のような図を描くためのデータが欲しい。

Jawboneも以下のような描くためのデータが欲しい。

で、fitbitもJawboneもWeb APIを用意しているのでそこからデータを取得できる。

なお、fitbitの場合だと、fitbitScraperというWebスクレイピングするパッケージがある。
しかしこれだと今回俺が欲しい睡眠の詳細なデータ、何時にどのくらいの睡眠の深さだったかなどは取得できないのでやはりWeb APIをたたく必要がある。

パッケージを作った

とりあえずパッケージを作成したのでこれを使って情報を取得する。
いずれも開発者登録をしてAPI keyとAPI secretが必要である。
なおhttrパッケージの場合、callback URLをhttp://localhost:1410に設定しておく必要がある(以下参照)。
http://stackoverflow.com/questions/32301793/accessing-fitbit-api-via-r-no-web-scraping

コードの詳細はGithubを見てほしい。

Jawboneからのデータ取得

さて、Jawboneの場合は以下のようにしてデータを取得できる。

# インストール
# devtools::install_github("dichika/myJawbone")

library("myJawbone")

# 認証
jawbone_token <- getToken("YOUR API KEY", "YOUR CONSUMER SECRET")

# データの取得
getSleepTickdata("2016-01-27", jawbone_token)

結果は以下のようになる。depthは1が目覚め、2が浅い眠り、3が熟睡、のようだ。

      depth                time
1      1 2016-01-26 23:29:45
2      2 2016-01-26 23:34:45
3      3 2016-01-26 23:42:12
4      2 2016-01-26 23:50:25
5      3 2016-01-27 00:35:32
6      2 2016-01-27 00:49:42             
> 

fitbitからのデータ取得

fitbitの場合は以下のようにしてデータを取得できる。

# インストール
# devtools::install_github("dichika/myFitbit")

library("myFitbit")

# 認証
fitbit_token <- getToken("YOUR API KEY", "YOUR CONSUMER SECRET")

# データの取得
getSleepMindata("2016-01-27", fitbit_token)

結果は以下のようになる。valueは1が睡眠中、2が起床中のようだ。

  dateTime value
1 23:01:00     2
2 23:02:00     2
3 23:03:00     2
4 23:04:00     2
5 23:05:00     2
6 23:06:00     2
(以下略)

なお、fitbitのAPIを叩く場合、CRAN版のhttrパッケージだとoauth2.0_token関数に不具合があるようでgithub版を使わないとたぶん認証でエラーになるので注意。

次回はデータを比較する

先のSmartband2も、今回のJawbone、fitbitのどれも加速度を使って睡眠の状態を測定しているはずだが指標がばらばらである。
この辺比較してみたい。

Enjoy!!!