Skip to content

Releases: scroodge/BYDMate-own

VoltFlow Mate v0.5.5

Choose a tag to compare

@scroodge scroodge released this 09 Sep 06:47

What’s new

  • Adds durable daemon telemetry spooling so samples survive offline periods and are imported safely when the app returns.
  • Adds a dynamically sized offline buffer up to 4 GiB, with storage reserve protection, compaction, and cohort-based rollout controls.
  • Makes di+ a first-class onboarding dependency with installation, first-launch, and version readiness checks.
  • Preserves precise fractional SOC across foreground, live-only, and daemon telemetry paths.
  • Unifies charging classification across live snapshots, history, trips, and hourly aggregates.
  • Carries the autoservice charging-gun state through the daemon telemetry path.
  • Adds queue storage accounting, including payload size, age, origin, and compaction metadata.
  • Adds Android CI coverage for unit tests and debug APK builds.

Debug build — VoltFlow-Mate-v0.5.5.apk. Full suite green (testDebugUnitTest assembleDebug).

VoltFlow Mate v0.5.3

Choose a tag to compare

@scroodge scroodge released this 14 Aug 13:16

Highlights

  • Retryable cloud-access failures no longer discard queued telemetry. Invalid payloads are
    still isolated so they cannot block the FIFO queue.
  • di+ 2.0 fractional SOC values are preserved for cloud telemetry instead of being dropped;
    integer-only local consumers retain compatible rounded values.
  • Numeric di+ parsing accepts decimal commas and safely ignores unavailable-parameter
    placeholders.

Debug build — VoltFlow-Mate-v0.5.3.apk. Full suite green (testDebugUnitTest assembleDebug).

VoltFlow Mate v0.5.2

Choose a tag to compare

@scroodge scroodge released this 12 Aug 05:54

[0.5.2] - 2026-08-10

Added

  • Окно живого статуса после парковки без зарядки. Когда демон сам видит переход
    powerState >= 1 → 0, он удерживает wakelock ещё 30 минут, чтобы сразу после
    парковки телеметрия и команды оставались отзывчивыми. Окно одноразовое и не
    продлевается: запуск демона на уже выключенной машине, периодические пробуждения
    или неполный ответ di+ не создают новый расход 12-вольтовой батареи. При следующем
    включении автомобиля бюджет сразу сбрасывается.
  • В компактный parked payload добавлено давление всех четырёх шин, когда di+ его
    предоставляет: на стоянке актуальные значения теперь не теряются из live-снимка.

Changed

  • Документация Di+ сверена с официальным API-каталогом: для параметров явно отмечены
    подтверждённые единицы, state-значения и неизвестные поля вместо предположений.

Fixed

  • Телеметрия снова уходит в облако (регрессия с 7 августа). Запрос
    SettingsDao.setLastKnownSoc использовал форму INSERT ... ON CONFLICT ... DO UPDATE,
    которая требует SQLite 3.24+. Головное устройство DiLink рапортует Android 10, но несёт
    более старую SQLite, чем сток, и не компилирует этот синтаксис:
    near "ON": syntax error (code 1 SQLITE_ERROR). Исключение возникало на каждом тике
    опроса 1 Гц и уводило итерацию в общий catch — вместе с ней пропадали и выгрузка в
    облако, и маяк живости. Демон видел протухший маяк и забирал поток себе, поэтому в облаке
    вместо 1 Гц оставались только редкие parked-сэмплы демона (~90 строк в сутки вместо ~10000),
    а ~170 км пробега не записались вовсе. Запрос переведён на INSERT OR REPLACE —
    эквивалентно для таблицы settings вида (key, value) и совместимо со старой SQLite.
  • Сбой записи SOC больше не обрывает весь цикл опроса. Сохранение baseline SOC
    (saveLastKnownSoc) стоит выше по потоку, чем отправка телеметрии в облако, и любое
    исключение из Room/SQL уводило всю итерацию в общий catch — вместе с ней пропадали
    и облачная выгрузка, и маяк живости приложения. Теперь запись SOC обёрнута в
    собственный try/catch: потеря одной строки SOC не стоит потери потока 1 Гц,
    а следующий тик повторит попытку.
  • Маяк живости пишется до enqueue, а не после. Маяк утверждает «цикл опроса
    приложения ещё крутится», и это верно независимо от судьбы конкретной отправки.
    При старом порядке одно исключение из очереди или настроек гасило маяк, демон видел
    протухшую метку и молча забирал поток телеметрии себе — на облаке это выглядело как
    падение с 1 Гц до редких parked-сэмплов демона.

VoltFlow Mate v0.5.1.1

Choose a tag to compare

@scroodge scroodge released this 04 Aug 13:43

Added

  • Survival daemon status row + "Install / run daemon" button in Advanced Features. Previously the shell-uid CommandDaemon + watchdog only got (re)launched automatically on TrackingService start, with no visible status and no way to retrigger it manually — e.g. right after enabling wireless ADB for the first time, or after the daemon died and never came back. The new status row shows live state (Running / Running without watchdog / Not running), and the button runs the same connect → deploy → verify → (re)launch sequence the automatic supervisor uses on service start. Both paths now share one implementation (AdbOnDeviceClient.ensureCommandDaemonRunning) instead of two copies of the same logic.

Debug build — VoltFlow-Mate-v0.5.1.1.apk. Full suite green (testDebugUnitTest assembleDebug).

VoltFlow Mate v0.5.0

