Перейти к содержимому

Документация

Поездки, карта и обмен

Как пишется история, что показывают графики, и как отдать данные наружу.

Пока колесо подключено и вы едете, приложение пишет поездку в память телефона. Никуда наружу эти данные не уходят.

История поездок#

История открывается двумя путями: с экрана поиска колёс — до подключения — и из меню на экране приборов, кнопкой «История поездок». Второй путь и есть основной: райдер проводит всю поездку на приборах, и сравнить её с прошлой хочется оттуда же.

Каждая поездка — карточка с миниатюрой маршрута: форму трека узнаёшь быстрее, чем читаешь дату. Заголовок карточки — дистанция; рядом с ней цветная точка, если за поездку был пройден порог предупреждения. Цвет точки — та же полоса серьёзности, что и на приборах.

Сверху — сводка за месяц: километры, время в пути, число поездок и максимальная скорость. Поездки сгруппированы по дням, у каждого дня свой итог. Записи короче трёхсот метров — подключение на парковке, перестановка колеса — свёрнуты в одну строку и списку не мешают; нажатие на неё разворачивает их обратно. Диагностические сессии показывают число полей StR и отсчётов, а не нули по скорости.

Поиск сверху ищет по имени колеса и по дате. Несколько поездок можно выделить долгим нажатием и затем удалить сразу или объединить в одну.

Объединение поездок#

Одна поездка часто попадает в историю несколькими кусками: колесо разрядилось и вы поменяли батарею, телефон потерял связь на светофоре, вы заехали в магазин и приложение закрылось. В режиме выбора отметьте эти куски и выберите «Объединить».

Телеметрия и трек переезжают в самую раннюю из выбранных поездок, остальные исчезают из списка. Дистанция складывается, даже если счётчик колеса между кусками обнулился; расход батареи считается от начала первого куска до конца последнего. Разрыв между кусками нигде не помечается — дальше это обычная поездка, с картой, карточкой и выгрузкой.

Объединять можно только поездки одного колеса, только идущие подряд и только завершённые: идущую прямо сейчас запись приложение не тронет. Если между выбранными поездками осталась невыбранная, приложение откажется — иначе она оказалась бы внутри объединённой, и в истории висели бы два наложенных друг на друга отрезка. Ненужную поездку из промежутка достаточно удалить, и объединение станет возможным. Отменить объединение нельзя.

Одна поездка#

Трек, окрашенный скоростью, шесть итогов — максимальная и средняя скорость, максимальный ШИМ, расход батареи, расход на километр и пробег после поездки, — профиль выбранных показателей и список показателей со сводкой «минимум · среднее · максимум». Нажатие на строку сводки открывает полный график этого показателя, нажатие на трек — карту.

Ползунок под графиками задаёт окно просмотра: пятичасовая поездка целиком — это сплошная заливка, а в окне видно каждый разгон. Окно общее у экрана поездки и экрана графиков: ушли в графики и вернулись — окно осталось там, где вы его поставили.

Кнопка «Метрики» открывает полный список записанных показателей поездки со спарклайнами — форма кривой видна до открытия. Иконка графика в строке добавляет показатель на экран графиков и убирает оттуда. Графики не ограничены скоростью и ШИМ: на дорожки можно вывести любой записанный показатель.

Графики#

По умолчанию показатели идут дорожками друг под другом — у каждой своя шкала и свои подписи. Наложение на одну ось остаётся вторым режимом: оно удобно для показателей одной природы. Курсор проходит через все дорожки сразу, в шапке каждой — значение в этой точке. Пороги предупреждений нарисованы теми же начертаниями, что и на приборах.

  • График приближается двумя пальцами, точка увеличения там, где пальцы.
  • Приближённый участок двигается двумя пальцами по горизонтали.
  • Там, где запись прерывалась — потеря связи, пауза между кусками склеенной поездки, — линия рвётся, а не тянется прямой через пустоту. Так же ведут себя трек на карте и профиль высот: прямая между кусками не считается ни пройденным расстоянием, ни набором высоты.
