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形式に変換しています。
▼SQLでUNIX時刻→JST
a-habakiri.hateblo.jp
▼SQLiteシェルで sqlite.db を処理する
a-habakiri.hateblo.jp
▼Mi Band Master でMi Bandのデータを抽出する
a-habakiri.hateblo.jp