一所懸命に手抜きする

デスクワークばかりのスポーツ嫌いで50歳も過ぎ、いよいよ足腰に衰えを感じつつある昨今。

Mi Band Master のデータをRで読み込む方法

Mi Band Master のデータをRで読み込む

 Mi Band 2 のデータはCloudにあるらしいのですが、公式アプリ Mi Fit を使ってもCSVなどに落とすことはできないようです。一方、Mi Band Master というアプリは取得したデータを、SQLite形式の db.sqlite として出力してくれます。今回はこれをRで読み込みたいと思います。
 RでSQLiteを扱うには、RSQLite パッケージが必要です。私は、あれもこれもとインストールしたくはないのですが、sqldfを使っているため、すでにRSQLiteはインストールされています。

コード例

 例としてc:/wrk/db.sqlite のテーブル sleep からデータを抽出してみます。

db.sqlite からデータを抽出する例
library("RSQLite")
con = dbConnect(SQLite(), "C:/wrk/db.sqlite", synchronous="off")
dbListTables(con)
dbGetQuery(con, 
"select datetime(start_time,'unixepoch','localtime') as Time1,
        datetime(end_time,'unixepoch','localtime') as Time2,
        awake,deep,light,stages from sleep")
dbDisconnect(con)
実行結果
実行結果

> library("RSQLite")
> con = dbConnect(SQLite(), "C:/wrk/db.sqlite", synchronous="off")
> dbListTables(con)
 [1] "alarm"               "android_metadata"    "app_notification"   
 [4] "call_notification"   "event_notification"  "func_button_action"
 [7] "func_button_profile" "heartrate"           "settings"           
[10] "sleep"               "sms_notification"    "sqlite_sequence"    
[13] "stats"               "steps"  

> dbGetQuery(con,
+ "select datetime(start_time,'unixepoch','localtime') as Time1,
+ datetime(end_time,'unixepoch','localtime') as Time2,
+ awake,deep,light,stages from sleep")
                 Time1               Time2 awake deep light                                             stages
1  2018-01-01 00:48:00 2018-01-01 06:05:00     0  182   135   10L25D41L42D10L12D17L44D3L18D7L12D13L12D6L17D28L
2  2018-01-02 00:09:00 2018-01-02 06:08:00     0  142   217             14L33D26L20D62L43D44L17D7L14D10L15D54L
3  2018-01-02 23:53:00 2018-01-03 06:10:00     0  187   190        10L24D4L20D21L39D20L69D31L13D5L11D83L11D16L

> dbDisconnect(con)
>

 ご覧の通り、簡単にデータを抽出できます。sqlite.db には複数のテーブルが含まれるので、テーブル一覧を確認してから、そのテーブルからデータを取得しています。この日付時刻はUNIX時刻なので、JSTに変換の上、yyyy-mm-dd形式に変換しています。
SQLUNIX時刻→JST a-habakiri.hateblo.jpSQLiteシェルで sqlite.db を処理する a-habakiri.hateblo.jp ▼Mi Band Master でMi Bandのデータを抽出する a-habakiri.hateblo.jp