Choose a tag to compare

@scroodge scroodge released this 20 Jul 12:52

Major update: live status, parked/off reliability, and efficient Cloud Sync

  • Live status in 2–5 seconds. While the VoltFlow vehicle page is open, Mate sends a compact
    status snapshot every 3 seconds, so SOC, charge power, gear, motion, and charge-gun state appear
    without the former 15–60 second wait. The grant expires automatically when the page closes or
    connectivity is lost.
  • Immediate charging transitions. Charging start, stop, and charge-gun disconnect now refresh
    the live status immediately, without waiting for the next batch flush or interrupting the normal
    60-second charging-history cadence.
  • Better parked/off behavior. The shell daemon immediately reports charge-gun changes after
    BYD stops the app and supports the fast live-view mode without creating excess history rows.
    Command polling is isolated from the status loop, so network calls no longer delay status updates.
  • Less data, same useful status. Unchanged parked state uses live_only snapshots: VoltFlow
    refreshes the current status without unnecessary history, hourly, or trip writes. A full sample
    is still forced at least every 15 minutes. Payload values are normalized to useful precision and
    GPS is corridor-filtered while preserving turns and key points.
  • Efficient hourly telemetry. The app accumulates retry-safe hourly aggregates locally and
    sends them with telemetry batches, reducing cloud work while retaining SOC, power, temperature,
    regeneration, and traction-energy accuracy.
  • Future-ready trip summaries. Mate now safely retains an in-progress trip locally across an
    app restart and includes its summary in batches. Server-side application of those summaries will
    be enabled in a separate compatible VoltFlow update; existing trip history remains unchanged.
  • Added regression coverage for fast status, the parked/off daemon, GPS filtering, local
    accumulators, and database migrations.

This release has been built and tested, but was intentionally not installed on a vehicle via ADB;
post-install telemetry verification has not been performed.

Debug build — VoltFlow-Mate-v0.5.0.apk. Full suite green (testDebugUnitTest assembleDebug).

VoltFlow Mate v0.4.8

Choose a tag to compare

@scroodge scroodge released this 16 Jul 11:20

Fixed

  • Immediately flushes the final telemetry sample for confirmed D → P → power-off transitions before the BYD process is stopped.
  • Preserves the drive latch so a brief P state during manoeuvring does not create a false trip end.

Changed

  • Cloud Sync now enqueues each sample before starting the flush request, preventing the final sample from being deferred until the next vehicle start.

Debug build: VoltFlow-Mate-v0.4.8.apk
Validation: testDebugUnitTest and assembleDebug passed.

VoltFlow Mate v0.4.7

Choose a tag to compare

@scroodge scroodge released this 08 Jul 08:50

Cloud sync of energydata trip summaries — cars that write /storage/emulated/0/energydata/EC_database.db (e.g. Yuan UP 2025 / DiLink 5) now push their imported trip history to VoltFlow without ADB: after each local import, new trips are POSTed to /api/bydmate/trip-summaries (same API key / car name as telemetry).

  • Only runs when the data source is ENERGYDATA — ADB cars with live telemetry don't double-report trips.
  • Batches of ≤300 with a start_ts watermark; lost server acks are retried safely (server upserts on start time).
  • Zero-km idle records are kept local only; Wi-Fi-only mode is respected.
  • Requires VoltFlow linked (API key) and a car name — otherwise nothing is transmitted, same hard gate as telemetry.

No SOC / live data in these trips — live cockpit still needs ADB.

Debug build — VoltFlow-Mate-v0.4.7.apk. 14 new unit tests; full suite green (testDebugUnitTest assembleDebug).

VoltFlow Mate v0.4.6

Choose a tag to compare

@scroodge scroodge released this 06 Jul 13:10

Main screen: new «Диагностика BYD» button in the VoltFlow Sync card (next to «Отправить тест») — the storage diagnostics report is now reachable from the gateway screen, where the Settings tab is unavailable. Same report as Settings → Данные: permissions, presence of /storage/emulated/0/energydata and its .db files, EnergyConsumption schema/rows, local DB state, with copy-to-clipboard. Localized ru/en/be. Works without ADB — for remotely checking whether a given BYD model writes the energydata database.

Verified on car (Yuan UP, DiLink 5) before release.

Debug build — VoltFlow-Mate-v0.4.6.apk.

VoltFlow Mate v0.4.5

Choose a tag to compare

@scroodge scroodge released this 05 Jul 16:20

Settings: new «Диагностика хранилища BYD» button (Настройки → Данные) — one-tap storage report: permissions, presence of /storage/emulated/0/energydata and its .db files, EnergyConsumption table schema and row counts, local DB state. Selectable output with «Копировать» to clipboard.

Works without ADB (plain File API) — made for remotely checking whether a given BYD model writes the energydata database (Yuan UP does not; Leopard 3 does).

Debug build — VoltFlow-Mate-v0.4.5.apk.

VoltFlow Mate v0.4.4

Choose a tag to compare

@scroodge scroodge released this 01 Jul 09:33

Telemetry: added Battery Management System (BMS) metrics to the cloud payload — kwh_charged and soh_percent (state of health) are now read from the vehicle and uploaded, improving charging analytics.

  • DiParsClient now sanitizes vehicle signals, filtering invalid/out-of-range values before they reach the payload for more reliable analytics.
  • CommandDaemon reads the new BMS values alongside existing telemetry.

Debug build — VoltFlow-Mate-v0.4.4.apk.