Knowledge Base

This is the official Knowledge Base created by okinesio Labs.
Here you find useful information about our development process as well as content about our experience during the project.


Pedometers in general

Common electronic pedometers (e.g. activity trackers) are equipped with an digital triple-axis accelerometer (3-DOF) which measures the acceleration of the three directions (X, Y, Z). With an algorithm parsing the values in the background, steps can be detected on a specific pattern. The accuracy of detection mostly depends on a good algorithm. Some trackers additionally use multiple sensors such as an accelerometer and a gyroscope (6-DOF or even more) for precise determination on the hardware side.

You can find plenty information about accelerometers on the internet (if you’re interested in this topic).

Commercial trackers

There are many commercial activity trackers on the market to choose from. The following list gives a rough overview of some representative brands (in alphabetical order):

 

Popular brands often sell a wider range of products with more or less features or some for a more specific group of customers. All trackers got basic functionality of counting steps and calculating the estimated burned calories as well as the walked distance and they include a feature for sleep tracking.

 


 

Export data from trackers

If you like to export data from a commercial tracking device to access individual numbers & values, it might be quite challenging (at first). Meanwhile there are public APIs available, but unfortunately not every company lets you easily access intraday data (i.e. without permission or payment etc.).

Nevertheless there are approximately 3-4 different strategies to get raw data from your tracker account, but some might not be supported by some vendors. One possibility is to simply download data in CSV format via the web interface (if provided). But you can only gain a daily summary of your data. The second is to make use of APIs. This might be the most flexible way: You can write a script yourself or use existing scripts. We listed some scripts we found on Github below (use at your own responsibility). If you just need fast and yet detailed data, you can use the API Explorer (if available) – this is useful for single requests.
The third option is to parse the web interface and collect data from graphs – if you analyze the network activity you might find the right response with requested data. It can, but might not always be as detailed as intraday data. And finally the fourth and advanced alternative is to sniff the bluetooth stream while syncing the device (we won’t focus on that for now).

 

We’re mostly interested in the counted steps, so the research might at some point refer on getting this data especially.Last revised: February 2016

 

Jump to: Fitbit, Misfit, Jawbone, Withings, Garmin, Sony


 

FITBIT

Website: https://dev.fitbit.com

No access to minute-by-minute (intraday) data with public API, only with Partner API (needs approval by fitbit). But they are supportive, if you want to use it for non-profit use:

„Fitbit is very supportive of non-profit research and personal projects. Commercial applications require additional review and are subject to additional requirements. To request access, email api at fitbit.com.“

 

API Explorer: https://apigee.com/me3/embed/console/fitbit

Data export: “Settings” > “Data Export” (daily summary in CSV or XLS)

Web interface: Steps summary for day & graph in 5min slots (based on full hour)

 

Articles:
http://simplystatistics.org/2013/01/02/fitbit-why-cant-i-have-my-data
http://quantifiedself.com/2013/02/how-to-download-fitbit-data-using-google-spreadsheets
http://quantifiedself.com/2014/09/download-minute-fitbit-data

Code/Scripts:
https://github.com/heyitspavel/fitbitphp (PHP)
https://github.com/TheSavior/fitbitphp (PHP – forked)
https://github.com/Fitbit/fitbit4j (Java)
https://github.com/orcasgit/python-fitbit (Python)
https://github.com/jplattel/FitBit.py (Python)
https://github.com/qslabs/FitbitIntraday (Google Spreadsheet Code)

 


 

MISFIT

Website: https://build.misfit.com

No access to minute-by-minute data (intraday) with API. There’s only a summary for each day available.
However, it’s possible to tag a specific activity (Triple tap on Misfit Shine to log activity). You’re able to track and afterwards demand the data from this defined timeslot. Access these activities via endpoint ‚sessions‘.

 

API Explorer: https://apigee.com/misfit_api/embed/console/v1

Data export: not provided.

Web interface: Steps summary for day & graph in 30min slots (full hour and half hour), insight is not really clear > logged activities displayed as an 30min-slot (shows time were activity took place in this slot). Not ideal for proper analyzing.

 

Code/Scripts:
https://github.com/orcasgit/python-misfit (Python)

 


 

JAWBONE

Website: https://jawbone.com/up/developer

The Jawbone API provides a nice endpoint called ‚moves‘ for hourly data as well as intervals every minute or even 10 seconds (for defined workouts).

 

API Explorer: https://apigee.com/jawboneapi/console/UP

Data export: “Settings” > “Account” (daily summary in CSV)

Web interface: not available.

 

Articles:
https://forum.quantifiedself.com/t/jawbone-up/701/5 (Forum post)

Code/Scripts:
https://github.com/jplattel/PyJawbone (Python)
https://github.com/andrewpbrett/jawbone-up-api (Ruby)

 


 

WITHINGS

Website: http://oauth.withings.com/api

No access to minute-by-minute data without activation through Withings (request needed) > see description: http://oauth.withings.com/api/doc#api-Measure-get_intraday_measure
After activation you can get a list of activity measures (series). Can’t specify yet if the level of detail is defined by a tracked activity or every minute.

 

API Explorer: not provided.

Data export: Tab “Measurement Table” > “Download” (daily summary in CSV)

Web interface: Steps summary for day & graph in 30min slots (full hour and half hour), additionally access minute-by-minute data via Request URL response (JSON)

 

Articles:
http://blog.hopkins.io/2013/07/25/withings-api > Link via archive.org (WaybackMaschine)

Code/Scripts:
https://oauth.withings.com/example_code.zip (PHP – own example script from Withings)
https://github.com/MoriTanosuke/withings-exporter (Java)
https://github.com/huitiemesens/withings (PHP)

 


 

GARMIN

Website: http://developer.garmin.com

Getting detailed information about the Garmin API is quite difficult.
It seems that the only option to get access to tracker data, is to get access to all data from end users worldwide ($5,000 One-time License Fee).
Additionally there’s a so-called „Wellness API“ for companies to read data from their employees devices to improve wellness etc. No public API (requires approval).

 

API Explorer: not available.

Data Export: “Reports” > “Export” (daily summary in CSV only for 7 days each)

Web interface: Steps summary for day & graph in 15min slots (based on full hour) > Login: http://connect.garmin.com

 

Articles:
http://sergeykrasnov.ru/subsites/dev/garmin-connect-statisics (FYI)

Code/Scripts:
?

 


 

SONY

Website: https://developer.sony.com/develop/services/lifelog-api

Sony only grants access to tracking data through the Lifelog API. You can therefore read all of the extra lifestyle data you logged besides the movement data. Could get bulky, but you got the possibility, if you like.
You can recall the tracked activities via API, subdivided in minute-by-minute data.

 

API Explorer: https://apigee.com/techdeveloperworld/embed/console/lifelog-api

Data export: not provided.

Web interface: No graph, displays taken steps only on interaction. No clear insight, however you can access minute-by-minute data via Request URL response (JSON) > Login: https://lifelog.sony.com

 

Code/Scripts:
https://github.com/championswimmer/Lifelog-Android-Library (Java/Android)