Часть 1. Выход из вендорского силуэта
Зачем вообще это писать
Каждый спортивный браслет — это маленький медицинский прибор, который знает о тебе больше, чем семейный врач: когда ты спал и как глубоко, как билось твоё сердце ночью, какие у тебя паузы дыхания, в какие минуты тебе было стрессово. Весь этот поток по умолчанию течёт в облачную систему производителя — и остаётся там навсегда, в чужой юрисдикции, на чужих условиях, с чужим правом на «улучшение сервиса».
Проблема не в том, что производитель прямо завтра сделает с данными что-то плохое. Проблема в силуэте зависимости: твои данные лежат в единственном месте, доступ к которому определяется единственной компанией. Закрылся сервис — история исчезла. Поменял браслет на другой бренд — история осталась у прошлого бренда. Захотел проанализировать сам — упёрся в закрытый API или PDF-выгрузку «по запросу».
Я носил Honor Band NFC 3 , 5 теперь 10 и параллельно копил недовольство этим силуэтом. Ниже при помощи ИИ (glm5.3) написано — как я вытащил (при помощи, как вы понимаете, всё той же GLM) свои данные полностью, без Huawei Developer аккаунта, без облака и без потери функциональности браслета.
Принцип: данные принадлежат тому, у кого они рождаются
Датчик на запястье рождает данные на твоём запястье. Всё, что происходит дальше, — уже транспортировка. Значит, если настроить маршрут так, чтобы данные шли с браслета прямо к тебе домой, минуя вендорское облако, — вопрос владения решается архитектурно, а не юридически. Никто не обязан ничего удалять или передавать: данные просто никогда не покидают твою собственность.
Это ключевая мысль. Не «попросить у вендора свои данные» (GDPR-запросы, архивы по email), а перехватить поток в точке рождения.
Инструмент, который делает это возможным
Существует проект Gadgetbridge — open-source Android-приложение, которое говорит с фитнес-браслетами напрямую по Bluetooth, тем же языком, что и родное приложение вендора. Протоколы реверс-инжинирятся сообществом годами, поддерживаются сотни устройств: Xiaomi, Amazfit, Garmin, Pebble, Honor, Huawei.
Что важно:
-
Браслет не знает разницы. Он парится с Gadgetbridge так же, как с родным приложением: время, будильники, уведомления, цели — всё работает.
-
История на браслете остаётся на браслете до момента синка, а синк идёт в локальную базу на телефоне.
-
Никакого облака. Приложению даже не нужен интернет после установки.
-
Экспорт в открытый формат: sqlite-база, живущая на твоём телефоне, читаемая чем угодно.
Honor Band 10 — свежее устройство, и его поддержка в Gadgetbridge пока в статусе «experimental». На практике это значит: базовые вещи (шаги, пульс, сон, стресс, SpO2, HRV) работают, какие-то экзотические функции могут быть недоделаны. Статус можно проверить на сайте проекта — там живая матрица поддержки. Для моих целей экспериментального уровня хватило с запасом.
Порядок действий (без привязки к конкретному телефону)
Всё делается один вечер. Требуется: телефон с Android, кабель USB, компьютер.
-
Установить Gadgetbridge — сборки распространяются через F-Droid и сайт проекта. Это не Play Market-приложение, у него другая модель доверия: открытый код, воспроизводимые сборки, подпись проверяема.
-
Отвязать браслет от родного приложения. В вендорском приложении — «unpair» / «отключить устройство».
-
Спарить с Gadgetbridge. Стандартный сценарий: приложение ищет браслет, браслет показывает подтверждение на экране, пара устанавливается. Это называется in-band pairing — вендорское приложение для этого больше не нужно вообще.
-
Выключить или заморозить родное приложение. Оно имеет привычку просыпаться в фоне и перехватывать Bluetooth-соединение. Браслет не может быть подключён к двум хозяевам сразу. Настройки Android позволяют просто запретить ему фон.
-
Настроить регулярный экспорт. В Gadgetbridge есть встроенная функция автоэкспорта базы — раз в час (или чаще) она кладёт копию базы в папку на телефоне. Это важно сделать сразу: база — единственное место, где живут все твои данные, и регулярная копия убирает страх «а если что-то сломается».
-
Выдать себе канал наружу. Пока данные живут на телефоне — они твои, но бесполезны. Дальше начинается вторая часть: как сделать так, чтобы данные сами, без тебя, приезжали домой.
Что изменилось на практике
-
Батарея. Первое, что замечаешь. Родное приложение — это постоянный фоновый сервис с облачным синком, push-каналами, аналитикой. Убрал — и телефон перестал быть пылесосом.
-
Зависимость. Браслет работает даже без интернета на телефоне. Сам синк — локальный Bluetooth. Никакой сервис вендора не участвует в цепочке.
-
Формат. Все данные — в одной sqlite-базе. Открыл любой sqlite-браузер — и вот они, поминутные замеры пульса за ночь, в сыром виде, в своей собственности. О вариантах этого будет написано в третьей части.
-
Приватность. Пульс в 3 часа ночи, стрессовый час в офисе, пробежка в парке — всё это больше не чьё-то сырьё для рекомендательного алгоритма.
Честные минусы
-
Статус экспериментальный — часть фич может подтянуться позже. Я осознанно обменял 5% функциональности на 100% владения данными.
-
Нет истории из старого облака. Данные, накопленные в вендорском приложении до миграции, там и остались. Перетащить их в новую базу штатной возможности нет (это плата за отсутствие вендорского API). Зато с момента перехода всё новое — моё, навсегда.
-
Один хозяин за раз. Браслет подключён к одному приложению. Дуал-синка не существует.
Ни один из этих минусов не перевешивает главный плюс: данные больше не hostage.
Что дальше, план публикации:
Вторая часть — про то, что делать с данными после того, как они стали твоими: как организовать автоматическую доставку с телефона (подсказка: браслет может и не знать про интернет, но телефон-то знает), где хранить, как не превратить личную базу здоровья в свалку CSV-файлов, и как заставить её отвечать на вопросы — от «а сколько я на самом деле спал в среду» до «покажи тренд пульса покоя за год».
Третья часть появится, когда накопится месяцы живых данных: что реальные цифры говорят о сне, нагрузке и восстановлении — и что из этого можно (и нельзя) делать выводы о себе.
