Expectations
Most mobile phones have long learned to count steps. Many people wear fitness bracelets and watches, use Strava sports trackers, get on smart scales in the morning, try to control sleep and keep food diaries. Some even use smart blood pressure monitors and boots.
All applications related to these gadgets work internally, show graphs, tell you how to eat, how to move and how easy it is to reach your goal. They have one thing in common - they all, as a rule, are able to synchronize with the Google Fit application and through it exchange data with each other. Miltracker takes your steps from the bracelet app and recalculates calories based on activity, the bracelet takes weight and changes goals. And Google Fit all this kindly collects, stores, counts and gives.
This is what I thought when I decided to use its API to create a website where the user could see everything at once, in terms of analytics and comparison.
Under the cut - harsh reality.
Reality
So, “test equipment”: 2 Samsung mobile phones, MiBand3 and Misfit Shine trackers, worn together and in turn, Mi Scale scales, MyFitnessPal miltreker
Activity
Steps. It would seem that everything is simple: there are 3 sources of truth (mobile phone + 2 trackers). It is necessary to consider the total number of steps per day. GF has special “aggregated” requests for this case.
Now about the difference in readings. This is the difference between the values ​​of MiBand (orange line) and Google Fit app (green):
The difference in readings can reach 50-100%! What statistics are there with analytics? ..
I wrote in GF (without an answer, of course), wrote in the global support of Xiaomi (I was advised to reinstall the application in a special way and if necessary, change the tracker).
Further, I realized that it was still worse.
It turns out that gigantic differences can be achieved in the Google Fit mobile application and in its Google Fit API. Those. GF is crookedly synchronized with its own servers. People shyly ask on StackOverflow the only advice from GF is to change the request (in principle, it sometimes helps if the difference in values ​​is 1-5%, because the data are aggregated in different ways).
By the way, over time (after 4-8 weeks) magic happens with these “internal” discrepancies. They seem to be “smoothed out". In other words, the statistics for this August will be much more “truthful” than November. On this graph, the “problem” period is included from the link above:
So now the readings of the Android application and Rest are identical for this period, although when I asked the question, the difference was also enormous (up to 100%). The only bad thing is that they are “smoothed out" according to a completely incomprehensible law and almost always to the lesser side of the evidence of the bracelets.
If you take a steam bath, run the bracelet and Google Fit applications at the same time every evening, wait for them to be alone with each other in memory and in IU - there are much less discrepancies and omissions.
When the phone is in international roaming (in it I turn off mobile data and use only wifi in hotels / hotspots) - trouble. Regardless of the number of smart trinkets and indications on them, GF "zero" for whole weeks. And sometimes - a few more days after arriving home. Days of boating in Russia with a temporary (no more than a day) lack of communication and the Internet are also often reset.
Weight
This is the only thing with no problems. At least if you get up on the scales once in the morning. ) There are no gaps or inaccuracies. Probably because no one usually weighs himself day and evening and does not keep several different weights at home.
Food
Here the issue of synchronization with GF is even more acute than with activity. Those. if you fill out a food diary every night in a mobile application, or on a site, but synchronize with the application - everything is ok. If you decide to fill out a diary in the past 3-4 days - be prepared for the fact that only the last two will remain on Google:
These are “broken” periods with missed days. In fact, MyFitnessPal is filled for the entire period without passes.
Sleep
In the data about sleep coming from the bracelet, quality rather than quantity is usually more interesting: sleep phases, duration of deep sleep, etc. Unfortunately, GF does not distinguish between different phases of sleep, under the same “activityType”: 72 come “ Deep Sleep ”and“ Shallow Sleep ”. The difference is only literal, which means that for the native speaker of each separate language - his own. Those. currently only the total duration can be estimated from the API.
That's actually the whole picture for today. It remains to add that inside the smartphone, the exchange of these data between applications is also quite selective, specific and most importantly - unstable.
conclusions
In general, the GF project at the moment is more like a non-core piece of work by a Chinese manufacturer of gadgets that works for "leave me alone, a marketer." But not the company that is buying Fitbit right now and according to local rumors wants to become a global healthcare data provider.
It is hoped that with these changes GF will have more specific goals, they will begin to pay more attention to the project, and the accuracy of the data will be at least approximately true.