Реальный расход, GPS-маршруты, автоматизация, AI-аналитика — локально, без облака.
Возможности | Скриншоты | Автоматизация | AI Инсайты | ABRP | Установка | Сборка | Поддержать
Штатный бортовой компьютер BYD занижает расход на 10-30%. BYDMate берёт данные напрямую из BMS (energydata) и показывает реальное потребление. Плюс данные, которых нет в штатной системе: расход на стоянке, баланс ячеек, стоимость поездок, AI-аналитика.
Приложение работает полностью локально на головном устройстве DiLink 5.0 — никакие данные не покидают автомобиль (кроме двух опциональных функций, которые включаются вручную: AI-инсайты через OpenRouter и телеметрия в A Better Route Planner).
| Функция | Описание | |
|---|---|---|
| BMS | Реальный расход | Данные BMS (energydata), не бортовой компьютер. Тренд по скользящему окну 25 км |
| GPS | Трекинг поездок | GPS-маршруты, дистанция, скорость |
| Charge | Зарядки | Автоматическая запись AC/DC, статистика за период и за всё время, ручное добавление и редактирование |
| AI | AI Инсайты | Анализ вождения через LLM (OpenRouter) |
| Idle | Расход на стоянке | Мониторинг idle drain из energydata |
| Bat | Здоровье батареи | Температура, SoH (на Leopard 3), баланс ячеек, 12V |
| Map | Карта маршрута | osmdroid (OpenStreetMap) в деталях поездки |
| Rules | Автоматизация | Правила WHEN→THEN: триггеры по параметрам → команды D+ |
| Widget | Плавающий виджет | 7 полей поверх других приложений: SOC, запас хода, расход + тренд, время, t° салона, t° батареи, 12V |
| Auto | Автозапуск | WorkManager, запускается при включении |
| CSV | Экспорт данных | Экспорт поездок и зарядок в CSV |
Вокруг SOC-кольца расположены четыре значения в стиле плавающего виджета: сверху длительность поездки, одометр и температура в салоне; снизу пробег текущей поездки, расчётный запас хода и расход текущей поездки со стрелкой тренда. Цвета и логика тренда такие же, как в плавающем виджете, поэтому информация читается одинаково и на главном экране, и поверх других приложений.
Ниже кольца: AI-инсайт, малая карточка здоровья батареи (SoH на Leopard 3, температура, 12V), расход на стоянке, последние поездки, фильтр периода.
Анализ эффективности вождения от LLM — расход, тренды, батарея, рекомендации
Температура, SoH (на Leopard 3), 12V аккумулятор, баланс ячеек, напряжение
Аккордеон Месяц > День > Поездка с фильтрами и цветовой индикацией расхода
Правила КОГДА→ТОГДА, редактор условий и действий, настройки срабатывания
Батарея, тарифы, валюта, AI-настройки (OpenRouter API), экспорт данных
Вкладка Автоматизация позволяет создавать правила для автоматического управления автомобилем через D+ API.
КОГДА условие выполняется → ТОГДА выполнить команду.
Примеры:
- SOC < 20% → включить внутреннюю циркуляцию
- Скорость > 0 → закрыть шторку
- Температура за бортом < 0 → включить подогрев зеркал
| Описание | |
|---|---|
| 25 триггеров | SOC, скорость, температура, двери, окна, давление шин, режим езды, точки-геозоны, время суток и др. |
| 41 команда | Окна (включая отдельные — водителя и пассажира), климат, свет, замки, люк, зеркала — всё через D+ API |
| 8 видов действий | D+ команда, тихое/звуковое уведомление, запуск приложения, звонок, навигация, URL, Яндекс.Музыка |
| Edge trigger | Срабатывает только при переходе false→true (не повторяется каждые 3 сек) |
| Cooldown | Настраиваемая пауза между срабатываниями |
| Overlay-подтверждение | Всплывающее окно «Отмена / Выполнить» перед действием. Таймаут 15 с → автоотмена |
| Безопасность | Окна не открываются на скорости > 80 км/ч, CAN/SHELL команды заблокированы |
| Журнал | Лог всех срабатываний с результатами |
| Шаблоны | 6 готовых правил для быстрого старта |
- AND — все условия должны выполняться
- OR — достаточно одного условия
- Только на P — правило срабатывает только когда авто на паркинге
Компактный overlay 260×108 dp поверх других приложений — видно на карте, в медиа, в BYD-приложениях.
Семь полей в 3 строки. Цвета: иконки серые, значения белые. Рамка и SOC% подсвечиваются цветом статуса (SOC или 12V — что хуже).
Верхняя строка (мелким, 13sp):
- ⏱ Длительность текущей поездки —
N минилиX ч Y мин(напр.47 мин,1 ч 12 мин). Старт — момент включения зажигания, конец — выключение. Простои с включённой машиной (стоишь с кондиционером, пассажир вышел купить воды, светофор) входят в поездку — пока электрика жива, счётчик не сбрасывается - 🚗 Температура в салоне — °C, с DiPlus
Центральная строка (крупно, главные значения):
- SOC % (18sp bold, цветной) — заряд тяговой батареи. Зелёный > 50%, жёлтый 20–50%, красный < 20%
- ~N км (28sp белым) — расчётный запас хода:
SOC × ёмкость батареи ÷ baseline-расход × 100. Тильда подчёркивает что это оценка, не показания БК. Подробнее про то, как считается baseline-расход, ниже в разделе «Запас хода» - X.X ↓ (18sp, цветной по тренду) — расход текущей поездки, кВт·ч/100км, со стрелкой тренда (см. ниже)
Нижняя строка (мелким, 13sp):
- 🔋 Температура батареи — °C, с DiPlus
- ⚡ 12V — напряжение бортовой сети, В. Норма 12.5–14.7 В, < 12.0 В = жёлтый, < 11.7 В = красный
Цифра справа — расход текущей поездки в кВт·ч/100км. Считается как энергия, потраченная с момента включения зажигания, делённая на пройденные с того же момента километры. По мере движения цифра сходится к тому значению, которое в итоге запишется в историю поездок: что видно в виджете в момент остановки, то и попадёт в карточку поездки.
Первые 2 километра виджет плавно переходит со среднего расхода прошлой поездки на расход текущей: до 300 м показывает прошлое значение, с 300 м до 2 км линейно подмешивает текущее, после 2 км показывает только текущее. Так не пугают резкие 50–60 кВт·ч/100км из холодного старта и разгона: пока поездка короткая, за основу берётся уже устоявшийся средний расход прошлой поездки, и только когда дистанция становится представительной, цифра уходит на собственный расход.
На стоянке (зажигание выключено) показывается средний расход прошлой завершённой поездки — то же значение, что было видно в её последний момент.
Запас хода ~N км считается по смеси: 50% веса берётся от последней завершённой поездки, 30% от предпоследней и 20% от той, что была до неё (короткие поездки до 3 км в расчёт не идут — это не репрезентативный пробег). Когда едешь длинную дорогу, к этой смеси добавляется ещё расход за последние 10 км текущей поездки: его доля растёт от нуля на первых трёх километрах до половины к 25 километрам. Так прогноз быстро подхватывает смену стиля (городской хвост перед трассой, обратно с трассы в город), но не дёргается на коротких заездах и стоянках с климатом.
Стрелка тренда появляется после 2 км пробега и сравнивает скользящее 25-километровое среднее с твоим обычным стилем (среднее по последним 10 поездкам):
- ↓ зелёная — едешь экономнее обычного
- → белая (стрелка прямая) — в пределах обычного
- ↑ жёлтая — расход выше обычного
Стрелка не дёргается от каждой остановки на светофоре — есть небольшая инерция: чтобы стрелка сменила цвет, расход должен заметно отличаться от обычного и держаться так минимум минуту.
Что такое «поездка» для этой цифры. Один цикл зажигания: включил → выключил. Стоянка с включённым кондиционером внутри поездки учитывается естественно — лишние кВт·ч попадают в общий знаменатель. Короткие блипы (светофор, переподключение) не раскалывают поездку на две. Если DiLink прибьёт приложение посреди трассы — после рестарта счёт продолжается с реального момента включения зажигания, а не с нуля.
- Обычный тап — открыть BYDMate
- Долгий тап (1.5 сек) — скрыть до следующего открытия BYDMate
- Перетащить в корзину — выключить совсем
- Включение, прозрачность, сброс позиции — в Настройки → Плавающий виджет
Вкладка Зарядки автоматически ведёт журнал реальных пополнений заряда: список зарядок по месяцам, статистика за период и за всё время, фильтры AC и DC. Не каждое подключение пистолета становится записью: запись создаётся только если SoC реально вырос. Если кто-то ткнул пистолет и вынул через минуту, в журнал ничего не попадёт.
Запись пишется, если за время сессии у машины выросла либо ёмкость батареи, либо SoC. BYDMate пробует три источника данных по очереди и берёт первое пригодное значение:
- Прирост ёмкости в кВт·ч, если бортовая система сообщила обновлённое значение.
- Прирост SoC за активную сессию, переведённый в кВт·ч по текущей ёмкости батареи.
- Грубая оценка по дельте SoC от полной номинальной ёмкости, если первые два варианта пустые.
Если BYDMate работает в момент зарядки, запись появляется сразу. Если подключение случилось до запуска приложения или машина уехала в глубокий сон, BYDMate догоняет запись на следующем старте, как только увидит, что SoC прыгнул вверх по сравнению с тем, что было до зарядки. Поэтому даже offline-зарядки в гараже попадают в журнал.
Тип зарядки определяется по двум сигналам, по приоритету:
- Тип разъёма от бортовой системы: gun-state 2 = AC, 3 или 4 = DC. На некоторых моделях BYD значение приходит не всегда, тогда работает следующий пункт.
- Средняя мощность сессии: больше 15 кВт = DC, иначе AC. AC-зарядка физически не выдаёт больше 11 кВт, DC-станции стартуют от 22 кВт (CCS slow), поэтому порог 15 кВт уверенно разделяет два режима.
На вкладке Зарядки три фильтра: «Все», «AC», «DC».
Если запись не появилась автоматически или цифры выглядят странно:
- Кнопка
+ зарядкав шапке вкладки: добавить сессию вручную с указанием даты, длительности, кВт·ч, тарифа. - Долгое нажатие на запись: открывается меню «Изменить» / «Удалить». В режиме редактирования можно поправить любое поле уже сохранённой зарядки.
Функция в активном тестировании. На Leopard 3 пишется стабильно. На других моделях BYD автоматика может сработать неточно: например, бортовая система не сообщит мощность или тип разъёма, тогда AC и DC может определиться неправильно. В таких случаях правьте записи вручную и при возможности присылайте логи в Issues.
BYDMate поддерживает две модели поставки данных — переключается в Настройки → Источник данных поездок или на шаге мастера первого запуска.
| Режим | Для каких машин | Что читается |
|---|---|---|
| BYD energydata | Leopard 3 (Fangchengbao Bao 3) и другие модели со встроенной BMS-базой energydata |
SQLite BYD: точный расход (BMS), пробег, длительность, заряды |
| DiPlus TripInfo | Song и другие модели без встроенной energydata | База DiPlus: список поездок, SOC start/end, средняя скорость |
Как выбрать: если после 2–3 поездок на машине список «Поездки» пустой — переключите режим. На Leopard 3 нужен energydata (точнее), на Song и аналогах — TripInfo (единственный доступный источник).
В режиме DiPlus TripInfo расход считается по разнице SOC — он на ~1 кВт·ч/100км грубее, чем BMS, но это компенсируется тем, что других данных у машины нет.
SoH (State of Health) — это процент «здоровья» тяговой батареи, который рассчитывает сама бортовая система автомобиля по своим внутренним алгоритмам.
На BYD Leopard 3 (Fangchengbao Bao 3) BYDMate берёт это значение напрямую из бортовой системы и показывает в карточке «Здоровье батареи». Это реальный SoH от машины, а не оценка по разнице SoC: BYDMate просто читает то, что пишет себе сама машина.
На других моделях BYD доступ к этому значению пока не подтверждён, поэтому SoH там не отображается. Остальные показатели карточки (температура батареи, 12V, баланс ячеек, минимальное и максимальное напряжение) работают на всех моделях, у которых есть DiPlus.
Если в вашей машине SoH доступен через DiPlus и вы хотите помочь добавить поддержку, заведите Issue с указанием модели и года выпуска.
SoH и автоматическая запись зарядок на Leopard 3 работают через дополнительный режим «Системные данные», который читает значения от бортовой системы автомобиля. Включается один раз:
- Откройте Настройки и включите переключатель «Системные данные (экспериментально)».
- DiLink покажет системный диалог разрешения ADB-отладки с отпечатком ключа. Нажмите «Allow» или «Разрешить», поставьте галочку «Always allow from this computer», чтобы DiLink не спрашивал заново при каждом старте приложения.
- После этого SoH появится в карточке «Здоровье батареи», а зарядки начнут записываться автоматически с реальными значениями кВт·ч.
Если вы не включите этот режим, остальные функции BYDMate (поездки, расход, плавающий виджет, автоматизация) работают как обычно. Только SoH и автоматическая запись зарядок не появятся.
Режим помечен «экспериментально», потому что протестирован на Leopard 3. На других моделях BYD доступ к этим данным не подтверждён.
BYDMate разрабатывается и тестируется на BYD Leopard 3 (Fangchengbao Bao 3). На других моделях BYD большинство функций тоже работает, но есть отличия. Перед первым запуском проверьте:
- Источник данных поездок: для моделей без встроенной BMS-базы energydata (Song, Yuan и аналоги) переключитесь на режим DiPlus TripInfo в Настройках или в мастере первого запуска. См. секцию «Источник данных поездок» выше.
- Ёмкость батареи: по умолчанию 72.9 кВт·ч под Leopard 3. Зайдите в Настройки → Батарея и поставьте свою ёмкость. Например, Atto 3 = 60.5 кВт·ч, Seal AWD = 82.5 кВт·ч, Han EV = 85.4 кВт·ч. Без этого расчёт запаса хода и стоимости поездок будет неточным.
- SoH: показывается только на Leopard 3. На других моделях карточка «Здоровье батареи» работает без поля SoH.
- Зарядки: алгоритм AC и DC проектировался под Leopard 3. На других моделях запись может появиться с задержкой или с неточной мощностью, особенно для DC. Используйте ручное добавление и редактирование, если автоматика промахнулась.
- Автоматизация и плавающий виджет: работают одинаково на любой модели, потому что используют DiPlus API.
Если что-то не работает или показывает странное, заведите Issue с указанием модели машины и версии прошивки DiLink. Нам нужны такие отчёты, чтобы расширять поддержку.
| Параметр | Значение |
|---|---|
| Платформа | 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
DiPlus API (localhost:8988) → TrackingService ↗ ↓
Android LocationManager → TripTracker (GPS) ↗ AI (OpenRouter)
DiPlus sendCmd API ← AutomationEngine ← Rules (Room DB)
| Данные | Источник |
|---|---|
| Расход, пробег, длительность | BYD energydata (BMS) |
| SOC, скорость, температура | DiPlus API (getDiPars) |
| Напряжение ячеек, 12V | DiPlus API |
| GPS координаты | Android LocationManager |
| AI-аналитика | OpenRouter API (опционально) |
| Управление авто | DiPlus sendCmd API (автоматизация) |
Без OBD-адаптера — BYD блокирует сторонние OBD-устройства. BYDMate использует тот же API, что и встроенные приложения BYD.
Без ADB BYDMate работает в базовом режиме. Включённая ADB-отладка нужна для следующих фич:
- Здоровье батареи (SoH) — точное значение из BMS вместо прочерка.
- Автоматический журнал зарядок — приложение само фиксирует начало и конец сессии. Без ADB зарядки можно добавлять только вручную.
- Автоматизация — триггеры и действия (управление стёклами, климатом, светом и т.д.). Без ADB вкладка «Автоматизация» не работает.
Без ADB остаются доступны: трекинг поездок и пробега, расход энергии, виджет, AI-инсайты.
Чтобы включить эти фичи, после установки 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-гайд (русский) — приложен в репозитории.
На головном устройстве должен быть установлен DiPlus (D+) — приложение-мост для доступа к данным автомобиля.
Самый простой способ (без ADB):
- Скачайте APK по ссылке выше
- Перенесите на USB-флешку (или скачайте напрямую через браузер DiLink)
- Откройте файл через файловый менеджер DiLink и установите
- Разрешите установку из неизвестных источников, если потребуется
Альтернативно через ADB (если активирован на шаге 1):
adb connect <IP-адрес DiLink>:5555
adb install DiPlus.apkIP-адрес DiLink можно найти в настройках Wi-Fi на головном устройстве.
- Скачайте BYDMate APK из Releases
- Перенесите на DiLink: через USB-флешку, по сети, или через ADB (
adb install BYDMate.apk) - Разрешите установку из неизвестных источников, если потребуется
- Откройте BYDMate — появится мастер настройки
- Выдайте разрешения на локацию и хранилище (для GPS и чтения energydata)
- Выберите источник данных поездок —
BYD energydataдля Leopard 3,DiPlus TripInfoдля Song и других моделей без встроенной BMS-базы (см. секцию выше) - Укажите тарифы на электроэнергию (для расчёта стоимости поездок)
Важно: отключите "Disable background Apps" для BYDMate, иначе DiLink будет убивать приложение:
DiLink > Settings > General > Disable background Apps > BYDMate = OFF
В Настройках можно изменить:
- Ёмкость батареи — по умолчанию 72.9 кВт·ч (Leopard 3)
- Тарифы — домашний (AC) и быстрая зарядка (DC), валюта
- Пороги расхода — границы для цветовой индикации (зелёный/жёлтый/красный)
BYDMate может анализировать вашу статистику вождения с помощью AI (LLM). Это опциональная функция — приложение полностью работает и без неё.
- Зарегистрируйтесь на OpenRouter (бесплатно)
- В личном кабинете OpenRouter создайте API Key (раздел Keys)
- В BYDMate откройте Настройки → раздел AI Инсайты
- Вставьте API-ключ в поле "OpenRouter API Key"
- Нажмите "Выбрать модель" — откроется список доступных LLM (есть бесплатные)
- Нажмите "Сохранить и получить инсайт"
AI получает обезличенную статистику за 7 и 30 дней и возвращает:
- Факты — метрики, рассчитанные из реальных данных (расход с трендом, % коротких поездок, idle drain)
- Инсайты — корреляции, аномалии и поведенческие рекомендации от LLM
Запрос отправляется раз в день. Результат кэшируется локально. Никакие персональные данные (GPS, маршруты) не передаются — только агрегированная статистика.
BYDMate может отправлять живые показатели машины в A Better Route Planner (ABRP) через официальный Iternio Telemetry API. ABRP использует эти данные, чтобы план маршрута и оценка остатка хода обновлялись по реальному состоянию батареи, а не по средним табличным значениям.
Функция опциональная, выключена по умолчанию и включается вручную в Настройках.
ABRP использует «Generic Live Data Token» — отдельный токен на каждую машину в гараже:
- Откройте abetterrouteplanner.com и войдите в аккаунт.
- Перейдите в гараж и откройте машину, на которой хотите видеть live-данные. Машина должна быть сохранена в гараж, иначе токен не появится.
- Шестерёнка «Настройки автомобиля» → раздел «Данные» → кнопка «Подключить актуальные данные».
- В списке провайдеров выберите «Generic» и нажмите «Привязать». Появится длинная строка-токен — это и есть
User Token.
Если в списке нет «Generic»: смените код модели машины в гараже ABRP на любую популярную модель BYD (например, BYD Atto 3 или BYD Seal), сохраните, и Generic появится. После привязки токена код модели можно вернуть обратно.
- Настройки → раздел «ABRP — телеметрия».
- Вставьте полученный токен в поле «Токен живых данных из ABRP».
- Опционально: код модели ABRP (если знаете точный код своей машины из библиотеки ABRP) и интервал отправки (5–120 сек, по умолчанию 12 сек — рекомендуемое значение Iternio).
- Нажмите «Сохранить ABRP», затем включите переключатель «Живые данные → A Better Route Planner». Без сохранённого токена переключатель остаётся неактивным.
- ABRP-приложение на DiLink (или браузер на телефоне) теперь будет видеть актуальный SOC, мощность, температуры, заряд.
Только агрегированные показатели машины, без идентификаторов:
- SOC — текущий процент заряда тяговой батареи
- Speed — скорость, км/ч
- Power — текущая мощность тяги (отрицательная при зарядке, как требует Iternio)
- Battery / cabin / exterior temp — температуры батареи, салона и за бортом
- Capacity — номинальная ёмкость батареи
- Odometer — пробег, км
- Tire pressures — давление в шинах (4 колеса)
- is_charging / is_parked — флаги состояния
- is_dcfc / kwh_charged — тип зарядной станции (DC vs AC) и количество кВт·ч в текущей сессии (только если включён режим «Системные данные» — иначе эти поля просто отсутствуют)
- soh — реальный SoH батареи (Leopard 3, при включённом режиме «Системные данные»)
- GPS-координаты не передаются. ABRP запускается как отдельное приложение Android прямо на DiLink и читает геопозицию из ОС сам. Дублировать координаты через сторонний канал не нужно — это лишь утечка позиции на чужой сервер.
- Не отправляются: VIN, идентификатор устройства, история поездок, маршруты, пользовательские настройки.
ABRP подбирает прогноз на основе модели машины из своей библиотеки + телеметрии: текущий SOC, температура батареи, скорость движения, ветер, профиль дороги, перепады высот. Свой собственный «расчётный остаток хода» BYDMate в ABRP не передаёт — у ABRP есть собственный, более точный расчёт под конкретный маршрут, в котором учитывается погода и рельеф.
# Требуется: JDK 17, Android SDK 34
git clone https://github.com/AndyShaman/BYDMate.git
cd BYDMate
./gradlew assembleDebug- Kotlin 2.1 + Jetpack Compose + Material 3
- Room (SQLite) + Hilt (DI) + OkHttp
- osmdroid (OpenStreetMap) + Coroutines/Flow
- Min SDK 29 / Target SDK 29 / Compile SDK 34
- BYD Trip Info (
org.jayb.bydapp) by jayb — оригинальное приложение для DiLink, вдохновение для BYDMate - DiPlus (迪加) by Van Design — приложение-мост к данным автомобиля
Проект некоммерческий, делаю как хобби. Если захочется поблагодарить, реквизиты в SUPPORT.md. Если нет, всё равно спасибо за доверие.
GPLv3 с дополнительными условиями атрибуции. См. LICENSE для деталей.
Copyright (C) 2026 AndyShaman
English version
BYDMate is an Android app for BYD vehicles with DiLink 5.0 head unit (Leopard 3 / Fangchengbao Bao 3). It logs trips, GPS routes, real energy consumption from BMS, and provides AI-powered driving analytics — all locally on the head unit.
The BYD onboard computer underestimates consumption by 10-30%. BYDMate reads real consumption data from the BMS (energydata SQLite database) and shows information not available in the stock system: idle drain, cell balance, trip costs, AI driving insights.
- Real consumption from BMS energydata (not onboard estimates). Big number = live current-trip average that converges to the recorded trip; trend arrow uses a rolling 25 km window
- Dashboard with widget-style stats around the SOC ring: trip duration, odometer, cabin temp on top; trip distance, estimated range (Rivian-style 50/30/20 weighted blend of last 3 trips, mixed with current-session sliding 10 km window), live trip consumption + trend arrow (still over a rolling 25 km window) on bottom. Same colors and trend logic as the floating widget
- Trip logging with GPS routes, distance, speed
- Charges journal with automatic AC / DC detection, period and lifetime stats, manual add and edit
- AI Insights — LLM-powered driving analysis via OpenRouter (optional)
- Idle drain monitoring from BMS data
- Battery health — temperature, real SoH on Leopard 3 (read from the car), cell balance, 12V voltage
- Trip map with speed-colored routes (osmdroid, no Google Maps)
- Automation — WHEN→THEN rules: triggers on 25 parameters → 41 D+ commands (windows incl. driver/passenger, climate, lights, locks, mirrors) + 8 action kinds (notification, app launch, call, navigate, URL, Yandex Music). Overlay confirmation with 15 s auto-cancel
- Floating widget — draggable 7-field overlay: SOC, range (Rivian-style 50/30/20 weighted blend of last 3 trips, mixed with current-session sliding 10 km window), live trip consumption + trend arrow (still over a rolling 25 km window) vs your 10-trip baseline, ignition-bounded trip time, cabin/battery temp, 12V. Session survives app kill via SharedPreferences anchor
- Auto-start via WorkManager on boot
- CSV export for trips and charges
BYDMate reads vehicle data from two sources:
- BYD energydata (built-in BMS SQLite database) — accurate per-trip consumption
- DiPlus app's local API (
localhost:8988) — live SOC, speed, temperatures, cell voltages
No OBD adapter needed. No cloud/server — everything stays on the head unit (except optional AI via OpenRouter).
BYDMate supports two trip data backends, switchable in Settings → Trip data source or during the first-run wizard:
- BYD energydata — for Leopard 3 (Fangchengbao Bao 3) and other models that ship the built-in BMS database. Most accurate per-trip consumption.
- DiPlus TripInfo — for Song and other models without built-in energydata. Reads trips from DiPlus database; consumption is computed from SOC delta (~1 kWh/100km coarser than BMS).
If the Trips list stays empty after 2–3 drives, switch the mode.
The Charges tab automatically logs every real top-up. A record is created only when SoC actually rose during the session, so brief plug-ins without charging do not pollute the journal. The detector tries three sources in order: capacity delta in kWh, then SoC delta over the active session converted to kWh by current capacity, then a coarse estimate from the SoC delta against nominal capacity. AC / DC is decided first by gun state (2 = AC, 3 / 4 = DC), and falls back to average session power (≥ 15 kW = DC) when the gun state is not reported. Use the + зарядка button at the top of the tab to add a session manually; long-press any record to edit or delete it. The feature is in active testing: stable on Leopard 3, may need manual correction on other BYD models.
On Leopard 3 BYDMate reads the real SoH value computed by the car itself and shows it in the Battery health card. On other BYD models the SoH field is hidden until access is confirmed; everything else (temperature, cell balance, 12V) works as usual.
To get SoH, automatic charge entries and Automation tab, open Settings and enable «Системные данные (экспериментально)». DiLink will show a one-time system dialog asking to allow ADB debugging. Tap Allow (and check «Always allow from this computer» so the dialog doesn't appear at every launch). Without this toggle, only the basic features work (trips, consumption, widget, AI insights); SoH, automatic charges and Automation stay disabled.
BYDMate is developed and tested on BYD Leopard 3 (Fangchengbao Bao 3). On other BYD models most features still work, but a few things differ:
- Switch Trip data source to DiPlus TripInfo in Settings (energydata is missing on Song, Yuan, etc.)
- Set the correct battery capacity in Settings → Battery (Leopard 3 default is 72.9 kWh; Atto 3 = 60.5, Seal AWD = 82.5, Han EV = 85.4)
- SoH is shown on Leopard 3 only
- Charges auto-detection is tuned for Leopard 3; expect occasional misses or wrong AC / DC on other models — use manual add / edit
- Automation and floating widget work the same on any model with DiPlus
If something does not work, please open an Issue with the car model and DiLink firmware version.
- Enable ADB on your head unit. Without ADB, BYDMate runs in basic mode — trips, consumption, widget and AI insights work, but SoH, automatic charge logging and the Automation tab require ADB. On DiLink 3/4 you can enable it yourself; on DiLink 5.0 ADB is locked and must be unlocked remotely from China via TaoBao sellers (~40–80 ¥). See PDF guide (RU) included in the repo.
- Install DiPlus (D+) on your DiLink head unit — copy the APK via USB stick and open it in the file manager (no ADB needed).
- Download BYDMate APK from Releases
- Transfer to DiLink via USB and install
- Grant location + storage permissions
- Disable "Disable background Apps" for BYDMate in DiLink Settings
- Get an API key from OpenRouter (free models available)
- Enter the key in BYDMate Settings and select a model
- Click "Save and get insight"
AI analyzes 7-day and 30-day driving stats. Key metrics (consumption trends, short trips ratio, idle drain) are calculated deterministically. LLM provides correlations, anomalies, and behavioral advice in Russian.
# Requirements: JDK 17, Android SDK 34
git clone https://github.com/AndyShaman/BYDMate.git
cd BYDMate
./gradlew assembleDebug- BYD Trip Info by jayb — original DiLink trip app, inspiration for BYDMate
- DiPlus by Van Design — local vehicle data API bridge
GPLv3 with attribution. See LICENSE.








