Releases: scroodge/BYDMate-own
Release list
VoltFlow Mate v0.5.5
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
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
[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
Added
- Survival daemon status row + "Install / run daemon" button in Advanced Features. Previously the shell-uid
CommandDaemon+ watchdog only got (re)launched automatically onTrackingServicestart, 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
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_onlysnapshots: 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
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
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_tswatermark; 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
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
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
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.
DiParsClientnow sanitizes vehicle signals, filtering invalid/out-of-range values before they reach the payload for more reliable analytics.CommandDaemonreads the new BMS values alongside existing telemetry.
Debug build — VoltFlow-Mate-v0.4.4.apk.