Fitbit

FitbitAPI BMI、体重データを取得する

投稿日:

体脂肪率と同様にオプション的な扱いだが、Fitbit では 体重、BMI を記録、閲覧できる。
体脂肪率と体重・BMI の両方を取得するにはそれぞれ異なるAPIを叩く必要があるが、これは計測機器への配慮だろう。体重・BMIと体脂肪率を一度に取得するということは、体重・BMI・体脂肪率が全て揃っていることが前提となり、両方測定できる体組成計があることを前提としなければならない。

体重だけであればかなり安価な計測機器があるはずだ。一方で、安価な体重計とWiFi機能の組み合わせは不釣り合いという事情がある。これもIoTのジレンマかな。

※実際は、体脂肪率データが一緒に記録された場合、このAPIによって体重、BMI、体脂肪率を1度に取得できる。FitbitAPIは仕様との互換性を保ちつつ便利な方向に拡張される傾向がある

API概要

体重・BMIを取得するRESTfulAPI は以下の通り3パターン用意されている。

GET /1/user/[user-id]/body/log/weight/date/[date].json
GET /1/user/[user-id]/body/log/weight/date/[base-date]/[period].json
GET /1/user/[user-id]/body/log/weight/date/[base-date]/[end-date].json
parameter format meaning
date yyyy-MM-dd データの日付
base-date yyyy-MM-dd [period]が指定された場合は指定期間の末尾を指定する。
[end-date]が指定された場合は指定期間の最初を指定する。
period 1d, 7d, 30d, 1w, 1m 取得範囲を指定する。1d=1日, 7d=7日, 30d=30日, 1w=1週間, 1m=1か月。1か月と30日が別に用意されていて親切だ。
end-date yyyy-MM-dd 指定期間の末尾を指定する。

データの取得期間は31日を超えてはならない。単位系はHTTPヘッダに付与したAccept-Languageによる。日本は"ja-JP"である。

レスポンス

レスポンスのスキーマは以下の通りである。

key format meaning
bmi XX.X BMI値、(formatは有効桁数を表すと思われる)
date yyyy-MM-dd データ日付
weight X.XX 体重値 (formatは有効桁数を表すと思われる)
logId ログID、ユーザ毎にユニークだが、グローバルにユニークではない
time H:i:s 計測時刻 (Time of the mesurement) 計測機器がサポートしない場合は前日の最終時刻。
source Aria,Withthings,APIなど 計測装置、入力経路の識別子、[オプション] API経由で入力すると"API"が設定される

1日に数回計測した場合の扱いは計測装置の事情によるようだ。Withthingの場合、複数回計測すると最後の値で上書きされる。朝と夜、2回の計測は必須だと思うが、残念ながら計測装置によって目的を達成できない

実行例

最初の書式を叩いてみた。この日は2回計測したのだがデータは1個だけである。上記で説明したスキーマ以外に体脂肪率も付いてきた。仕様通りbmiとweightについては有効桁数が考慮されている。一方、体脂肪率は考慮されていない。

/1/user/[user-id]/body/log/weight/date/2016-06-14.json
Array
(
    [weight] => Array
        (
            [0] => Array
                (
                    [bmi] => 22.01
                    [date] => 2016-06-14
                    [fat] => 15.918999671936
                    [logId] => 1465948799000
                    [source] => Withings
                    [time] => 23:59:59
                    [weight] => 67.4
                )

        )

)

2個目の書式を叩いてみた。「2016-06-14を末尾として1週間取得する」という意味。

GET /1/user/[user-id]/body/log/weight/date/2016-06-14/1w.json
Array
(
    [weight] => Array
        (
            [0] => Array
                (
                    [bmi] => 22.01
                    [date] => 2016-06-07
                    [fat] => 14.520999908447
                    [logId] => 1465343999000
                    [source] => Withings
                    [time] => 23:59:59
                    [weight] => 67.4
                )

            [1] => Array
                (
                    [bmi] => 22.27
                    [date] => 2016-06-08
                    [fat] => 15.515999794006
                    [logId] => 1465430399000
                    [source] => Withings
                    [time] => 23:59:59
                    [weight] => 68.2
                )

            [2] => Array
                (
                    [bmi] => 22.14
                    [date] => 2016-06-09
                    [fat] => 14.659999847412
                    [logId] => 1465516799000
                    [source] => Withings
                    [time] => 23:59:59
                    [weight] => 67.8
                )

            [3] => Array
                (
                    [bmi] => 21.94
                    [date] => 2016-06-10
                    [fat] => 14.616000175476
                    [logId] => 1465603199000
                    [source] => Withings
                    [time] => 23:59:59
                    [weight] => 67.2
                )

            [4] => Array
                (
                    [bmi] => 21.94
                    [date] => 2016-06-11
                    [fat] => 16.163000106812
                    [logId] => 1465689599000
                    [source] => Withings
                    [time] => 23:59:59
                    [weight] => 67.2
                )

            [5] => Array
                (
                    [bmi] => 22.07
                    [date] => 2016-06-12
                    [fat] => 14.592000007629
                    [logId] => 1465775999000
                    [source] => Withings
                    [time] => 23:59:59
                    [weight] => 67.6
                )

            [6] => Array
                (
                    [bmi] => 21.94
                    [date] => 2016-06-13
                    [fat] => 14.64999961853
                    [logId] => 1465862399000
                    [source] => Withings
                    [time] => 23:59:59
                    [weight] => 67.2
                )

            [7] => Array
                (
                    [bmi] => 22.01
                    [date] => 2016-06-14
                    [fat] => 15.918999671936
                    [logId] => 1465948799000
                    [source] => Withings
                    [time] => 23:59:59
                    [weight] => 67.4
                )

        )

)

-Fitbit
-, , ,

Copyright© ikuty.com , 2018 AllRights Reserved Powered by AFFINGER4.