ふと、タイトルのようなことを思い立った。
- 詳細度=1分間隔で1日分の心拍数を取得する
- 月初から月末まで繰り返す
- X軸=日にち、Y軸=0時0分からの経過時間、Z軸=心拍数となるようにデータを格納する
- gnuplotのsplotコマンドで格納したデータをプロットする
Fitbit API の呼出し制限
思い立つこと20分、コードを作成しAPIサーバからガシガシデータを取得していたのだが、ある時点からデータが取れなくなった。
以下のようなメールがFitbitから届いた。
Hello XXXXXXX,
This is an automated courtesy notice. No action is required. Your application, Test Php Application, exceeded the Fitbit API client+viewer rate limit for the users listed below.
HOGEHOGE (Hit: 2016/06/18 18:08:38, Reset time: 2016/06/18 18:59:59)
If you receive this notice regularly and would like to discuss potentially more efficient ways to use the Fitbit API, please contact api@fitbit.com.
Best regards,
The Fitbit API team
1分刻みの24時間データを31日分、5回ほどのTry&Errorでリミットに達した。APIから取得したデータをファイルに書き込んでみると、20KBくらいになる。jsonのオーバーヘッドがあるとしても1MBは取っていないはずだ。1時間後にはリミッターが解除されるので、あくまで攻撃対策なのだろうか。
実際、サービスを作るとしたらもっと高頻度にAPIを叩くと思うので、ちょっと大風呂敷広げている割にはリミッターが早いな、という印象。
ちなみに、石狩リージョンのさくらvpsからFitbitAPIに上記のような叩き方をした場合、ターンアラウンドタイムは5秒くらい。結構長い。都度つど取って良いデータではなく、1度とったら使いまわせるように保存しておかないとダメだ。
プロットしてみる
プロットしてみた。gnuplotで時系列データを扱うのは割と面倒。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
set grid xtics ytics mxtics mytics set datafile separator ',' set size square set xdata time set timefmt '%Y-%m-%d' set format x '%d' set xrange ['2016-05-01':'2016-05-31'] set yrange [0:1440] set zrange [40:200] set xtics 345600 set mxtics 2 set xlabel "day" set ylabel "minutes elapsed [min]" set zlabel "heart rate [bpm]" set terminal png set view 60,30,1,1 set output "hoge.png" set ticslevel 0.5 splot 'hoge.csv' using 1:2:3 w d lc palette title 'Heart Rate every day' |
結果
なんとなく絵になるグラフが出てきただけで、思っていたのと違うな。
手前から奥へ0時0分からの時間経過を表すが、大陸棚みたいになっている部分が睡眠時間。経験的に大陸棚が浅いと体調が悪い。心肺機能を高めると安静時心拍数が下がる(大陸棚が深くなる)ので、結果として体調が良くなる効果がある(と思う)。
奥の方でオレンジ色がポツポツ立ち上がっているのは、週4でジムに通って1時間の有酸素運動をしている部分。有酸素運動1時間というのは慣れても楽な運動ではないのだが、1日のうちの割合でいったら大した率ではないことがわかる。こうして体積を俯瞰してみると、ジムで運動することによる心拍数の増加時間の体積は無視できるような大きさに過ぎない。あぁ、悲しいなぁ。
大陸に上がってから、日によってベースとなる高度が異なることがわかる。例えば12日あたりを境にベースとなる高度が下がっている。カレンダーを遡ってみると、実はこの日は慢性的なストレスを抱える原因になっている出来事にある程度の区切りがついた日でした!すげぇ、心拍数。すげぇ。
心拍数の推移を体積として俯瞰すると、こうして何事もなかったかのようにやり過ごした心身に対するストレスを自覚するきっかけになる(かもしれない)。
ということで、とても面白いので、もう少しFitbitAPIで遊んでみます。