История поездок на Android: поиск, итог за период, поездки по дням с силуэтом маршрута
Android. Поездки собраны по дням, у каждой силуэт маршрута и точка серьёзности.
История поездок на iPhone: итог за месяц, поездки по дням, силуэт маршрута и точка серьёзности
iPhone. Тот же список: итог за месяц, дни и силуэты.
Графики поездки на Android: скорость, ШИМ и напряжение дорожками с общим курсором
Android. Дорожки со своими шкалами, общий курсор и окно просмотра внизу.
Одна поездка на iPhone: трек, окрашенный скоростью, и шесть итогов
iPhone. Одна поездка: трек, окрашенный скоростью, и итоги.
Графики поездки на iPhone: скорость, ШИМ и напряжение дорожками со своими шкалами
iPhone. Дорожки со своими шкалами и общей осью времени.

Запись трека и карта#

Если включить запись маршрута, приложение будет писать положение по спутникам во время активной поездки. Потом маршрут можно посмотреть на карте. По треку приложение также считает профиль высот.

Запись маршрута требует разрешения на точную геопозицию. Без разрешения остальные функции работают как обычно, только трека не будет.

Карта отвечает не на вопрос «где я ехал», а на вопрос «где было горячо». Подложка намеренно приглушена: на экране разбора поездки яркий только трек.

Откуда берётся подложка#

Тайлы приходят от CARTO, и с 2026 года они выдаются по ключу: без него сервер отдаёт ту же картинку, но с надписью «API KEY REQUIRED» поперёк каждого квадрата. Отвечает он при этом как на успех, поэтому приложение проверяет подложку само — раз в час скачивает один заведомо пустой квадрат и смотрит на его вес. Помеченный весит почти в двадцать раз больше чистого.

Если проба показывает надпись, карта переходит на запасную подложку — Esri Gray Canvas, такую же приглушённую и тоже бесплатную. У неё свой предел приближения, z16: ближе она не детализирована, и карта честно упирается в него, вместо того чтобы показывать пустоту.

В разделе настроек «Карта и GPS» подложку можно выбрать руками: Авто, CARTO или Esri. «Авто» — это описанная проба; два других пункта её решение отменяют.

Кто двигает карту#

Масштаб — щипком или кнопками «+» и «−» в углу карты. Под ними «вписать трек»: она возвращает камеру так, чтобы маршрут целиком помещался на экран.

Сама по себе карта встаёт по треку ровно один раз — когда трек впервые появился. Дальше она принадлежит вам: во время поездки маршрут растёт, но камера остаётся там, куда её увели рукой, и не прыгает обратно. Вернуть её к треку — той самой кнопкой.

Трек красится показателем#

Трек несёт показатель цветом, и читается он так же, как на приборах: оттенок говорит, какой это показатель, а насыщенность — насколько нагруженным был участок. Спокойные участки уходят в землю, нагруженные отрываются от неё.

Шкала цвета натягивается на саму поездку. Причина простая: предел — это ваш порог, скажем 62 км/ч, а городская поездка идёт на 20–44, то есть в средней трети шкалы. Растянутая по поездке, она показывает разницу между «неспешно» и «бодро» там, где вы на самом деле ехали. Отсюда одно следствие, о котором стоит знать: цвета сравнимы внутри одной поездки, но не между поездками. «Здесь было горячее, чем там» — да; «эта поездка горячее прошлой» — для этого есть история и графики.

Совсем ровная запись — стояние в пробке — не растягивается: у неё нет формы, и раздувать шум до полной шкалы значило бы рисовать погоду вместо езды.

Порог при этом остаётся на месте. Там, где показатель ушёл за него, трек перекрашивается в цвет серьёзности — тот же, каким рамка плитки на приборах сообщает о пробитом пороге. Красный на треке означает ровно одно: сработал ваш порог. Он никогда не означает «быстро»: если порога по скорости у вас нет, самый быстрый участок поездки будет ярким, но не красным.

Разрывы записи рвут трек, а не тянутся прямой через пустоту: между кусками склеенной поездки колесо ехало неизвестно где. А там, где положение писалось, но телеметрии в этот момент не было, маршрут остаётся виден тёмной ниткой — без цвета, но и без дыры.

