BYD DiLink app (3.0/5.0/5.1, UI7): split screen 1/3+2/3, navigation on instrument cluster, Yandex Navigator on HUD, blind-spot cameras on turn signal, Russian voice AI agent, real BMS consumption, trips/charges journal, automation, ABRP + webhook telemetry. Leopard 3 / Bao 3, Sea Lion 07, Song, Atto 3.
275
stars
682
commits
Kotlin
primary language
Sep 9, 2026
updated
Реальный расход, GPS-маршруты, автоматизация, AI-аналитика — локально, облако только по желанию.
Разделение экрана 1/3 и 2/3, навигация на приборной панели, подсказки Яндекс Навигатора на лобовом стекле, камеры слепых зон по поворотнику, голосовой помощник по-русски, телеметрия в ABRP.
Проверено на Leopard 3 (方程豹豹3), есть поддержка Sea Lion 07, Song, Atto 3, Seal, Han. DiLink 3.0, 5.0, 5.1 и прошивки с новым интерфейсом UI7 (OTA V1.6).
Возможности | Скриншоты | Автоматизация | Вывод на приборку | HUD | Разделение экрана | Голосовой агент | AI Инсайты | ABRP | Установка | Сборка | Релизы | Поддержать
Штатный бортовой компьютер BYD занижает расход на 10-30%. BYDMate берёт данные напрямую из BMS (energydata) и показывает реальное потребление. Плюс данные, которых нет в штатной системе: расход на стоянке, баланс ячеек, стоимость поездок, AI-аналитика.
Все основные функции (поездки, зарядки, автоматизации, локальные инсайты, офлайн голосовой агент) работают локально на DiLink и не требуют интернета. Облачные функции выключены по умолчанию и включаются только вручную вводом ключа. Что именно и когда уходит в сеть, описано в разделе «Данные и сеть».
Главное, что появилось в BYDMate после версии 3.0.
Разделение экрана на прошивках UI7. После обновления прошивки экран делит сама машина: панели 1/3 и 2/3, разделитель и жест обмена родные, BYDMate только запускает выбранную пару приложений. Выбор механизма в настройках на таких прошивках не показывается, он там один.
Триггер «Клавиша руля». Любую клавишу руля можно повесить на своё действие: Автоматизация, добавить триггер, «Клавиша руля», нажать нужную клавишу в режиме обучения. Выключили или удалили правило, клавиша снова работает по заводу.
Память о водителе. Агент запоминает имя и устойчивые предпочтения, если сказать ему об этом. Фраза «забудь …» убирает один факт, список фактов и кнопка «Забыть всё» в Настройки → Голос-агент → Агент.
Подсказки навигатора на лобовое стекло (HUD). Манёвр, дистанция до него, улица, время прибытия и знак ограничения скорости выводятся на заводской проекционный дисплей. Ведение продолжается, даже когда навигатор свёрнут или выведен на приборку. Нужна комплектация с HUD. Подробнее в разделе «HUD».
Разделение экрана 1/3 + 2/3. Два приложения на экране одновременно: навигатор пошире, музыка или мессенджер поуже. Запуск с виджета, из автоматизации и голосом. Если окна BYDMate на вашей прошивке недоступны, есть режим «Родное разделение» силами самой прошивки. Подробнее в разделе «Разделение экрана».
Камеры слепых зон. По включённому поворотнику картинка с боковой камеры сама появляется на приборке или в окошке на экране. Если сзади-сбоку обнаружена машина, окно подсвечивается оранжевой рамкой.
Голосовой AI-агент по-русски. Распознавание речи работает прямо в машине, без интернета. Простые команды исполняются мгновенно, остальное решает AI-агент: читает данные машины, управляет кузовом и климатом, строит маршруты, запускает сценарии и отвечает голосом. Подробнее в разделе «Голосовой AI-агент».
Ручной расчёт запаса хода. Если автоматический расчёт по истории поездок не подходит, в настройках батареи можно задать свою таблицу расхода в зависимости от температуры батареи.
| Функция | Описание | |
|---|---|---|
| BMS | Реальный расход | Данные BMS (energydata), не бортовой компьютер. Тренд по скользящему окну 25 км |
| GPS | Трекинг поездок | GPS-маршруты, дистанция, скорость |
| Charge | Зарядки | Автоматическая запись AC/DC, статистика за период и за всё время, ручное добавление и редактирование |
| AI | Инсайты | Анализ вождения: локальные правила на устройстве (по умолчанию) или LLM через OpenRouter |
| TRIP | Счётчики TRIP 1/2 | Пробег, расход, время и стоимость с момента сброса (как в машине); сброс долгим нажатием, подробности по касанию |
| Bat | Здоровье батареи и «Техника» | Карточка: SoH (на Leopard 3), температура, 12V, разброс ячеек, изоляция. Тап открывает экран «Техника» с живыми параметрами батареи, моторов, климата и шин |
| Map | Карта маршрута | osmdroid (OpenStreetMap) в деталях поездки |
| Rules | Автоматизация | Правила WHEN→THEN: триггеры по параметрам → команды управления машиной |
| Cluster | Вывод на приборку | Вывод выбранного приложения на приборную панель кнопкой руля (по умолчанию правая звезда) |
| HUD | Проекция на лобовое | Манёвры, дистанция и знак ограничения скорости из Яндекс Навигатора на заводском проекционном дисплее |
| Split | Разделение экрана | Два приложения сразу: окнами BYDMate в пропорции 1/3 и 2/3 либо штатным разделением прошивки |
| Cam | Камеры слепых зон | Камера нужной стороны по включённому поворотнику: на приборке или в окошке на экране |
| Voice | Голосовой агент | Русский офлайн-ассистент: распознавание речи на устройстве, AI-агент (32 инструмента), нейросетевая озвучка |
| Widget | Плавающий виджет | 7 полей поверх других приложений: SOC, запас хода, расход + тренд, время, t° салона, t° батареи, 12V |
| Auto | Автозапуск | WorkManager, запускается при включении |
| CSV | Экспорт данных | Экспорт поездок и зарядок в CSV |
Вокруг SOC-кольца расположены четыре значения в стиле плавающего виджета: сверху длительность поездки, одометр и температура в салоне; снизу пробег текущей поездки, расчётный запас хода и расход текущей поездки со стрелкой тренда. Цвета и логика тренда такие же, как в плавающем виджете, поэтому информация читается одинаково и на главном экране, и поверх других приложений.
Ниже кольца: AI-инсайт, малая карточка здоровья батареи (SoH на Leopard 3, температура, 12V), два счётчика TRIP 1 и TRIP 2, последние поездки, фильтр периода. Каждый счётчик показывает пробег, расход в кВт·ч (включая стоянку), время в пути и стоимость с момента сброса. Долгое нажатие сбрасывает счётчик, касание открывает детали.
Анализ эффективности вождения — расход, тренды, батарея, рекомендации (локально или через LLM)
Температура, SoH (на Leopard 3), 12V аккумулятор, баланс ячеек, напряжение
Аккордеон Месяц > День > Поездка с фильтрами и цветовой индикацией расхода
Правила КОГДА→ТОГДА, редактор условий и действий, настройки срабатывания
Разделы: Голос-агент, Виджет, Дисплей, Разделение экрана, Авто и батарея, Места, Интеграции, Сервис и данные, Приложение
Две панели 1/3 и 2/3, виджет BYDMate поверх
Вкладка Автоматизация позволяет создавать правила для автоматического управления автомобилем напрямую через системный интерфейс машины.
КОГДА условие выполняется → ТОГДА выполнить команду.
Примеры:
| Описание | |
|---|---|
| Триггеры | SOC, скорость, температура, двери, окна, люк, давление шин, режим езды, точки-геозоны, время суток, точное время и промежуток с днями недели, клавиша руля, тап по виджету, голосовая фраза, запуск сервиса, появление интернета и др. |
| Команды | Окна (включая отдельные — водителя и пассажира), климат, свет, замки, люк, зеркала — напрямую через системный интерфейс машины |
| 17 видов действий | Команда автомобилю, уведомление, запуск приложения, звонок, маршрут в Я.Навигаторе, открыть URL, Яндекс.Музыка, пауза, громкость медиа, охранный режим, точка доступа Wi-Fi, озвучить текст, запрос агенту, вывод на приборку, разделение экрана (запуск, закрытие, переключение) |
| Edge trigger | Срабатывает только при переходе false→true (не повторяется каждые 3 сек) |
| Cooldown | Настраиваемая пауза между срабатываниями |
| Overlay-подтверждение | Всплывающее окно «Отмена / Выполнить» перед действием. Таймаут 15 с → автоотмена |
| Безопасность | Окна не открываются на скорости > 120 км/ч, люк > 80 км/ч, двери не отпираются > 30 км/ч, CAN/SHELL команды заблокированы |
| Журнал | Лог всех срабатываний с результатами |
| Шаблоны | 6 готовых правил для быстрого старта |
| Выполнить сейчас | Ручной запуск правила из редактора, мимо триггеров и cooldown |
BYDMate умеет выводить выбранное приложение (по умолчанию навигацию) на приборную панель за рулём, чтобы карта и манёвры были перед глазами, а центральный экран оставался свободным.
По умолчанию проекцию включает правая звезда. Кнопку можно переназначить, см. «Выбор кнопки» ниже.
Откройте Настройки → Дисплей и включите тумблер «Проекция на приборку». Приложение само активирует нужный сервис (нужна выполненная активация ADB при установке, см. «Установка») и само переводит приборку в режим проекции: за это отвечает тумблер «Сразу показывать на приборке», он включён по умолчанию. На головном устройстве вручную ничего настраивать не нужно.
После этого короткое нажатие выбранной кнопки руля (по умолчанию правая звезда) переносит выбранное приложение на приборку и обратно.
Если «Сразу показывать на приборке» выключить, приборку придётся один раз перевести в режим проекции самому: иконка проекции на главном экране головного устройства, затем кнопка IPC на появившейся карте. Выключать стоит, если после вывода на приборку с неё пропадает ADAS или штатный виджет и не возвращается сам (на части прошивок DiLink 5.0 экран проекции живёт внутри штатной мини-карты): с выключенным тумблером приложение не трогает режим приборки, это касается и камер слепых зон, а картинка видна в мини-карте.
В Настройки → Дисплей, рядом с тумблером проекции, выбирается режим вывода на приборку. Их два, и отличаются они тем, трогает ли приложение системные настройки машины.
«Заводской» (по умолчанию). Приложение не меняет ни одной системной настройки: проекция работает через виртуальный дисплей (картинка зеркалится на приборку), ползунки подстройки окна работают точнее. Ставится и удаляется бесследно. Ограничение: голосовой агент и HUD не видят экран навигатора во время проекции, подсказки о манёврах агент берёт только из уведомления Навигатора.
«Расширенный». Навигатор запускается отдельным окном прямо на дисплее приборки, поэтому голосовой агент и HUD видят маршрут во время проекции. Для этого приложение включает системную настройку оконного режима (enable_freeform_support). Режим включается только через диалог с объяснением, после включения нужна однократная перезагрузка головного устройства (долгое зажатие колёсика громкости). Новый режим применяется при следующем выводе на приборку.
Как вернуть заводские настройки. Переключите режим обратно на «Заводской»: приложение сразу вернёт системную настройку к заводскому значению, а перезагрузка ДиЛинка полностью завершит возврат. После этого система в том же состоянии, что и до установки BYDMate.
Там же, под выбором режима, есть тумблер «Полный экран приборки». По умолчанию карта занимает верх приборки, а внизу остаётся штатная полоса со скоростью и основными показателями. Включите тумблер, если хотите карту на всю приборку без этой полосы. Работает только на прошивках с новым интерфейсом, на остальных ничего не меняет; применяется при следующем выводе на приборку.
Если вы пользовались проекцией в версиях до 3.7, при обновлении прежнее поведение сохранится автоматически: режим останется «Расширенный». У тех, кто проекцию не включал, приложение системные настройки не трогает вообще.
По умолчанию проекцию включает правая звезда руля. Если этой кнопки нет или удобнее другая, под тумблером нажмите «Изменить» и нажмите нужную кнопку на руле, приложение её запомнит. Назначить можно любую кнопку руля, которую видит система. Системные кнопки (громкость, питание и т.п.), обзор 360 и карусель приборки назначить нельзя.
По умолчанию на приборку выводится Яндекс.Навигатор. Под тумблером включения есть выбор приложения: можно указать любое установленное (другой навигатор, медиаплеер и т.д.). Новый выбор применяется при следующем нажатии кнопки.
В разделе Настройки → Дисплей → «Размер окна на приборке» пять ползунков. Если на вашей машине проекция и так занимает всю приборку (например, Leopard 3), настраивать ничего не нужно: значения по умолчанию дают прежний полноэкранный режим.
Изменения применяются сразу, прямо во время проекции - двигайте ползунок и смотрите на приборку.
На части моделей штатная приборка показывает проекцию не на весь экран, а в фиксированной зоне (на Sea Lion 07 - правая треть). Полноэкранное окно там обрезается. Решение: уменьшить окно и сдвинуть его в видимую зону ползунками выше.
Проверенные владельцем Sea Lion 07 значения: ширина 32%, высота 92%, сдвиг по горизонтали 100%, сдвиг по вертикали 6%, масштаб 90%.
Вывести окно на весь экран приборки на таких машинах не получится: зону показа задаёт прошивка панели, и она не управляется.
Проекция работает в одном из двух режимов, описанных выше. В «Заводском» BYDMate создаёт виртуальный дисплей и зеркалит в него выбранное приложение, не меняя настроек системы. В «Расширенном» приложение запускается отдельным окном прямо на дисплее приборной панели, поэтому голосовой агент и HUD видят маршрут во время проекции. Чтобы перехватывать кнопки руля, приложение включает собственный сервис специальных возможностей (accessibility). Он работает только при включённом тумблере и нужен исключительно для выбранной кнопки. Прошивку и саму машину это не меняет, всё обратимо.
Если в машине есть заводской проекционный дисплей, BYDMate выводит на лобовое стекло подсказки Яндекс Навигатора: значок манёвра, дистанцию до него, название улицы и время прибытия. Отдельным тумблером включается знак ограничения скорости, он передаётся числом. Пока Навигатор предупреждает о камере, вместо стрелки манёвра показывается значок камеры и расстояние до неё. Ведение продолжается, даже когда Навигатор свёрнут или выведен на приборку; Яндекс Карты работают источником подсказок наравне с Навигатором.
Включается в Настройки → Дисплей, раздел «HUD (проекционный дисплей)»: тумблер «Навигация на HUD» и отдельно «Знак скорости под стрелкой». Подсказки идут по штатному каналу самого HUD, поэтому нужна комплектация с проекционным дисплеем. Если такого канала на машине нет, приложение честно пишет об этом в настройках и функцию не включает.
При включённом поворотнике BYDMate сам показывает картинку с боковой камеры: левый поворотник выводит левую камеру на приборку, правый показывает окошко на главном экране. Если датчик видит машину сзади-сбоку, окно подсвечивается оранжевой рамкой.
Включается в Настройки → Дисплей, раздел «Слепые зоны» (по умолчанию выключено). Там же настраиваются порог скорости, ниже которого камера не показывается, ширина окошка и его положение: кнопка «Настроить положение» показывает пустое окошко, которое перетаскивается пальцем туда, где будет камера. Если левая камера на приборке мешает, включите там же «Обе камеры на главный экран»: обе картинки будут показываться на планшете, приборка не трогается. Нужна комплектация с круговым обзором.
Полноценный русский голосовой помощник внутри BYDMate. Речь распознаётся прямо на головном устройстве, без интернета: нейросеть GigaAM v3 слушает и понимает по-русски. Простые команды исполняются мгновенно локальным разбором, всё остальное решает AI-агент: языковая модель с 32 инструментами, которая сама читает данные машины, управляет функциями кузова, строит маршруты, запускает сценарии и отвечает голосом.
Штатный голосовой помощник BYD уже нативно работает с английским и китайским. Делать ещё один английский помощник бессмысленно. BYDMate закрывает то, чего в машине нет вообще: русский язык. Поэтому распознавание речи, разбор команд и голоса озвучки заточены именно под русский, английская версия агента не планируется.
У агента 32 инструмента. Примеры фраз:
Машина и климат
Поездки, зарядки, статистика
Навигация и места
Медиа и приложения
Автоматизация
Интернет
| Группа | Что доступно |
|---|---|
| Окна | все, передние, задние, водителя, пассажира, задние левое и правое; открыть, закрыть, проветривание |
| Климат | включить, выключить, температура от 16 до 30 |
| Подогрев сидений | водитель и пассажир, уровни 1-5 и выключение |
| Вентиляция сидений | водитель и пассажир, уровни 1-5 и выключение |
| Зеркала | обогрев вкл/выкл |
| Свет | салон, подсветка и другие режимы (6 команд) |
| Замки | запереть, отпереть |
| Люк и шторка | открыть, закрыть, промежуточные положения |
| Багажник | открыть, закрыть |
| Передний багажник | открыть, закрыть |
| Холодильник | охлаждение от -6 до +6, нагрев от 35 до 50, выключение |
| Аварийка | включить, выключить |
Безопасность: открытие окон блокируется на скорости выше 120 км/ч, люка выше 80 км/ч, отпирание дверей выше 30 км/ч; передний багажник открывается только на стоящей машине.
Типовые формулировки исполняются локальным разбором мгновенно, без языковой модели и без сети: окна (включая «приоткрой окно водителя»), температура климата (включая «сделай теплее» и «холоднее»: агент читает текущую уставку и сдвигает на градус), громкость, подогрев и вентиляция сидений уровней 1-3. Всё, что локальный разбор не понял уверенно (отрицания, уровни сидений 4-5, передний багажник, свободные формулировки), передаётся AI-агенту. Если агент выключен или ключ не задан, такие фразы получают отказ, а быстрые команды продолжают работать.
Полный список того, что понимает локальный разбор:
| Группа | Что можно сказать |
|---|---|
| Окна | «открой/закрой окна», «окна наполовину», «проветри» (все, передние, задние, водителя, пассажира, заднее левое/правое), «приоткрой окно водителя» |
| Климат | «включи климат», «выключи кондиционер», «включи обдув», «температура 22» (16-30), «сделай теплее», «холоднее», «внутренняя/внешняя циркуляция», «обдув лобового» вкл/выкл |
| Сиденья | «подогрев сиденья водителя 2», «вентиляция пассажирского сиденья», уровни 1-3, «выключи подогрев сиденья» |
| Зеркала | «подогрев зеркал» вкл/выкл |
| Свет | «амбиентная подсветка», «дневные ходовые огни», «свет в салоне» вкл/выкл |
| Двери | «запри/отопри машину», «запри двери» |
| Люк | «открой/закрой люк», «люк наполовину», «открой/закрой шторку» |
| Багажник | «открой/закрой багажник» |
| Громкость | «громкость 15», «выключи/включи звук» |
| Ключ | Обязателен | Зачем |
|---|---|---|
| OpenRouter | Достаточно одного любого LLM-ключа; для скорости рекомендуется OpenRouter | Мозг агента. Быстрые модели (например, Gemini Flash) отвечают почти мгновенно, цена: доли цента за запрос |
| z.ai | Бесплатная альтернатива | Мозг агента, модель glm-4.7-flash, бесплатно, но отвечает заметно медленнее |
| Свой сервер | Альтернатива | Любой OpenAI-совместимый эндпоинт: URL, ключ, модель |
| Exa | Нет | Улучшенный веб-поиск. Без него «поищи в интернете» работает через нативный поиск LLM-провайдера |
| MiniMax | Нет | Только для онлайн-голоса MiniMax, на работу агента не влияет |
Все ключи вводятся в приложении и хранятся локально, в коде и в репозитории секретов нет.
Офлайн-голоса (работают без интернета, скачиваются по одному):
| Голос | Род | Размер | Качество |
|---|---|---|---|
| Дмитрий (по умолчанию) | мужской | 21 МБ | обычное |
| Алёна | женский | 18 МБ | обычное |
| Руслан | мужской | 21 МБ | обычное |
| Ирина | женский | 21 МБ | обычное |
| Марк | мужской | 145 МБ | улучшенное |
| Софья | женский | 145 МБ | улучшенное |
Марк и Софья (движок Supertonic) звучат заметно естественнее обычных, но весят больше и делят один архив: скачав любого, второго уже не докачиваете. Скорость и живость интонации настраиваются слайдерами, рядом кнопка «Прослушать пример».
Онлайн-голоса (опционально, звучат естественнее): Gemini и OpenAI через ключ OpenRouter, MiniMax через свой ключ (три способа подключения: официальный API, fal.run, replicate). Офлайн-подмены нет: если онлайн-голос не отвечает или падает, реплика остаётся текстом в пилюле-орбе, но не проговаривается.
Про громкость: ответы агента идут через голосовой канал BYD (тот же, что у штатных подсказок), его громкость регулируется системной настройкой голоса. Команда «сделай громче» меняет громкость музыки, а не голоса агента. Если агент кажется тихим или громким, крутите системную громкость голоса.
Агент работает в три шага, и задержка копится на каждом.
Нужна максимальная скорость: выключите тумблер «Ответы агента». Озвучки не будет, реплика останется текстом на экране, а работать будут только первые два шага. Быстрые команды при этом исполняются вообще без интернета.
В настройках выбирается один из трёх характеров ответов (по умолчанию «Штурман») и род агента (мужской или женский), от этого зависят формулировки и устные реплики. Там же задаётся имя для перебивания.
Внизу раздела «Голос-агент» есть тумблер, который отключает штатный голосовой помощник BYD, чтобы он не просыпался параллельно с агентом. Полностью обратимо, применяется после перезагрузки машины (и включение, и выключение). По умолчанию выключено.
Скажите агенту, как вас зовут или что вы обычно предпочитаете, и он будет помнить это между разговорами. «Забудь …» убирает один факт. Список фактов и кнопка «Забыть всё»: Настройки → Голос-агент → Агент. Факты хранятся только на головном устройстве и уходят лишь в запрос к выбранной вами языковой модели.
Компактный overlay 260×108 dp поверх других приложений — видно на карте, в медиа, в BYD-приложениях.
Семь полей в 3 строки. Цвета: иконки серые, значения белые. Рамка и SOC% подсвечиваются цветом статуса (SOC или 12V — что хуже).
Верхняя строка (мелким, 13sp):
N мин или X ч Y мин (напр. 47 мин, 1 ч 12 мин). Старт — момент включения зажигания, конец — выключение. Простои с включённой машиной (стоишь с кондиционером, пассажир вышел купить воды, светофор) входят в поездку — пока электрика жива, счётчик не сбрасываетсяЦентральная строка (крупно, главные значения):
SOC × ёмкость батареи ÷ baseline-расход × 100. Тильда подчёркивает что это оценка, не показания БК. Подробнее про то, как считается baseline-расход, ниже в разделе «Запас хода»Нижняя строка (мелким, 13sp):
Цифра справа — расход текущей поездки в кВт·ч/100км. Считается как энергия, потраченная с момента включения зажигания, делённая на пройденные с того же момента километры. По мере движения цифра сходится к тому значению, которое в итоге запишется в историю поездок: что видно в виджете в момент остановки, то и попадёт в карточку поездки.
Первые 2 километра виджет плавно переходит со среднего расхода прошлой поездки на расход текущей: до 300 м показывает прошлое значение, с 300 м до 2 км линейно подмешивает текущее, после 2 км показывает только текущее. Так не пугают резкие 50–60 кВт·ч/100км из холодного старта и разгона: пока поездка короткая, за основу берётся уже устоявшийся средний расход прошлой поездки, и только когда дистанция становится представительной, цифра уходит на собственный расход.
На стоянке (зажигание выключено) показывается средний расход прошлой завершённой поездки — то же значение, что было видно в её последний момент.
Запас хода ~N км считается по смеси: 50% веса берётся от последней завершённой поездки, 30% от предпоследней и 20% от той, что была до неё (короткие поездки до 3 км в расчёт не идут — это не репрезентативный пробег). Когда едешь длинную дорогу, к этой смеси добавляется ещё расход за последние 10 км текущей поездки: его доля растёт от нуля на первых трёх километрах до половины к 25 километрам. Так прогноз быстро подхватывает смену стиля (городской хвост перед трассой, обратно с трассы в город), но не дёргается на коротких заездах и стоянках с климатом.
Это автоматический расчёт. Если он вам не подходит, в Настройки → Авто и батарея → «Способ расчёта запаса хода» есть метод «Ручной»: своя таблица из 5 точек, температура батареи от +20 до -20 °C и расход при ней, опционально с запасом хода на 100% заряда.
Стрелка тренда появляется после 2 км пробега и сравнивает скользящее 25-километровое среднее с твоим обычным стилем (среднее по последним 10 поездкам):
Стрелка не дёргается от каждой остановки на светофоре — есть небольшая инерция: чтобы стрелка сменила цвет, расход должен заметно отличаться от обычного и держаться так минимум минуту.
Что такое «поездка» для этой цифры. Один цикл зажигания: включил → выключил. Стоянка с включённым кондиционером внутри поездки учитывается естественно — лишние кВт·ч попадают в общий знаменатель. Короткие блипы (светофор, переподключение) не раскалывают поездку на две. Если DiLink прибьёт приложение посреди трассы — после рестарта счёт продолжается с реального момента включения зажигания, а не с нуля.
Два приложения на экране одновременно: одно занимает две трети, второе треть. Типичная пара - навигатор пошире, музыка или мессенджер поуже. Стороны меняются местами, приложения - на ходу, выбранная пара запоминается.
Пока функция выключена, приложение системных настроек машины не трогает. Выключение тумблера возвращает настройку к заводскому значению - если только оконный режим не нужен ещё и проекции «Расширенный»: тогда настройка вернётся к заводской, когда выключите и её.
В настройках, под тумблером, выбирается, чем делить экран: «Окна BYDMate» (по умолчанию) или «Родное разделение».
На прошивках с новым интерфейсом UI7 выбор механизма не появляется: там разделение выполняет сама машина, панели 1/3 и 2/3 родные, перезагрузка головного устройства для включения не нужна.
Три способа. Значок «?» рядом с заголовком секции в настройках напоминает о них прямо в машине.
При первом запуске приложение спросит, что показывать: сначала выбирается приложение для широкой части (2/3), затем для узкой (1/3). Пара запоминается, следующий запуск открывает её сразу. Сменить приложения можно через пилюлю или в настройках; там же есть «Сбросить последнюю пару».
Пока разделение активно, внизу экрана висит маленькая пилюля. Тап по ней открывает меню: поменять стороны, поменять приложения, выбрать другое приложение для левой или правой панели, выход в обычный полный экран. Когда разделение закрывается, пилюля исчезает сама.
Вкладка Зарядки автоматически ведёт журнал реальных пополнений заряда: список зарядок по месяцам, статистика за период и за всё время, фильтры AC и DC. Не каждое подключение пистолета становится записью: запись создаётся только если SoC реально вырос. Если кто-то ткнул пистолет и вынул через минуту, в журнал ничего не попадёт.
Запись пишется, если за время сессии у машины выросла либо ёмкость батареи, либо SoC. BYDMate пробует три источника данных по очереди и берёт первое пригодное значение:
Если BYDMate работает в момент зарядки, запись появляется сразу. Если подключение случилось до запуска приложения или машина уехала в глубокий сон, BYDMate догоняет запись на следующем старте, как только увидит, что SoC прыгнул вверх по сравнению с тем, что было до зарядки. Поэтому даже offline-зарядки в гараже попадают в журнал.
Тип зарядки определяется по двум сигналам, по приоритету:
На вкладке Зарядки три фильтра: «Все», «AC», «DC».
Если запись не появилась автоматически или цифры выглядят странно:
+ зарядка в шапке вкладки: добавить сессию вручную с указанием даты, длительности, кВт·ч, тарифа.Функция в активном тестировании. На Leopard 3 пишется стабильно. На других моделях BYD автоматика может сработать неточно: например, бортовая система не сообщит мощность или тип разъёма, тогда AC и DC может определиться неправильно. В таких случаях правьте записи вручную и при возможности присылайте логи в Issues.
SoH (State of Health) — это процент «здоровья» тяговой батареи, который рассчитывает сама бортовая система автомобиля по своим внутренним алгоритмам.
На BYD Leopard 3 (Fangchengbao Bao 3) BYDMate берёт это значение напрямую из бортовой системы и показывает в карточке батареи на Главной. Это реальный SoH от машины, а не оценка по разнице SoC: BYDMate просто читает то, что пишет себе сама машина.
На других моделях BYD доступ к этому значению пока не подтверждён, поэтому SoH там не отображается. Остальные ячейки карточки (температура батареи, 12V, разброс ячеек, сопротивление изоляции) работают на всех поддерживаемых моделях.
Тап по карточке открывает экран «Техника»: напряжение и ток тяговой батареи, доступная мощность батареи, лимиты BMS на заряд и разряд, разброс ячеек, температуры моторов и инверторов, климат, давление и температура шин, история SoH и пробега. У каждого параметра есть значок «?» с подсказкой простым языком. Если машина не отдаёт параметр, строка показывает «-», пустые карточки скрываются.
Если в вашей машине SoH доступен и вы хотите помочь добавить поддержку, заведите Issue с указанием модели и года выпуска.
SoH и автоматическая запись зарядок на Leopard 3 работают автоматически, отдельно ничего включать не нужно. BYDMate читает значения напрямую от бортовой системы автомобиля, как только активна беспроводная ADB-отладка.
На Leopard 3 эти функции протестированы. На других моделях BYD доступ к этим данным не подтверждён, тогда SoH и точная мощность зарядок могут не появиться, но остальные функции BYDMate работают как обычно.
BYDMate разрабатывается и тестируется на BYD Leopard 3 (Fangchengbao Bao 3). На других моделях BYD большинство функций тоже работает, но есть отличия. Перед первым запуском проверьте:
energydata. На моделях без этой базы (Song, Yuan и аналоги) поездки теперь записываются нативно, фоновым опросом параметров машины (источник NATIVE_POLLING), так что список больше не пустой. Расход в таких поездках считается по дельте SoC, поэтому он чуть грубее, чем на Leopard 3, где данные берутся из BMS.Если что-то не работает или показывает странное, заведите Issue с указанием модели машины и версии прошивки DiLink - и приложите каталог параметров вашей машины: Настройки → Сервис и данные → «Сохранить каталог fid'ов». Файл fid-dump-….txt появится в папке Download. Внутри только технические идентификаторы параметров - без VIN, без геолокации, без личных данных.
Зачем это нужно. У разных моделей BYD наборы параметров различаются: команда, которая на Leopard 3 включает обдув сиденья, на Song может иметь другой номер или отсутствовать. Именно поэтому часть функций на других машинах не срабатывает. Каталог с вашей машины показывает, как параметры называются и нумеруются именно на вашей прошивке - и мы чиним по этим данным, а не вслепую.
| Параметр | Значение |
|---|---|
| Платформа | DiLink 5.0 (Android 12, API 32) |
| Процессор | Snapdragon 780G |
| Экран | 15.6" landscape, 1920x1200 |
| GMS | Нет (AOSP без Google Play Services) |
| Протестировано | BYD Leopard 3 (Fangchengbao Bao 3) |
BYD energydata (BMS SQLite) → HistoryImporter → Room DB → Compose UI
autoservice (системный Binder) → TrackingService ↗ ↓
Android LocationManager → TripTracker (GPS) ↗ LocalInsightEngine / OpenRouter
autoservice (запись команд) ← AutomationEngine ← Rules (Room DB)
| Данные | Источник |
|---|---|
| Расход, пробег, длительность | BYD energydata (BMS) |
| SOC, скорость, температуры | Системный сервис машины (autoservice Binder) |
| Напряжение ячеек, 12V, SoH | Системный сервис машины (autoservice Binder) |
| GPS координаты | Android LocationManager |
| AI-аналитика | Локальные правила на устройстве (по умолчанию) или OpenRouter API (опционально) |
| Управление авто | Системный сервис машины (запись команд) |
Без OBD-адаптера и без стороннего D+. BYDMate читает данные и управляет машиной напрямую через системный сервис autoservice (тот же, что использует штатная система BYD) под shell-доступом по беспроводной ADB.
| Функция | Куда уходит | Что уходит | Когда активно |
|---|---|---|---|
| Облачные AI-инсайты | OpenRouter | агрегированная статистика поездок и зарядок за 7/30 дней | только после ввода API-ключа |
| Голосовой агент (LLM) | OpenRouter / z.ai / свой сервер | текст команды, состояние автомобиля (SOC, климат и т.п.), при навигационных запросах GPS-координаты | только после настройки провайдера |
| Веб-поиск агента | Exa / z.ai / OpenRouter | текст поискового запроса | ключ введён и агент вызвал инструмент |
| Погода (агент) | Open-Meteo | GPS-координаты или название места (геокодинг) | агент вызвал инструмент |
| Зарядные станции (агент) | Overpass (overpass-api.de / maps.mail.ru) | GPS-координаты | агент вызвал инструмент |
| Онлайн-голоса озвучки | MiniMax / fal.ai / Replicate / OpenRouter | текст озвучиваемого ответа | только если выбран онлайн-голос |
| Карта в деталях поездки | тайл-серверы OpenStreetMap (или Amap, если выбран в настройках) | координаты видимой области карты | при открытии карты поездки или редактора мест |
| Проверка обновлений | GitHub API | ничего (запрос списка релизов, сравнение версий локально) | автоматически |
| ABRP live-телеметрия | abetterrouteplanner.com | SOC, мощность, скорость, температуры, одометр, давление шин, статус зарядки, ёмкость батареи, SoH, кВт·ч текущей сессии зарядки, модель автомобиля (GPS намеренно не отправляется) | только после ввода токена |
| Вебхук телеметрии | Настройки → Интеграции → Вебхук | тот же JSON, что в ABRP, POST на ваш URL раз в 1/8/30 с (движение/зарядка/стоянка); координаты только по отдельному тумблеру | выключен по умолчанию |
Без введённых ключей наружу уходят только проверка обновлений (GitHub) и тайлы карты при просмотре маршрута поездки, а также скачивание голосовых моделей по явному запросу пользователя (github.com). API-ключи хранятся локально в базе приложения и никуда не передаются, кроме самого провайдера.
Без ADB BYDMate работает как офлайн-журнал поездок: история из штатной базы, карта маршрута, CSV-экспорт, AI-инсайты по уже накопленным данным.
Включённая ADB-отладка нужна для всего, что читает или пишет параметры машины: живые показатели в виджете и на дашборде (SOC, запас хода, температуры, 12V), SoH, автоматический журнал зарядок, автоматизация, вывод на приборку, разделение экрана, подсказки на HUD, камеры слепых зон, управление машиной голосом и запись логов.
Эти фичи включаются автоматически, отдельный переключатель не нужен. При первом запуске BYDMate DiLink один раз покажет диалог «Allow ADB debugging» — нажмите Allow и поставьте галочку «Always allow from this computer», чтобы он не спрашивал заново.
DiLink 3 / 4 — ADB можно активировать самостоятельно: установите BydDevelopmentTools, зайдите в Настройки → Version Management, 10 раз тапните по тексту Reset to factory default, активируйте Debug Mode when USB is Connected и Wireless adb debug switch. На обновлённых прошивках DiLink 3/4 ADB может быть так же закрыт, как на DiLink 5 — тогда придётся идти по пути ниже.
DiLink 5.0 — ADB-отладка заблокирована и открывается только удалённо из Китая. Сделать это можно через продавцов на TaoBao (поиск по DiLink 5.0, ~40 ¥ внутри Китая / ~80 ¥ извне, оплата через AliPay). Продавец удалённо открывает инженерное меню по присланному QR-коду, после чего ADB включается штатно.
Пошаговая инструкция: PDF-гайд (русский) — приложен в репозитории.
На прошивках DiLink с лета 2026 (сборки «2606») порт ADB закрывается при каждой перезагрузке головного устройства, и все функции управления машиной перестают работать до ручного включения ADB. Для таких машин в Настройках → Система машины есть тумблер «Восстанавливать ADB после перезагрузки» (по умолчанию выключен): приложение поднимает ADB заново через встроенную в Android беспроводную отладку. Рядом с тумблером есть значок «?» с подробным объяснением, а под ним строка состояния.
Что нужно знать:
WRITE_SECURE_SETTINGS (одной командой через ADB). Без него включить беспроводную отладку нельзя: строка состояния покажет «Нужна активация».Начиная с версии 3.0.0 BYDMate работает напрямую с системой машины и не требует стороннего приложения D+ (迪加). Все данные читаются и команды отправляются через системный сервис автомобиля.
Если вы пользовались прежними версиями и устанавливали D+, после проверки работы BYDMate его можно удалить с DiLink.
adb install BYDMate.apk)Важно: отключите "Disable background Apps" для BYDMate, иначе DiLink будет убивать приложение:
DiLink > Settings > General > Disable background Apps > BYDMate = OFF
В Настройках можно изменить:
В Настройки → Сервис и данные → Система машины два пункта, которые меняют поведение самой машины, а не приложения.
Колёсико громкости на руле. Тумблер, при котором нажатие ставит воспроизведение на паузу и продолжает его, а не переключает источник звука. Нужен после обновления прошивки, где нажатие стало менять источник. По умолчанию выключено.
Язык интерфейса машины. Только на прошивках UI7. Кнопка открывает скрытый штатный диалог BYD с полным списком языков, включая русский, украинский и польский. Язык меняет сама прошивка, приложение ничего не записывает. У части владельцев на русском перестаёт работать автопарковка, тогда верните English той же кнопкой.
Карточка на дашборде анализирует вашу статистику за последние 7 дней (сравнение с предыдущими 7) и показывает заголовок, краткий вывод, таблицу метрик и до 5 рекомендаций. Работает без интернета в режиме по умолчанию.
| Режим | Где включается | Интернет | API-ключ |
|---|---|---|---|
| Локальный (офлайн) | По умолчанию | Не нужен | Не нужен |
| OpenRouter (облако) | Настройки → Интеграции → «OpenRouter (облако)» | Нужен | OpenRouter API Key |
Переключатель «Источник анализа» в Настройках → Интеграции. В локальном режиме доступна кнопка «Обновить инсайт» для ручного пересчёта. Автообновление — раз в день (результат кэшируется на устройстве).
Всё считается из локальной базы Room — без GPS, маршрутов и персональных идентификаторов:
idle_drains)Минимум для анализа: не менее 5 поездок за последние 7 дней. Иначе карточка покажет «Мало данных для анализа».
Логика локального движка — LocalInsightEngine.kt: детерминированные пороги + шаблоны строк (local_insight_* в strings.xml). Тексты локализованы на 6 языков (ru / en / zh / pt / pl / be).
Что важнее — то и в заголовке. Первое сработавшее правило с большим priority:
| Приоритет | Условие | Пример заголовка |
|---|---|---|
| 90 | 12V < 11.8 В | «12V критично низкий» |
| 85 | Разброс ячеек > 50 мВ | «Большой разброс банок» |
| 80 | Расход ↑ > 15% к прошлой неделе | «Расход ▲15% за неделю» |
| 78 | Ночной drain ≥ 4 кВт·ч и ≥ 35% простоя | «Ночной расход на стоянке» |
| 70 | Расход ↑ > 5% | «Расход ▲8% за неделю» |
| 60 | Расход ↓ > 5% | «Расход ▼10%» |
| 10 | Иначе | «Расход стабилен» |
Параллельно проверяется набор правил; в карточку попадают до 5 самых приоритетных. Примеры тем:
| Тема | Когда срабатывает |
|---|---|
| Ночной простой | Ночью ушло ≥ 0.3 кВт·ч с мотором |
| DC дороже AC | Оба типа зарядки ≥ 3 кВт·ч, DC на 15%+ дороже |
| Много DC | ≥ 2 DC-сессий, DC > AC×1.5 |
| Короткие поездки | ≥ 40% поездок короче 5 км |
| Простой с мотором | ≥ 2 кВт·ч на стоянке |
| 12V низкий / падает | 11.8–12.4 В или тренд вниз за неделю |
| Разброс ячеек | 31–50 мВ |
| Зима + рост расхода | ≤ 5°C и расход вырос |
| Лучшая / худшая поездка | Разброс ≥ 5 кВт·ч/100 |
| Снижение расхода | ↓ > 5% к прошлой неделе |
| Трасса | Средняя скорость ≥ 75 км/ч |
| Высокий / низкий расход | ≥ 28 или ≤ 16 кВт·ч/100 |
| Рост пробега / поездок | +20% к прошлой неделе |
| Жара + кондиционер | ≥ 25°C, расход ≥ 22 |
| Смешанная зарядка | AC и DC в одну неделю |
| Стоимость | Руб/100 км или зарядки за неделю |
| Хорошие привычки | Мало ночного или дневного простоя, 12V/баланс в норме |
Полный список правил и порогов — в LocalInsightEngine.kt и тестах LocalInsightEngineTest.kt.
Опционально: вместо шаблонов текст генерирует LLM. Настройка:
В облачном режиме на сервер уходит только агрегированная статистика (те же метрики, что для локальных правил) — без GPS и маршрутов. Запрос раз в день, ответ кэшируется локально. Таблица dynamics строится так же, как в локальном режиме; от LLM приходят заголовок, summary и формулировки рекомендаций.
BYDMate может отправлять живые показатели машины в A Better Route Planner (ABRP) через официальный Iternio Telemetry API. ABRP использует эти данные, чтобы план маршрута и оценка остатка хода обновлялись по реальному состоянию батареи, а не по средним табличным значениям.
Функция опциональная, выключена по умолчанию и включается вручную в Настройках.
ABRP использует «Generic Live Data Token» — отдельный токен на каждую машину в гараже:
User Token.Если в списке нет «Generic»: смените код модели машины в гараже ABRP на любую популярную модель BYD (например, BYD Atto 3 или BYD Seal), сохраните, и Generic появится. После привязки токена код модели можно вернуть обратно.
Только агрегированные показатели машины, без идентификаторов:
ABRP подбирает прогноз на основе модели машины из своей библиотеки + телеметрии: текущий SOC, температура батареи, скорость движения, ветер, профиль дороги, перепады высот. Свой собственный «расчётный остаток хода» BYDMate в ABRP не передаёт — у ABRP есть собственный, более точный расчёт под конкретный маршрут, в котором учитывается погода и рельеф.
Тот же JSON, что уходит в ABRP, можно отправлять POST-запросом на свой адрес: Home Assistant, Node-RED, свой скрипт на VPS. Ничего не хранится в очереди: если сервер недоступен, точка теряется, следующая попытка через минуту.
Настройка
https://. Обычный http:// не пройдёт (Android блокирует незашифрованный трафик, разрешён он только для localhost). Если сервер без сертификата, поставьте перед ним Caddy или nginx с Let's Encrypt, либо туннель вроде Cloudflare Tunnel.Authorization: Bearer <секрет>. По нему сервер отличает вашу машину от чужих запросов.lat, lon, heading.Что приходит
POST <ваш URL>, Content-Type: application/json, одна точка в теле:
{"utc":1756040000,"soc":67,"speed":52.0,"power":18.4,"batt_temp":29.0,"ext_temp":24.5,
"capacity":72.9,"odometer":12345.6,"cabin_temp":22.0,
"tire_pressure_fl":2.5,"tire_pressure_fr":2.5,"tire_pressure_rl":2.4,"tire_pressure_rr":2.4,
"is_charging":0,"is_parked":0,"soh":98.5,"car_model":"byd:leopard3"}
Поля и единицы те же, что в Iternio Telemetry API: utc в секундах, power в кВт (как отдаёт машина), температуры в °C, давление шин в бар, odometer в км. Поля без данных (например, speed на стоянке или kwh_charged вне зарядки) просто отсутствуют. Ритм: раз в секунду в движении, раз в 8 секунд на зарядке, раз в 30 секунд на стоянке. Ответ сервера не разбирается, важен только статус 2xx; после ошибки следующая попытка через 60 секунд.
Вебхук работает независимо от ABRP: можно включить только его, только ABRP или оба.
# Требуется: JDK 17, Android SDK 34
git clone https://github.com/AndyShaman/BYDMate.git
cd BYDMate
./gradlew assembleDebug
Если что-то не работает, действуйте по шагам — в большинстве случаев проблема решается первым же пунктом, а если нет, вы поможете нам быстро её найти.
1. Перезагрузите головное устройство. Зажмите колёсико громкости и держите, пока экран не уйдёт в перезагрузку. Часть функций (например, разделение экрана) включает системный флаг, который применяется только при загрузке — без перезагрузки функция выглядит «сломанной», хотя всё в порядке.
2. Запишите логи. Настройки → раздел «Сервис и данные» → кнопка «Запись логов». Воспроизведите проблему (нажмите то, что не работает), затем нажмите «Остановить запись». Файл bydmate_logs_<дата>.txt появится в папке Download (запись останавливается сама через 2 часа, если забыли).
3. Сохраните каталог fid'ов. Настройки → раздел «Сервис и данные» → кнопка «Сохранить каталог fid'ов». Файл fid-dump-<дата>.txt появится в Download. У разных моделей BYD разные каталоги команд — по этому файлу мы адаптируем приложение под вашу машину.
4. Отправьте нам. Создайте задачу в GitHub Issues и приложите: модель машины и поколение DiLink, версию BYDMate, что нажимали и что ожидали увидеть, файлы из шагов 2–3.
Типовые случаи:
org.jayb.bydapp) by jayb — оригинальное приложение для DiLink, вдохновение для BYDMateПроект некоммерческий, делаю как хобби. Если захочется поблагодарить, реквизиты в SUPPORT.md. Если нет, всё равно спасибо за доверие.
PolyForm Noncommercial 1.0.0 — исходный код открыт, только некоммерческое использование. См. LICENSE для деталей.
Copyright (C) 2026 AndyShaman
English version: README.en.md
Kotlin
100.0%
BYD DiLink app (3.0/5.0/5.1, UI7): split screen 1/3+2/3, navigation on instrument cluster, Yandex Navigator on HUD, blind-spot cameras on turn signal, Russian voice AI agent, real BMS consumption, trips/charges journal, automation, ABRP + webhook telemetry. Leopard 3 / Bao 3, Sea Lion 07, Song, Atto 3.
275
stars
682
commits
Kotlin
primary language
Sep 9, 2026
updated
Реальный расход, GPS-маршруты, автоматизация, AI-аналитика — локально, облако только по желанию.
Разделение экрана 1/3 и 2/3, навигация на приборной панели, подсказки Яндекс Навигатора на лобовом стекле, камеры слепых зон по поворотнику, голосовой помощник по-русски, телеметрия в ABRP.
Проверено на Leopard 3 (方程豹豹3), есть поддержка Sea Lion 07, Song, Atto 3, Seal, Han. DiLink 3.0, 5.0, 5.1 и прошивки с новым интерфейсом UI7 (OTA V1.6).
Возможности | Скриншоты | Автоматизация | Вывод на приборку | HUD | Разделение экрана | Голосовой агент | AI Инсайты | ABRP | Установка | Сборка | Релизы | Поддержать
Штатный бортовой компьютер BYD занижает расход на 10-30%. BYDMate берёт данные напрямую из BMS (energydata) и показывает реальное потребление. Плюс данные, которых нет в штатной системе: расход на стоянке, баланс ячеек, стоимость поездок, AI-аналитика.
Все основные функции (поездки, зарядки, автоматизации, локальные инсайты, офлайн голосовой агент) работают локально на DiLink и не требуют интернета. Облачные функции выключены по умолчанию и включаются только вручную вводом ключа. Что именно и когда уходит в сеть, описано в разделе «Данные и сеть».
Главное, что появилось в BYDMate после версии 3.0.
Разделение экрана на прошивках UI7. После обновления прошивки экран делит сама машина: панели 1/3 и 2/3, разделитель и жест обмена родные, BYDMate только запускает выбранную пару приложений. Выбор механизма в настройках на таких прошивках не показывается, он там один.
Триггер «Клавиша руля». Любую клавишу руля можно повесить на своё действие: Автоматизация, добавить триггер, «Клавиша руля», нажать нужную клавишу в режиме обучения. Выключили или удалили правило, клавиша снова работает по заводу.
Память о водителе. Агент запоминает имя и устойчивые предпочтения, если сказать ему об этом. Фраза «забудь …» убирает один факт, список фактов и кнопка «Забыть всё» в Настройки → Голос-агент → Агент.
Подсказки навигатора на лобовое стекло (HUD). Манёвр, дистанция до него, улица, время прибытия и знак ограничения скорости выводятся на заводской проекционный дисплей. Ведение продолжается, даже когда навигатор свёрнут или выведен на приборку. Нужна комплектация с HUD. Подробнее в разделе «HUD».
Разделение экрана 1/3 + 2/3. Два приложения на экране одновременно: навигатор пошире, музыка или мессенджер поуже. Запуск с виджета, из автоматизации и голосом. Если окна BYDMate на вашей прошивке недоступны, есть режим «Родное разделение» силами самой прошивки. Подробнее в разделе «Разделение экрана».
Камеры слепых зон. По включённому поворотнику картинка с боковой камеры сама появляется на приборке или в окошке на экране. Если сзади-сбоку обнаружена машина, окно подсвечивается оранжевой рамкой.
Голосовой AI-агент по-русски. Распознавание речи работает прямо в машине, без интернета. Простые команды исполняются мгновенно, остальное решает AI-агент: читает данные машины, управляет кузовом и климатом, строит маршруты, запускает сценарии и отвечает голосом. Подробнее в разделе «Голосовой AI-агент».
Ручной расчёт запаса хода. Если автоматический расчёт по истории поездок не подходит, в настройках батареи можно задать свою таблицу расхода в зависимости от температуры батареи.
| Функция | Описание | |
|---|---|---|
| BMS | Реальный расход | Данные BMS (energydata), не бортовой компьютер. Тренд по скользящему окну 25 км |
| GPS | Трекинг поездок | GPS-маршруты, дистанция, скорость |
| Charge | Зарядки | Автоматическая запись AC/DC, статистика за период и за всё время, ручное добавление и редактирование |
| AI | Инсайты | Анализ вождения: локальные правила на устройстве (по умолчанию) или LLM через OpenRouter |
| TRIP | Счётчики TRIP 1/2 | Пробег, расход, время и стоимость с момента сброса (как в машине); сброс долгим нажатием, подробности по касанию |
| Bat | Здоровье батареи и «Техника» | Карточка: SoH (на Leopard 3), температура, 12V, разброс ячеек, изоляция. Тап открывает экран «Техника» с живыми параметрами батареи, моторов, климата и шин |
| Map | Карта маршрута | osmdroid (OpenStreetMap) в деталях поездки |
| Rules | Автоматизация | Правила WHEN→THEN: триггеры по параметрам → команды управления машиной |
| Cluster | Вывод на приборку | Вывод выбранного приложения на приборную панель кнопкой руля (по умолчанию правая звезда) |
| HUD | Проекция на лобовое | Манёвры, дистанция и знак ограничения скорости из Яндекс Навигатора на заводском проекционном дисплее |
| Split | Разделение экрана | Два приложения сразу: окнами BYDMate в пропорции 1/3 и 2/3 либо штатным разделением прошивки |
| Cam | Камеры слепых зон | Камера нужной стороны по включённому поворотнику: на приборке или в окошке на экране |
| Voice | Голосовой агент | Русский офлайн-ассистент: распознавание речи на устройстве, AI-агент (32 инструмента), нейросетевая озвучка |
| Widget | Плавающий виджет | 7 полей поверх других приложений: SOC, запас хода, расход + тренд, время, t° салона, t° батареи, 12V |
| Auto | Автозапуск | WorkManager, запускается при включении |
| CSV | Экспорт данных | Экспорт поездок и зарядок в CSV |
Вокруг SOC-кольца расположены четыре значения в стиле плавающего виджета: сверху длительность поездки, одометр и температура в салоне; снизу пробег текущей поездки, расчётный запас хода и расход текущей поездки со стрелкой тренда. Цвета и логика тренда такие же, как в плавающем виджете, поэтому информация читается одинаково и на главном экране, и поверх других приложений.
Ниже кольца: AI-инсайт, малая карточка здоровья батареи (SoH на Leopard 3, температура, 12V), два счётчика TRIP 1 и TRIP 2, последние поездки, фильтр периода. Каждый счётчик показывает пробег, расход в кВт·ч (включая стоянку), время в пути и стоимость с момента сброса. Долгое нажатие сбрасывает счётчик, касание открывает детали.
Анализ эффективности вождения — расход, тренды, батарея, рекомендации (локально или через LLM)
Температура, SoH (на Leopard 3), 12V аккумулятор, баланс ячеек, напряжение
Аккордеон Месяц > День > Поездка с фильтрами и цветовой индикацией расхода
Правила КОГДА→ТОГДА, редактор условий и действий, настройки срабатывания
Разделы: Голос-агент, Виджет, Дисплей, Разделение экрана, Авто и батарея, Места, Интеграции, Сервис и данные, Приложение
Две панели 1/3 и 2/3, виджет BYDMate поверх
Вкладка Автоматизация позволяет создавать правила для автоматического управления автомобилем напрямую через системный интерфейс машины.
КОГДА условие выполняется → ТОГДА выполнить команду.
Примеры:
| Описание | |
|---|---|
| Триггеры | SOC, скорость, температура, двери, окна, люк, давление шин, режим езды, точки-геозоны, время суток, точное время и промежуток с днями недели, клавиша руля, тап по виджету, голосовая фраза, запуск сервиса, появление интернета и др. |
| Команды | Окна (включая отдельные — водителя и пассажира), климат, свет, замки, люк, зеркала — напрямую через системный интерфейс машины |
| 17 видов действий | Команда автомобилю, уведомление, запуск приложения, звонок, маршрут в Я.Навигаторе, открыть URL, Яндекс.Музыка, пауза, громкость медиа, охранный режим, точка доступа Wi-Fi, озвучить текст, запрос агенту, вывод на приборку, разделение экрана (запуск, закрытие, переключение) |
| Edge trigger | Срабатывает только при переходе false→true (не повторяется каждые 3 сек) |
| Cooldown | Настраиваемая пауза между срабатываниями |
| Overlay-подтверждение | Всплывающее окно «Отмена / Выполнить» перед действием. Таймаут 15 с → автоотмена |
| Безопасность | Окна не открываются на скорости > 120 км/ч, люк > 80 км/ч, двери не отпираются > 30 км/ч, CAN/SHELL команды заблокированы |
| Журнал | Лог всех срабатываний с результатами |
| Шаблоны | 6 готовых правил для быстрого старта |
| Выполнить сейчас | Ручной запуск правила из редактора, мимо триггеров и cooldown |
BYDMate умеет выводить выбранное приложение (по умолчанию навигацию) на приборную панель за рулём, чтобы карта и манёвры были перед глазами, а центральный экран оставался свободным.
По умолчанию проекцию включает правая звезда. Кнопку можно переназначить, см. «Выбор кнопки» ниже.
Откройте Настройки → Дисплей и включите тумблер «Проекция на приборку». Приложение само активирует нужный сервис (нужна выполненная активация ADB при установке, см. «Установка») и само переводит приборку в режим проекции: за это отвечает тумблер «Сразу показывать на приборке», он включён по умолчанию. На головном устройстве вручную ничего настраивать не нужно.
После этого короткое нажатие выбранной кнопки руля (по умолчанию правая звезда) переносит выбранное приложение на приборку и обратно.
Если «Сразу показывать на приборке» выключить, приборку придётся один раз перевести в режим проекции самому: иконка проекции на главном экране головного устройства, затем кнопка IPC на появившейся карте. Выключать стоит, если после вывода на приборку с неё пропадает ADAS или штатный виджет и не возвращается сам (на части прошивок DiLink 5.0 экран проекции живёт внутри штатной мини-карты): с выключенным тумблером приложение не трогает режим приборки, это касается и камер слепых зон, а картинка видна в мини-карте.
В Настройки → Дисплей, рядом с тумблером проекции, выбирается режим вывода на приборку. Их два, и отличаются они тем, трогает ли приложение системные настройки машины.
«Заводской» (по умолчанию). Приложение не меняет ни одной системной настройки: проекция работает через виртуальный дисплей (картинка зеркалится на приборку), ползунки подстройки окна работают точнее. Ставится и удаляется бесследно. Ограничение: голосовой агент и HUD не видят экран навигатора во время проекции, подсказки о манёврах агент берёт только из уведомления Навигатора.
«Расширенный». Навигатор запускается отдельным окном прямо на дисплее приборки, поэтому голосовой агент и HUD видят маршрут во время проекции. Для этого приложение включает системную настройку оконного режима (enable_freeform_support). Режим включается только через диалог с объяснением, после включения нужна однократная перезагрузка головного устройства (долгое зажатие колёсика громкости). Новый режим применяется при следующем выводе на приборку.
Как вернуть заводские настройки. Переключите режим обратно на «Заводской»: приложение сразу вернёт системную настройку к заводскому значению, а перезагрузка ДиЛинка полностью завершит возврат. После этого система в том же состоянии, что и до установки BYDMate.
Там же, под выбором режима, есть тумблер «Полный экран приборки». По умолчанию карта занимает верх приборки, а внизу остаётся штатная полоса со скоростью и основными показателями. Включите тумблер, если хотите карту на всю приборку без этой полосы. Работает только на прошивках с новым интерфейсом, на остальных ничего не меняет; применяется при следующем выводе на приборку.
Если вы пользовались проекцией в версиях до 3.7, при обновлении прежнее поведение сохранится автоматически: режим останется «Расширенный». У тех, кто проекцию не включал, приложение системные настройки не трогает вообще.
По умолчанию проекцию включает правая звезда руля. Если этой кнопки нет или удобнее другая, под тумблером нажмите «Изменить» и нажмите нужную кнопку на руле, приложение её запомнит. Назначить можно любую кнопку руля, которую видит система. Системные кнопки (громкость, питание и т.п.), обзор 360 и карусель приборки назначить нельзя.
По умолчанию на приборку выводится Яндекс.Навигатор. Под тумблером включения есть выбор приложения: можно указать любое установленное (другой навигатор, медиаплеер и т.д.). Новый выбор применяется при следующем нажатии кнопки.
В разделе Настройки → Дисплей → «Размер окна на приборке» пять ползунков. Если на вашей машине проекция и так занимает всю приборку (например, Leopard 3), настраивать ничего не нужно: значения по умолчанию дают прежний полноэкранный режим.
Изменения применяются сразу, прямо во время проекции - двигайте ползунок и смотрите на приборку.
На части моделей штатная приборка показывает проекцию не на весь экран, а в фиксированной зоне (на Sea Lion 07 - правая треть). Полноэкранное окно там обрезается. Решение: уменьшить окно и сдвинуть его в видимую зону ползунками выше.
Проверенные владельцем Sea Lion 07 значения: ширина 32%, высота 92%, сдвиг по горизонтали 100%, сдвиг по вертикали 6%, масштаб 90%.
Вывести окно на весь экран приборки на таких машинах не получится: зону показа задаёт прошивка панели, и она не управляется.
Проекция работает в одном из двух режимов, описанных выше. В «Заводском» BYDMate создаёт виртуальный дисплей и зеркалит в него выбранное приложение, не меняя настроек системы. В «Расширенном» приложение запускается отдельным окном прямо на дисплее приборной панели, поэтому голосовой агент и HUD видят маршрут во время проекции. Чтобы перехватывать кнопки руля, приложение включает собственный сервис специальных возможностей (accessibility). Он работает только при включённом тумблере и нужен исключительно для выбранной кнопки. Прошивку и саму машину это не меняет, всё обратимо.
Если в машине есть заводской проекционный дисплей, BYDMate выводит на лобовое стекло подсказки Яндекс Навигатора: значок манёвра, дистанцию до него, название улицы и время прибытия. Отдельным тумблером включается знак ограничения скорости, он передаётся числом. Пока Навигатор предупреждает о камере, вместо стрелки манёвра показывается значок камеры и расстояние до неё. Ведение продолжается, даже когда Навигатор свёрнут или выведен на приборку; Яндекс Карты работают источником подсказок наравне с Навигатором.
Включается в Настройки → Дисплей, раздел «HUD (проекционный дисплей)»: тумблер «Навигация на HUD» и отдельно «Знак скорости под стрелкой». Подсказки идут по штатному каналу самого HUD, поэтому нужна комплектация с проекционным дисплеем. Если такого канала на машине нет, приложение честно пишет об этом в настройках и функцию не включает.
При включённом поворотнике BYDMate сам показывает картинку с боковой камеры: левый поворотник выводит левую камеру на приборку, правый показывает окошко на главном экране. Если датчик видит машину сзади-сбоку, окно подсвечивается оранжевой рамкой.
Включается в Настройки → Дисплей, раздел «Слепые зоны» (по умолчанию выключено). Там же настраиваются порог скорости, ниже которого камера не показывается, ширина окошка и его положение: кнопка «Настроить положение» показывает пустое окошко, которое перетаскивается пальцем туда, где будет камера. Если левая камера на приборке мешает, включите там же «Обе камеры на главный экран»: обе картинки будут показываться на планшете, приборка не трогается. Нужна комплектация с круговым обзором.
Полноценный русский голосовой помощник внутри BYDMate. Речь распознаётся прямо на головном устройстве, без интернета: нейросеть GigaAM v3 слушает и понимает по-русски. Простые команды исполняются мгновенно локальным разбором, всё остальное решает AI-агент: языковая модель с 32 инструментами, которая сама читает данные машины, управляет функциями кузова, строит маршруты, запускает сценарии и отвечает голосом.
Штатный голосовой помощник BYD уже нативно работает с английским и китайским. Делать ещё один английский помощник бессмысленно. BYDMate закрывает то, чего в машине нет вообще: русский язык. Поэтому распознавание речи, разбор команд и голоса озвучки заточены именно под русский, английская версия агента не планируется.
У агента 32 инструмента. Примеры фраз:
Машина и климат
Поездки, зарядки, статистика
Навигация и места
Медиа и приложения
Автоматизация
Интернет
| Группа | Что доступно |
|---|---|
| Окна | все, передние, задние, водителя, пассажира, задние левое и правое; открыть, закрыть, проветривание |
| Климат | включить, выключить, температура от 16 до 30 |
| Подогрев сидений | водитель и пассажир, уровни 1-5 и выключение |
| Вентиляция сидений | водитель и пассажир, уровни 1-5 и выключение |
| Зеркала | обогрев вкл/выкл |
| Свет | салон, подсветка и другие режимы (6 команд) |
| Замки | запереть, отпереть |
| Люк и шторка | открыть, закрыть, промежуточные положения |
| Багажник | открыть, закрыть |
| Передний багажник | открыть, закрыть |
| Холодильник | охлаждение от -6 до +6, нагрев от 35 до 50, выключение |
| Аварийка | включить, выключить |
Безопасность: открытие окон блокируется на скорости выше 120 км/ч, люка выше 80 км/ч, отпирание дверей выше 30 км/ч; передний багажник открывается только на стоящей машине.
Типовые формулировки исполняются локальным разбором мгновенно, без языковой модели и без сети: окна (включая «приоткрой окно водителя»), температура климата (включая «сделай теплее» и «холоднее»: агент читает текущую уставку и сдвигает на градус), громкость, подогрев и вентиляция сидений уровней 1-3. Всё, что локальный разбор не понял уверенно (отрицания, уровни сидений 4-5, передний багажник, свободные формулировки), передаётся AI-агенту. Если агент выключен или ключ не задан, такие фразы получают отказ, а быстрые команды продолжают работать.
Полный список того, что понимает локальный разбор:
| Группа | Что можно сказать |
|---|---|
| Окна | «открой/закрой окна», «окна наполовину», «проветри» (все, передние, задние, водителя, пассажира, заднее левое/правое), «приоткрой окно водителя» |
| Климат | «включи климат», «выключи кондиционер», «включи обдув», «температура 22» (16-30), «сделай теплее», «холоднее», «внутренняя/внешняя циркуляция», «обдув лобового» вкл/выкл |
| Сиденья | «подогрев сиденья водителя 2», «вентиляция пассажирского сиденья», уровни 1-3, «выключи подогрев сиденья» |
| Зеркала | «подогрев зеркал» вкл/выкл |
| Свет | «амбиентная подсветка», «дневные ходовые огни», «свет в салоне» вкл/выкл |
| Двери | «запри/отопри машину», «запри двери» |
| Люк | «открой/закрой люк», «люк наполовину», «открой/закрой шторку» |
| Багажник | «открой/закрой багажник» |
| Громкость | «громкость 15», «выключи/включи звук» |
| Ключ | Обязателен | Зачем |
|---|---|---|
| OpenRouter | Достаточно одного любого LLM-ключа; для скорости рекомендуется OpenRouter | Мозг агента. Быстрые модели (например, Gemini Flash) отвечают почти мгновенно, цена: доли цента за запрос |
| z.ai | Бесплатная альтернатива | Мозг агента, модель glm-4.7-flash, бесплатно, но отвечает заметно медленнее |
| Свой сервер | Альтернатива | Любой OpenAI-совместимый эндпоинт: URL, ключ, модель |
| Exa | Нет | Улучшенный веб-поиск. Без него «поищи в интернете» работает через нативный поиск LLM-провайдера |
| MiniMax | Нет | Только для онлайн-голоса MiniMax, на работу агента не влияет |
Все ключи вводятся в приложении и хранятся локально, в коде и в репозитории секретов нет.
Офлайн-голоса (работают без интернета, скачиваются по одному):
| Голос | Род | Размер | Качество |
|---|---|---|---|
| Дмитрий (по умолчанию) | мужской | 21 МБ | обычное |
| Алёна | женский | 18 МБ | обычное |
| Руслан | мужской | 21 МБ | обычное |
| Ирина | женский | 21 МБ | обычное |
| Марк | мужской | 145 МБ | улучшенное |
| Софья | женский | 145 МБ | улучшенное |
Марк и Софья (движок Supertonic) звучат заметно естественнее обычных, но весят больше и делят один архив: скачав любого, второго уже не докачиваете. Скорость и живость интонации настраиваются слайдерами, рядом кнопка «Прослушать пример».
Онлайн-голоса (опционально, звучат естественнее): Gemini и OpenAI через ключ OpenRouter, MiniMax через свой ключ (три способа подключения: официальный API, fal.run, replicate). Офлайн-подмены нет: если онлайн-голос не отвечает или падает, реплика остаётся текстом в пилюле-орбе, но не проговаривается.
Про громкость: ответы агента идут через голосовой канал BYD (тот же, что у штатных подсказок), его громкость регулируется системной настройкой голоса. Команда «сделай громче» меняет громкость музыки, а не голоса агента. Если агент кажется тихим или громким, крутите системную громкость голоса.
Агент работает в три шага, и задержка копится на каждом.
Нужна максимальная скорость: выключите тумблер «Ответы агента». Озвучки не будет, реплика останется текстом на экране, а работать будут только первые два шага. Быстрые команды при этом исполняются вообще без интернета.
В настройках выбирается один из трёх характеров ответов (по умолчанию «Штурман») и род агента (мужской или женский), от этого зависят формулировки и устные реплики. Там же задаётся имя для перебивания.
Внизу раздела «Голос-агент» есть тумблер, который отключает штатный голосовой помощник BYD, чтобы он не просыпался параллельно с агентом. Полностью обратимо, применяется после перезагрузки машины (и включение, и выключение). По умолчанию выключено.
Скажите агенту, как вас зовут или что вы обычно предпочитаете, и он будет помнить это между разговорами. «Забудь …» убирает один факт. Список фактов и кнопка «Забыть всё»: Настройки → Голос-агент → Агент. Факты хранятся только на головном устройстве и уходят лишь в запрос к выбранной вами языковой модели.
Компактный overlay 260×108 dp поверх других приложений — видно на карте, в медиа, в BYD-приложениях.
Семь полей в 3 строки. Цвета: иконки серые, значения белые. Рамка и SOC% подсвечиваются цветом статуса (SOC или 12V — что хуже).
Верхняя строка (мелким, 13sp):
N мин или X ч Y мин (напр. 47 мин, 1 ч 12 мин). Старт — момент включения зажигания, конец — выключение. Простои с включённой машиной (стоишь с кондиционером, пассажир вышел купить воды, светофор) входят в поездку — пока электрика жива, счётчик не сбрасываетсяЦентральная строка (крупно, главные значения):
SOC × ёмкость батареи ÷ baseline-расход × 100. Тильда подчёркивает что это оценка, не показания БК. Подробнее про то, как считается baseline-расход, ниже в разделе «Запас хода»Нижняя строка (мелким, 13sp):
Цифра справа — расход текущей поездки в кВт·ч/100км. Считается как энергия, потраченная с момента включения зажигания, делённая на пройденные с того же момента километры. По мере движения цифра сходится к тому значению, которое в итоге запишется в историю поездок: что видно в виджете в момент остановки, то и попадёт в карточку поездки.
Первые 2 километра виджет плавно переходит со среднего расхода прошлой поездки на расход текущей: до 300 м показывает прошлое значение, с 300 м до 2 км линейно подмешивает текущее, после 2 км показывает только текущее. Так не пугают резкие 50–60 кВт·ч/100км из холодного старта и разгона: пока поездка короткая, за основу берётся уже устоявшийся средний расход прошлой поездки, и только когда дистанция становится представительной, цифра уходит на собственный расход.
На стоянке (зажигание выключено) показывается средний расход прошлой завершённой поездки — то же значение, что было видно в её последний момент.
Запас хода ~N км считается по смеси: 50% веса берётся от последней завершённой поездки, 30% от предпоследней и 20% от той, что была до неё (короткие поездки до 3 км в расчёт не идут — это не репрезентативный пробег). Когда едешь длинную дорогу, к этой смеси добавляется ещё расход за последние 10 км текущей поездки: его доля растёт от нуля на первых трёх километрах до половины к 25 километрам. Так прогноз быстро подхватывает смену стиля (городской хвост перед трассой, обратно с трассы в город), но не дёргается на коротких заездах и стоянках с климатом.
Это автоматический расчёт. Если он вам не подходит, в Настройки → Авто и батарея → «Способ расчёта запаса хода» есть метод «Ручной»: своя таблица из 5 точек, температура батареи от +20 до -20 °C и расход при ней, опционально с запасом хода на 100% заряда.
Стрелка тренда появляется после 2 км пробега и сравнивает скользящее 25-километровое среднее с твоим обычным стилем (среднее по последним 10 поездкам):
Стрелка не дёргается от каждой остановки на светофоре — есть небольшая инерция: чтобы стрелка сменила цвет, расход должен заметно отличаться от обычного и держаться так минимум минуту.
Что такое «поездка» для этой цифры. Один цикл зажигания: включил → выключил. Стоянка с включённым кондиционером внутри поездки учитывается естественно — лишние кВт·ч попадают в общий знаменатель. Короткие блипы (светофор, переподключение) не раскалывают поездку на две. Если DiLink прибьёт приложение посреди трассы — после рестарта счёт продолжается с реального момента включения зажигания, а не с нуля.
Два приложения на экране одновременно: одно занимает две трети, второе треть. Типичная пара - навигатор пошире, музыка или мессенджер поуже. Стороны меняются местами, приложения - на ходу, выбранная пара запоминается.
Пока функция выключена, приложение системных настроек машины не трогает. Выключение тумблера возвращает настройку к заводскому значению - если только оконный режим не нужен ещё и проекции «Расширенный»: тогда настройка вернётся к заводской, когда выключите и её.
В настройках, под тумблером, выбирается, чем делить экран: «Окна BYDMate» (по умолчанию) или «Родное разделение».
На прошивках с новым интерфейсом UI7 выбор механизма не появляется: там разделение выполняет сама машина, панели 1/3 и 2/3 родные, перезагрузка головного устройства для включения не нужна.
Три способа. Значок «?» рядом с заголовком секции в настройках напоминает о них прямо в машине.
При первом запуске приложение спросит, что показывать: сначала выбирается приложение для широкой части (2/3), затем для узкой (1/3). Пара запоминается, следующий запуск открывает её сразу. Сменить приложения можно через пилюлю или в настройках; там же есть «Сбросить последнюю пару».
Пока разделение активно, внизу экрана висит маленькая пилюля. Тап по ней открывает меню: поменять стороны, поменять приложения, выбрать другое приложение для левой или правой панели, выход в обычный полный экран. Когда разделение закрывается, пилюля исчезает сама.
Вкладка Зарядки автоматически ведёт журнал реальных пополнений заряда: список зарядок по месяцам, статистика за период и за всё время, фильтры AC и DC. Не каждое подключение пистолета становится записью: запись создаётся только если SoC реально вырос. Если кто-то ткнул пистолет и вынул через минуту, в журнал ничего не попадёт.
Запись пишется, если за время сессии у машины выросла либо ёмкость батареи, либо SoC. BYDMate пробует три источника данных по очереди и берёт первое пригодное значение:
Если BYDMate работает в момент зарядки, запись появляется сразу. Если подключение случилось до запуска приложения или машина уехала в глубокий сон, BYDMate догоняет запись на следующем старте, как только увидит, что SoC прыгнул вверх по сравнению с тем, что было до зарядки. Поэтому даже offline-зарядки в гараже попадают в журнал.
Тип зарядки определяется по двум сигналам, по приоритету:
На вкладке Зарядки три фильтра: «Все», «AC», «DC».
Если запись не появилась автоматически или цифры выглядят странно:
+ зарядка в шапке вкладки: добавить сессию вручную с указанием даты, длительности, кВт·ч, тарифа.Функция в активном тестировании. На Leopard 3 пишется стабильно. На других моделях BYD автоматика может сработать неточно: например, бортовая система не сообщит мощность или тип разъёма, тогда AC и DC может определиться неправильно. В таких случаях правьте записи вручную и при возможности присылайте логи в Issues.
SoH (State of Health) — это процент «здоровья» тяговой батареи, который рассчитывает сама бортовая система автомобиля по своим внутренним алгоритмам.
На BYD Leopard 3 (Fangchengbao Bao 3) BYDMate берёт это значение напрямую из бортовой системы и показывает в карточке батареи на Главной. Это реальный SoH от машины, а не оценка по разнице SoC: BYDMate просто читает то, что пишет себе сама машина.
На других моделях BYD доступ к этому значению пока не подтверждён, поэтому SoH там не отображается. Остальные ячейки карточки (температура батареи, 12V, разброс ячеек, сопротивление изоляции) работают на всех поддерживаемых моделях.
Тап по карточке открывает экран «Техника»: напряжение и ток тяговой батареи, доступная мощность батареи, лимиты BMS на заряд и разряд, разброс ячеек, температуры моторов и инверторов, климат, давление и температура шин, история SoH и пробега. У каждого параметра есть значок «?» с подсказкой простым языком. Если машина не отдаёт параметр, строка показывает «-», пустые карточки скрываются.
Если в вашей машине SoH доступен и вы хотите помочь добавить поддержку, заведите Issue с указанием модели и года выпуска.
SoH и автоматическая запись зарядок на Leopard 3 работают автоматически, отдельно ничего включать не нужно. BYDMate читает значения напрямую от бортовой системы автомобиля, как только активна беспроводная ADB-отладка.
На Leopard 3 эти функции протестированы. На других моделях BYD доступ к этим данным не подтверждён, тогда SoH и точная мощность зарядок могут не появиться, но остальные функции BYDMate работают как обычно.
BYDMate разрабатывается и тестируется на BYD Leopard 3 (Fangchengbao Bao 3). На других моделях BYD большинство функций тоже работает, но есть отличия. Перед первым запуском проверьте:
energydata. На моделях без этой базы (Song, Yuan и аналоги) поездки теперь записываются нативно, фоновым опросом параметров машины (источник NATIVE_POLLING), так что список больше не пустой. Расход в таких поездках считается по дельте SoC, поэтому он чуть грубее, чем на Leopard 3, где данные берутся из BMS.Если что-то не работает или показывает странное, заведите Issue с указанием модели машины и версии прошивки DiLink - и приложите каталог параметров вашей машины: Настройки → Сервис и данные → «Сохранить каталог fid'ов». Файл fid-dump-….txt появится в папке Download. Внутри только технические идентификаторы параметров - без VIN, без геолокации, без личных данных.
Зачем это нужно. У разных моделей BYD наборы параметров различаются: команда, которая на Leopard 3 включает обдув сиденья, на Song может иметь другой номер или отсутствовать. Именно поэтому часть функций на других машинах не срабатывает. Каталог с вашей машины показывает, как параметры называются и нумеруются именно на вашей прошивке - и мы чиним по этим данным, а не вслепую.
| Параметр | Значение |
|---|---|
| Платформа | DiLink 5.0 (Android 12, API 32) |
| Процессор | Snapdragon 780G |
| Экран | 15.6" landscape, 1920x1200 |
| GMS | Нет (AOSP без Google Play Services) |
| Протестировано | BYD Leopard 3 (Fangchengbao Bao 3) |
BYD energydata (BMS SQLite) → HistoryImporter → Room DB → Compose UI
autoservice (системный Binder) → TrackingService ↗ ↓
Android LocationManager → TripTracker (GPS) ↗ LocalInsightEngine / OpenRouter
autoservice (запись команд) ← AutomationEngine ← Rules (Room DB)
| Данные | Источник |
|---|---|
| Расход, пробег, длительность | BYD energydata (BMS) |
| SOC, скорость, температуры | Системный сервис машины (autoservice Binder) |
| Напряжение ячеек, 12V, SoH | Системный сервис машины (autoservice Binder) |
| GPS координаты | Android LocationManager |
| AI-аналитика | Локальные правила на устройстве (по умолчанию) или OpenRouter API (опционально) |
| Управление авто | Системный сервис машины (запись команд) |
Без OBD-адаптера и без стороннего D+. BYDMate читает данные и управляет машиной напрямую через системный сервис autoservice (тот же, что использует штатная система BYD) под shell-доступом по беспроводной ADB.
| Функция | Куда уходит | Что уходит | Когда активно |
|---|---|---|---|
| Облачные AI-инсайты | OpenRouter | агрегированная статистика поездок и зарядок за 7/30 дней | только после ввода API-ключа |
| Голосовой агент (LLM) | OpenRouter / z.ai / свой сервер | текст команды, состояние автомобиля (SOC, климат и т.п.), при навигационных запросах GPS-координаты | только после настройки провайдера |
| Веб-поиск агента | Exa / z.ai / OpenRouter | текст поискового запроса | ключ введён и агент вызвал инструмент |
| Погода (агент) | Open-Meteo | GPS-координаты или название места (геокодинг) | агент вызвал инструмент |
| Зарядные станции (агент) | Overpass (overpass-api.de / maps.mail.ru) | GPS-координаты | агент вызвал инструмент |
| Онлайн-голоса озвучки | MiniMax / fal.ai / Replicate / OpenRouter | текст озвучиваемого ответа | только если выбран онлайн-голос |
| Карта в деталях поездки | тайл-серверы OpenStreetMap (или Amap, если выбран в настройках) | координаты видимой области карты | при открытии карты поездки или редактора мест |
| Проверка обновлений | GitHub API | ничего (запрос списка релизов, сравнение версий локально) | автоматически |
| ABRP live-телеметрия | abetterrouteplanner.com | SOC, мощность, скорость, температуры, одометр, давление шин, статус зарядки, ёмкость батареи, SoH, кВт·ч текущей сессии зарядки, модель автомобиля (GPS намеренно не отправляется) | только после ввода токена |
| Вебхук телеметрии | Настройки → Интеграции → Вебхук | тот же JSON, что в ABRP, POST на ваш URL раз в 1/8/30 с (движение/зарядка/стоянка); координаты только по отдельному тумблеру | выключен по умолчанию |
Без введённых ключей наружу уходят только проверка обновлений (GitHub) и тайлы карты при просмотре маршрута поездки, а также скачивание голосовых моделей по явному запросу пользователя (github.com). API-ключи хранятся локально в базе приложения и никуда не передаются, кроме самого провайдера.
Без ADB BYDMate работает как офлайн-журнал поездок: история из штатной базы, карта маршрута, CSV-экспорт, AI-инсайты по уже накопленным данным.
Включённая ADB-отладка нужна для всего, что читает или пишет параметры машины: живые показатели в виджете и на дашборде (SOC, запас хода, температуры, 12V), SoH, автоматический журнал зарядок, автоматизация, вывод на приборку, разделение экрана, подсказки на HUD, камеры слепых зон, управление машиной голосом и запись логов.
Эти фичи включаются автоматически, отдельный переключатель не нужен. При первом запуске BYDMate DiLink один раз покажет диалог «Allow ADB debugging» — нажмите Allow и поставьте галочку «Always allow from this computer», чтобы он не спрашивал заново.
DiLink 3 / 4 — ADB можно активировать самостоятельно: установите BydDevelopmentTools, зайдите в Настройки → Version Management, 10 раз тапните по тексту Reset to factory default, активируйте Debug Mode when USB is Connected и Wireless adb debug switch. На обновлённых прошивках DiLink 3/4 ADB может быть так же закрыт, как на DiLink 5 — тогда придётся идти по пути ниже.
DiLink 5.0 — ADB-отладка заблокирована и открывается только удалённо из Китая. Сделать это можно через продавцов на TaoBao (поиск по DiLink 5.0, ~40 ¥ внутри Китая / ~80 ¥ извне, оплата через AliPay). Продавец удалённо открывает инженерное меню по присланному QR-коду, после чего ADB включается штатно.
Пошаговая инструкция: PDF-гайд (русский) — приложен в репозитории.
На прошивках DiLink с лета 2026 (сборки «2606») порт ADB закрывается при каждой перезагрузке головного устройства, и все функции управления машиной перестают работать до ручного включения ADB. Для таких машин в Настройках → Система машины есть тумблер «Восстанавливать ADB после перезагрузки» (по умолчанию выключен): приложение поднимает ADB заново через встроенную в Android беспроводную отладку. Рядом с тумблером есть значок «?» с подробным объяснением, а под ним строка состояния.
Что нужно знать:
WRITE_SECURE_SETTINGS (одной командой через ADB). Без него включить беспроводную отладку нельзя: строка состояния покажет «Нужна активация».Начиная с версии 3.0.0 BYDMate работает напрямую с системой машины и не требует стороннего приложения D+ (迪加). Все данные читаются и команды отправляются через системный сервис автомобиля.
Если вы пользовались прежними версиями и устанавливали D+, после проверки работы BYDMate его можно удалить с DiLink.
adb install BYDMate.apk)Важно: отключите "Disable background Apps" для BYDMate, иначе DiLink будет убивать приложение:
DiLink > Settings > General > Disable background Apps > BYDMate = OFF
В Настройках можно изменить:
В Настройки → Сервис и данные → Система машины два пункта, которые меняют поведение самой машины, а не приложения.
Колёсико громкости на руле. Тумблер, при котором нажатие ставит воспроизведение на паузу и продолжает его, а не переключает источник звука. Нужен после обновления прошивки, где нажатие стало менять источник. По умолчанию выключено.
Язык интерфейса машины. Только на прошивках UI7. Кнопка открывает скрытый штатный диалог BYD с полным списком языков, включая русский, украинский и польский. Язык меняет сама прошивка, приложение ничего не записывает. У части владельцев на русском перестаёт работать автопарковка, тогда верните English той же кнопкой.
Карточка на дашборде анализирует вашу статистику за последние 7 дней (сравнение с предыдущими 7) и показывает заголовок, краткий вывод, таблицу метрик и до 5 рекомендаций. Работает без интернета в режиме по умолчанию.
| Режим | Где включается | Интернет | API-ключ |
|---|---|---|---|
| Локальный (офлайн) | По умолчанию | Не нужен | Не нужен |
| OpenRouter (облако) | Настройки → Интеграции → «OpenRouter (облако)» | Нужен | OpenRouter API Key |
Переключатель «Источник анализа» в Настройках → Интеграции. В локальном режиме доступна кнопка «Обновить инсайт» для ручного пересчёта. Автообновление — раз в день (результат кэшируется на устройстве).
Всё считается из локальной базы Room — без GPS, маршрутов и персональных идентификаторов:
idle_drains)Минимум для анализа: не менее 5 поездок за последние 7 дней. Иначе карточка покажет «Мало данных для анализа».
Логика локального движка — LocalInsightEngine.kt: детерминированные пороги + шаблоны строк (local_insight_* в strings.xml). Тексты локализованы на 6 языков (ru / en / zh / pt / pl / be).
Что важнее — то и в заголовке. Первое сработавшее правило с большим priority:
| Приоритет | Условие | Пример заголовка |
|---|---|---|
| 90 | 12V < 11.8 В | «12V критично низкий» |
| 85 | Разброс ячеек > 50 мВ | «Большой разброс банок» |
| 80 | Расход ↑ > 15% к прошлой неделе | «Расход ▲15% за неделю» |
| 78 | Ночной drain ≥ 4 кВт·ч и ≥ 35% простоя | «Ночной расход на стоянке» |
| 70 | Расход ↑ > 5% | «Расход ▲8% за неделю» |
| 60 | Расход ↓ > 5% | «Расход ▼10%» |
| 10 | Иначе | «Расход стабилен» |
Параллельно проверяется набор правил; в карточку попадают до 5 самых приоритетных. Примеры тем:
| Тема | Когда срабатывает |
|---|---|
| Ночной простой | Ночью ушло ≥ 0.3 кВт·ч с мотором |
| DC дороже AC | Оба типа зарядки ≥ 3 кВт·ч, DC на 15%+ дороже |
| Много DC | ≥ 2 DC-сессий, DC > AC×1.5 |
| Короткие поездки | ≥ 40% поездок короче 5 км |
| Простой с мотором | ≥ 2 кВт·ч на стоянке |
| 12V низкий / падает | 11.8–12.4 В или тренд вниз за неделю |
| Разброс ячеек | 31–50 мВ |
| Зима + рост расхода | ≤ 5°C и расход вырос |
| Лучшая / худшая поездка | Разброс ≥ 5 кВт·ч/100 |
| Снижение расхода | ↓ > 5% к прошлой неделе |
| Трасса | Средняя скорость ≥ 75 км/ч |
| Высокий / низкий расход | ≥ 28 или ≤ 16 кВт·ч/100 |
| Рост пробега / поездок | +20% к прошлой неделе |
| Жара + кондиционер | ≥ 25°C, расход ≥ 22 |
| Смешанная зарядка | AC и DC в одну неделю |
| Стоимость | Руб/100 км или зарядки за неделю |
| Хорошие привычки | Мало ночного или дневного простоя, 12V/баланс в норме |
Полный список правил и порогов — в LocalInsightEngine.kt и тестах LocalInsightEngineTest.kt.
Опционально: вместо шаблонов текст генерирует LLM. Настройка:
В облачном режиме на сервер уходит только агрегированная статистика (те же метрики, что для локальных правил) — без GPS и маршрутов. Запрос раз в день, ответ кэшируется локально. Таблица dynamics строится так же, как в локальном режиме; от LLM приходят заголовок, summary и формулировки рекомендаций.
BYDMate может отправлять живые показатели машины в A Better Route Planner (ABRP) через официальный Iternio Telemetry API. ABRP использует эти данные, чтобы план маршрута и оценка остатка хода обновлялись по реальному состоянию батареи, а не по средним табличным значениям.
Функция опциональная, выключена по умолчанию и включается вручную в Настройках.
ABRP использует «Generic Live Data Token» — отдельный токен на каждую машину в гараже:
User Token.Если в списке нет «Generic»: смените код модели машины в гараже ABRP на любую популярную модель BYD (например, BYD Atto 3 или BYD Seal), сохраните, и Generic появится. После привязки токена код модели можно вернуть обратно.
Только агрегированные показатели машины, без идентификаторов:
ABRP подбирает прогноз на основе модели машины из своей библиотеки + телеметрии: текущий SOC, температура батареи, скорость движения, ветер, профиль дороги, перепады высот. Свой собственный «расчётный остаток хода» BYDMate в ABRP не передаёт — у ABRP есть собственный, более точный расчёт под конкретный маршрут, в котором учитывается погода и рельеф.
Тот же JSON, что уходит в ABRP, можно отправлять POST-запросом на свой адрес: Home Assistant, Node-RED, свой скрипт на VPS. Ничего не хранится в очереди: если сервер недоступен, точка теряется, следующая попытка через минуту.
Настройка
https://. Обычный http:// не пройдёт (Android блокирует незашифрованный трафик, разрешён он только для localhost). Если сервер без сертификата, поставьте перед ним Caddy или nginx с Let's Encrypt, либо туннель вроде Cloudflare Tunnel.Authorization: Bearer <секрет>. По нему сервер отличает вашу машину от чужих запросов.lat, lon, heading.Что приходит
POST <ваш URL>, Content-Type: application/json, одна точка в теле:
{"utc":1756040000,"soc":67,"speed":52.0,"power":18.4,"batt_temp":29.0,"ext_temp":24.5,
"capacity":72.9,"odometer":12345.6,"cabin_temp":22.0,
"tire_pressure_fl":2.5,"tire_pressure_fr":2.5,"tire_pressure_rl":2.4,"tire_pressure_rr":2.4,
"is_charging":0,"is_parked":0,"soh":98.5,"car_model":"byd:leopard3"}
Поля и единицы те же, что в Iternio Telemetry API: utc в секундах, power в кВт (как отдаёт машина), температуры в °C, давление шин в бар, odometer в км. Поля без данных (например, speed на стоянке или kwh_charged вне зарядки) просто отсутствуют. Ритм: раз в секунду в движении, раз в 8 секунд на зарядке, раз в 30 секунд на стоянке. Ответ сервера не разбирается, важен только статус 2xx; после ошибки следующая попытка через 60 секунд.
Вебхук работает независимо от ABRP: можно включить только его, только ABRP или оба.
# Требуется: JDK 17, Android SDK 34
git clone https://github.com/AndyShaman/BYDMate.git
cd BYDMate
./gradlew assembleDebug
Если что-то не работает, действуйте по шагам — в большинстве случаев проблема решается первым же пунктом, а если нет, вы поможете нам быстро её найти.
1. Перезагрузите головное устройство. Зажмите колёсико громкости и держите, пока экран не уйдёт в перезагрузку. Часть функций (например, разделение экрана) включает системный флаг, который применяется только при загрузке — без перезагрузки функция выглядит «сломанной», хотя всё в порядке.
2. Запишите логи. Настройки → раздел «Сервис и данные» → кнопка «Запись логов». Воспроизведите проблему (нажмите то, что не работает), затем нажмите «Остановить запись». Файл bydmate_logs_<дата>.txt появится в папке Download (запись останавливается сама через 2 часа, если забыли).
3. Сохраните каталог fid'ов. Настройки → раздел «Сервис и данные» → кнопка «Сохранить каталог fid'ов». Файл fid-dump-<дата>.txt появится в Download. У разных моделей BYD разные каталоги команд — по этому файлу мы адаптируем приложение под вашу машину.
4. Отправьте нам. Создайте задачу в GitHub Issues и приложите: модель машины и поколение DiLink, версию BYDMate, что нажимали и что ожидали увидеть, файлы из шагов 2–3.
Типовые случаи:
org.jayb.bydapp) by jayb — оригинальное приложение для DiLink, вдохновение для BYDMateПроект некоммерческий, делаю как хобби. Если захочется поблагодарить, реквизиты в SUPPORT.md. Если нет, всё равно спасибо за доверие.
PolyForm Noncommercial 1.0.0 — исходный код открыт, только некоммерческое использование. См. LICENSE для деталей.
Copyright (C) 2026 AndyShaman
English version: README.en.md
Kotlin
100.0%