Привет! Меня зовут Виктор, я разрабатываю веб-приложение catisfit.com для анализа данных Google Fit.
Большая часть мобильных телефонов давно научилась считать шаги. Многие носят фитнес-браслеты и часы, пользуются спортивными трекерами типа Strava, становятся по утрам на умные весы, пытаются контролировать сон и ведут дневники питания. Некоторые даже используют смарт-тонометры и ботинки.
Все связанные с этими гаджетами приложения работают внутри себя, показывают графики, подсказывают, как надо есть, как двигаться и как легче достичь цели. Общее у них одно — они все, как правило умеют синхронизироваться с приложением Google Fit и через него обмениваться данными друг с другом. Милтрекер берет ваши шаги из приложения-браслета и пересчитывает калории с учетом активности, браслет берет вес и меняет цели. А Google Fit все это любезно собирает, хранит, подсчитывает и отдает.
Это я так думал, когда решил использовать его API чтобы создать сайт, где пользователь мог бы видеть все и сразу, в разрезе аналитики и сравнения.
Под катом — суровая реальность.
Итак, “испытательное снаряжение”: 2 мобильника Samsung, трекеры MiBand3 и Misfit Shine, носимые вместе и по очереди, весы Mi Scale, милтрекер MyFitnessPal
Шаги. Казалось бы, все просто: есть 3 источника истины (мобильник+2 трекера). Надо считать общее количество шагов в день. Есть у GF специальные “агрегированные” запросы на этот случай.
Теперь про разницу показаний. Это разница значений MiBand (оранжевая линия) и приложения Google Fit (зеленая):
Разница показаний может достигать 50-100%! Какая уж тут статистика с аналитикой?..
Я писал в GF (без ответа, само собой), писал в глобальный саппорт Xiaomi ( посоветовали по-особому жестко переустановить приложение и если что, менять трекер).
Далее я понял, что все еще хуже.
Оказывается, гигантской разницы могут достигать показания в мобильном приложении Google Fit и в его же Google Fit API. Т.е. GF криво синхронизируется со своими же серверами. Народ робко вопрошает на StackOverflow и единственный совет от GF — изменить запрос (в принципе, иногда помогает если разница в значениях 1-5%, т. к. данные агрегируются по-разному).
Кстати, со временем (спустя 4-8 недель) с этими “внутренними” расхождениями происходит магия. Они как бы “сглаживаются”. Другими словами, статистика за август этого года будет сильно “правдивее” ноября. На этом графике включен “проблемный” период с ссылки выше:
Так вот сейчас показания Android-приложения и Rest для этого периода идентичны, хотя когда я задавал вопрос, разница также была колоссальной (до 100%). Плохо лишь то, что “сглаживаются” они по совершенно непонятному закону и почти всегда в меньшую от показаний браслетов сторону.
Если запариваться — каждый вечер запускать одновременно приложения браслетов и Google Fit, ждать, чтобы они друг с другом побыли наедине в памяти и в IU — расхождений и пропусков сильно меньше.
Когда телефон в международном роуминге (в нем я отключаю мобильные данные и пользуюсь только wifi в отелях/хотспотах) — беда. Вне зависимости от количества смарт-побрякушек и показаний на них, GF “обнуляет” целые недели. Причем иногда — еще несколько дней после прилета домой. Дни катания на лодке по России при временном (не более суток) отсутствии связи и Интернета тоже часто бывают обнулены.
Это единственное, с чем нет проблем. По крайней мере, если вставать на весы один раз утром. ) Нет ни пропусков, ни неточностей. Наверное, потому, что днем и вечером никто обычно не взвешивается и несколько разных весов дома не держит.
Здесь вопрос синхронизации с GF еще острее, чем с активностью. Т.е. если каждый вечер заполнять дневник питания в мобильном приложении, или на сайте, но синхронизировать с приложением — все ок. Если вы решите заполнить дневник за 3-4 прошедших дня — будьте готовы к тому, что в Google останутся только последние два:
Вот такие “ломаные” периоды c пропущеными днями. По факту, MyFitnessPal заполнен за весь период без пропусков.
В данных о сне, приходящих с браслета, как правило больше интересно качество, а не количество: фазы сна, продолжительность глубокого сна и пр. К сожалению, GF не различает разные фазы сна, под одним и тем же “activityType”: 72 приходят “Глубокий Сон” и “Неглубокий сон”. Разница только литеральная, значит для носителя каждого отдельного языка — своя. Т.е. на данный момент из API возможно оценить только общую продолжительность.
Вот собственно и вся картина на сегодня. Остается добавить, что внутри смартфона обмен этими данными между приложениями также довольно выборочный, специфический и главное — нестабильный.
В целом проект GF на данный момент больше похож на непрофильную поделку китайского производителя гаджетов, работающую на “отстань, маркетолог”. Но не компании, которая прямо сейчас покупает Fitbit и по местным слухам хочет стать глобальным оператором медицинских данных.
Остается надеяться, что с этими изменениями у GF появятся более конкретные цели, проекту начнут уделять больше внимания, и точность данных хотя бы примерно будет соответствовать действительности.
Ожидания
Большая часть мобильных телефонов давно научилась считать шаги. Многие носят фитнес-браслеты и часы, пользуются спортивными трекерами типа Strava, становятся по утрам на умные весы, пытаются контролировать сон и ведут дневники питания. Некоторые даже используют смарт-тонометры и ботинки.
Все связанные с этими гаджетами приложения работают внутри себя, показывают графики, подсказывают, как надо есть, как двигаться и как легче достичь цели. Общее у них одно — они все, как правило умеют синхронизироваться с приложением Google Fit и через него обмениваться данными друг с другом. Милтрекер берет ваши шаги из приложения-браслета и пересчитывает калории с учетом активности, браслет берет вес и меняет цели. А Google Fit все это любезно собирает, хранит, подсчитывает и отдает.
Это я так думал, когда решил использовать его API чтобы создать сайт, где пользователь мог бы видеть все и сразу, в разрезе аналитики и сравнения.
Под катом — суровая реальность.
Реальность
Итак, “испытательное снаряжение”: 2 мобильника Samsung, трекеры MiBand3 и Misfit Shine, носимые вместе и по очереди, весы Mi Scale, милтрекер MyFitnessPal
Активность
Шаги. Казалось бы, все просто: есть 3 источника истины (мобильник+2 трекера). Надо считать общее количество шагов в день. Есть у GF специальные “агрегированные” запросы на этот случай.
Теперь про разницу показаний. Это разница значений MiBand (оранжевая линия) и приложения Google Fit (зеленая):
Разница показаний может достигать 50-100%! Какая уж тут статистика с аналитикой?..
Я писал в GF (без ответа, само собой), писал в глобальный саппорт Xiaomi ( посоветовали по-особому жестко переустановить приложение и если что, менять трекер).
Далее я понял, что все еще хуже.
Оказывается, гигантской разницы могут достигать показания в мобильном приложении Google Fit и в его же Google Fit API. Т.е. GF криво синхронизируется со своими же серверами. Народ робко вопрошает на StackOverflow и единственный совет от GF — изменить запрос (в принципе, иногда помогает если разница в значениях 1-5%, т. к. данные агрегируются по-разному).
Кстати, со временем (спустя 4-8 недель) с этими “внутренними” расхождениями происходит магия. Они как бы “сглаживаются”. Другими словами, статистика за август этого года будет сильно “правдивее” ноября. На этом графике включен “проблемный” период с ссылки выше:
Так вот сейчас показания Android-приложения и Rest для этого периода идентичны, хотя когда я задавал вопрос, разница также была колоссальной (до 100%). Плохо лишь то, что “сглаживаются” они по совершенно непонятному закону и почти всегда в меньшую от показаний браслетов сторону.
Если запариваться — каждый вечер запускать одновременно приложения браслетов и Google Fit, ждать, чтобы они друг с другом побыли наедине в памяти и в IU — расхождений и пропусков сильно меньше.
Когда телефон в международном роуминге (в нем я отключаю мобильные данные и пользуюсь только wifi в отелях/хотспотах) — беда. Вне зависимости от количества смарт-побрякушек и показаний на них, GF “обнуляет” целые недели. Причем иногда — еще несколько дней после прилета домой. Дни катания на лодке по России при временном (не более суток) отсутствии связи и Интернета тоже часто бывают обнулены.
Вес
Это единственное, с чем нет проблем. По крайней мере, если вставать на весы один раз утром. ) Нет ни пропусков, ни неточностей. Наверное, потому, что днем и вечером никто обычно не взвешивается и несколько разных весов дома не держит.
Питание
Здесь вопрос синхронизации с GF еще острее, чем с активностью. Т.е. если каждый вечер заполнять дневник питания в мобильном приложении, или на сайте, но синхронизировать с приложением — все ок. Если вы решите заполнить дневник за 3-4 прошедших дня — будьте готовы к тому, что в Google останутся только последние два:
Вот такие “ломаные” периоды c пропущеными днями. По факту, MyFitnessPal заполнен за весь период без пропусков.
Сон
В данных о сне, приходящих с браслета, как правило больше интересно качество, а не количество: фазы сна, продолжительность глубокого сна и пр. К сожалению, GF не различает разные фазы сна, под одним и тем же “activityType”: 72 приходят “Глубокий Сон” и “Неглубокий сон”. Разница только литеральная, значит для носителя каждого отдельного языка — своя. Т.е. на данный момент из API возможно оценить только общую продолжительность.
Вот собственно и вся картина на сегодня. Остается добавить, что внутри смартфона обмен этими данными между приложениями также довольно выборочный, специфический и главное — нестабильный.
Выводы
В целом проект GF на данный момент больше похож на непрофильную поделку китайского производителя гаджетов, работающую на “отстань, маркетолог”. Но не компании, которая прямо сейчас покупает Fitbit и по местным слухам хочет стать глобальным оператором медицинских данных.
Остается надеяться, что с этими изменениями у GF появятся более конкретные цели, проекту начнут уделять больше внимания, и точность данных хотя бы примерно будет соответствовать действительности.