Что стоит за одной точкой трека#

Трек разложен по секундам поездки, а не по отметкам спутников. Разница заметнее всего там, где небо плохое: отметки приходят раз в две секунды, а под мостами и во дворах — раз в сотню метров, и такой кусок раньше был одного цвета целиком, потому что внутри него у прибора не было ни одной точки. Теперь их столько, сколько секунд вы по нему ехали.

Расставлены они по счётчику пробега колеса, а не поровну по времени. Счётчик не зависит от неба и знает, сколько вы проехали к каждой секунде, — поэтому там, где вы тормозили, точки стоят плотнее. Место на карте и момент записи наконец означают одно и то же: куда ткнули, то и показано. У колёс, которые пробег не отдают, всё остаётся как было — раскладка по времени.

Цвет каждой точки — худшее за её секунду, а не значение ровно на её отметке. Телеметрия пишется в разы чаще секунды, и провал ШИМ на треть секунды раньше проваливался между точками и не красил ничего. Поэтому и подпись в строке показаний говорит «за секунду»: под ней стоит пик этой секунды — тот самый, которым покрашен участок.

Второй показатель — толщиной#

Двух оттенков у одной линии не бывает: оттенок и есть имя показателя. Поэтому второй показатель трек несёт не цветом, а толщиной: спокойный участок — тонкая жила, нагруженный — линия во всю ширину. Скорость цветом и ШИМ толщиной отвечают на два вопроса сразу, не перекрашивая маршрут дважды.

Толщина берёт нагрузку по своей шкале, растянутой по этой же поездке, — и на пределе сердечник закрывает обойму целиком.

Отметки#

  • Старт — кольцо, финиш — залитая точка. Стоят всегда, и по ним видно направление движения.
  • Пик каждого выбранного показателя — отдельная отметка со значением: пик у всего, что растёт к опасности, минимум у заряда и напряжений. Показатель, который красит трек, подписан словом «Пик» и крупным числом; остальные — числом с единицей в своём оттенке. Подписи без плашек, чтобы не закрывать то, ради чего карту открыли, и расходятся так, чтобы не наезжать друг на друга. Если места подписи не нашлось, остаётся кольцо — число всё равно стоит в дорожке под картой.

Дорожки под картой#

Под картой — тот же трек, распрямлённый по пройденному пути: по дорожке на каждый выбранный показатель, все на одной оси и под одним курсором. Так видно то, чего на сложенном маршруте не увидеть: где ШИМ подскочил при спокойной скорости, где мотор грелся дольше, чем длился подъём.

Работа показателя видна по тому, как нарисована его дорожка: заливка цветом — красит трек, столбики высотой — утолщает трек, тонкая заливка — показатель на карте не рисуется вовсе, но его пик отмечен, а форма видна здесь. Слева имя, справа значение: под курсором — в точке, без курсора — экстремум за поездку.

Дорожки делают три работы, которых карта не делает.

  • Легенда. У цветной загогулины на карте легенды быть не может. Распрямлённая, она читается сразу: видно, какой цвет спокойный, какой густой, и в каком порядке они шли по поездке.
  • Ведение пальцем. Попасть пальцем в сложенный трек мучительно, вести по ленте — нет. Курсор на ленте и точка на карте — одно и то же место, вести можно любым из двух. И там, и там выбирается место под пальцем, а не ближайшая отметка спутников: отметки пишутся раз в две секунды, то есть метрах в двадцати друг от друга, а показания берутся из записи поездки — она идёт независимо от неба и есть даже там, где отметки нет. Нажатие мимо трека снимает выбор.
  • Все срывы порога сразу. На карте они прячутся за складками маршрута, на дорожке выстроены в ряд засечками по верхней кромке. Сколько раз за поездку сработал порог и в каких местах — видно одним взглядом.

Под дорожками ось пройденного пути: ноль, середина, всего километров. Строка над ними держит два основных показателя — тот, что красит трек, и тот, что его утолщает, — плюс время и пройденный путь в выбранной точке.

Выбор показателей#

Внизу экрана ряд чипов — показатели, которые записаны в этой поездке. У чипа четыре состояния, и нажатие ведёт показатель по кругу:

  1. выключен — нажали, и он появился дорожкой под картой;
  2. дорожка — нажали ещё раз, и он красит трек;
  3. цвет — нажали ещё раз, и он уходит в толщину, а цвет забирает предыдущий;
  4. толщина — нажали ещё раз, и он выключается.

Больше четырёх показателей сразу не берётся: пятая дорожка отнимает у карты высоту, а глаз всё равно сравнивает четыре кривые, а не шесть. При потолке свободные чипы гаснут — нажатие на погасший ставит его вместо последней дорожки.

По умолчанию — скорость цветом и ШИМ толщиной. Выбор запоминается между открытиями экрана, но не переносится с поездки на поездку: он относится к тому, что вы разбираете прямо сейчас.

Карточка поездки#

Из любой поездки можно сделать картинку и отправить друзьям. На карточке маршрут, дата, дистанция, время в пути, максимальная и средняя скорость, максимальный ШИМ и расход батареи.

Настраивается многое: тема, акцентный цвет, цвет трека по значению выбранного показателя и набор плиток. Нажатие на плитку меняет её на другой показатель этой же поездки.

Карточка поездки на тёмной теме: маршрут на карте, дистанция, максимальная и средняя скорость, максимальный ШИМ, расход батареи и профиль высот
Тёмная тема.
Та же карточка на светлой теме, трек окрашен по значению ШИМ со шкалой
Светлая тема, трек окрашен по ШИМ. Карточка следует языку приложения.

Сколько всё это занимает#

Подробность записи вы задаёте сами.

  • Частота записи: каждый кадр или каждый второй, третий и так далее. Приложение сразу показывает, сколько это примерно даст снимков и мегабайт за час поездки.
  • Срок хранения: новая поездка вытесняет поездки старше выбранного срока. Пока новых поездок нет, история не трогается.

Кадры, в которых поставлен новый рекорд поездки по скорости, ШИМ или току, записываются всегда, независимо от выбранной частоты. Иначе разрежённая запись съедала бы именно те моменты, ради которых её и смотрят.

Выгрузка и загрузка#

  • Все поездки, телеметрия и точки маршрута выгружаются в один файл таблицы и загружаются обратно. Так переносят историю на новый телефон или между Android и iPhone.
  • Загрузка не создаёт дубликатов: поездки и записи сверяются по устойчивым ключам.
  • Трек отдельной поездки выгружается в формат GPX, который понимают сторонние карты и спортивные программы.
  • Отдельная поездка выгружается в формат WheelLog — «Экспорт Wheellog». Это тот самый файл таблицы, который принимают euc.world и разборы поездок, которыми обмениваются райдеры: в нём и телеметрия, и точки маршрута. Поездке, записанной без доступа к геопозиции, выгрузка тоже доступна — колонки координат просто останутся пустыми.
  • Отдельная поездка выгружается и в свой формат — «Архив LoEUC». GPX теряет телеметрию, WheelLog — всё, чего нет в его колонках; архив принимает наша же загрузка, поэтому поездка переезжает на другой телефон целиком, вместе со сводкой, по которой строится прогноз заряда. На Android тем же архивом выгружаются и отмеченные поездки — «Экспорт выбранных» в режиме выбора.
  • Выгрузка и загрузка показывают окно с полосой: сколько поездок из скольких уже перенесено. Его можно отменить. Отмена останавливается на границе поездок, поэтому в истории остаются только целые поездки — половины ни одна не получит. Остаток довозит повторная загрузка того же файла: дубликатов она не создаёт.

Плеер записей#

Приложение умеет записывать сырой обмен с колесом и потом проигрывать эту запись как живую поездку, с перемоткой и ускорением. Экран приборов, графики и предупреждения при этом ведут себя ровно так же, как с настоящим колесом, а в базу поездок ничего не пишется.

Это главный инструмент, когда нужно разобраться в поведении колеса или добавить поддержку новой модели: запись можно прислать мне, и я увижу ровно то, что видело ваше приложение.