From 5c1ba751c95793b3ef6e99938e7adb0f38ea6b20 Mon Sep 17 00:00:00 2001 From: Repinoid Date: Sun, 28 Jun 2026 19:13:03 +0400 Subject: [PATCH] =?UTF-8?q?bump:=20v0.2.3-dev=20=D0=BD=D0=B0=20=D0=BC?= =?UTF-8?q?=D0=BE=D1=80=D0=B4=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/history/test-results-2026-06-28.md | 48 ++++++++++++++++++++ doc/sonnet-apk-cache-questions-2026-06-28.md | 28 ++++++++++++ web/templates/index.html | 2 +- 3 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 doc/history/test-results-2026-06-28.md create mode 100644 doc/sonnet-apk-cache-questions-2026-06-28.md diff --git a/doc/history/test-results-2026-06-28.md b/doc/history/test-results-2026-06-28.md new file mode 100644 index 0000000..1db0317 --- /dev/null +++ b/doc/history/test-results-2026-06-28.md @@ -0,0 +1,48 @@ +# Результаты тестирования протокола ELM327 v1.5 — 28.06.2026 + +## Конфигурация + +- **ELM327:** клон v1.5, протокол A0 (CAN), 12.2V +- **Приложение:** ELM Relay v2 (v0.2.2-dev, пакет ru.elmer.raw) +- **Протокол:** канонический init (ATE0→ATL0→ATS0→ATI→detectClone→ATST96→ATSP0) +- **ECU:** зажигание ON, двигатель OFF + +## Результаты + +### Статика (6 PID по одному, пауза 1с) +- 2/6 успешно (33%) +- Сбои: хвост "12.3V" от ATRV после инита, STOPPED, таймауты +- **Причина:** после init() и hello-команд (ATI, ATDPN, ATRV) в буфере остаются хвосты + +### Динамика (3 цикла × 4 PID, пауза 300мс) +- **12/12 = 100% успешно** ✅ +- RPM: 286-506ms, стабильно +- Дроссель: 294-402ms, стабильно +- ОЖ: 326-506ms, стабильно +- Нагрузка: 294-340ms, стабильно + +### Сравнение с предыдущими тестами (14 июня) + +| Дата | Протокол | Динамика | +|------|----------|----------| +| 14.06 (до фиксов) | AndrOBD init, нет drain, ATAT1 | 0/8 (0%) | +| 14.06 (с drain) | drain_first=true | 8/8 (100%)* | +| 14.06 (без drain) | — | 0/8 (0%) | +| 28.06 (канон) | новый init, ElmActor, SQLite | **12/12 (100%)** | + +*нестабильно — в повторных тестах 3/12 + +## Выводы + +1. **Канонический протокол работает.** Динамика 100% без drain_first — drain встроен в sendCommand. +2. **Проблема статики — хвост после инита.** Нужен drain после hello-команд в RawRelayService. +3. **ElmActor + @Volatile + SQLite-очередь — без нареканий.** +4. **Клон v1.5 стабилен на 6 PID с паузой 300мс.** + +## Дальнейшие шаги + +1. Исправить drain после hello в RawRelayService (ATI/ATDPN/ATRV → drain) +2. Длинный тест: 50+ циклов динамики +3. Тест с заведённым двигателем (RPM > 0) +4. При успехе — перенести фиксы в основное приложение (:app) +5. Смержить opus-fixes в master diff --git a/doc/sonnet-apk-cache-questions-2026-06-28.md b/doc/sonnet-apk-cache-questions-2026-06-28.md new file mode 100644 index 0000000..9288aa8 --- /dev/null +++ b/doc/sonnet-apk-cache-questions-2026-06-28.md @@ -0,0 +1,28 @@ +# Вопросы для Соннета — почему телефон получает старый APK + +Дата: 2026-06-28 + +## Ситуация + +Сервер obdai.ru (Ubuntu 24, nginx, 5.172.178.213). +APK собран через `./gradlew :raw:clean :raw:assembleDebug`, 36/36 tasks fresh. +Проверено: +- `aapt dump badging` → versionCode=6, versionName=0.2.2-dev ✅ +- `curl -sI https://obdai.ru/static/elm-raw-v022.apk` → 200 OK, 3726961 bytes ✅ +- Файл переименован: elm-raw-v022.apk (абсолютно новое имя, не могло быть в кеше) +- Приложение переименовано: app_name = "ELM Relay v2" (strings.xml) +- Страница обновлена: ссылка на /static/elm-raw-v022.apk, текст "Скачать ELM Relay v2" +- nginx reload делался, gunicorn рестартовал + +НО: пользователь с Android-телефона скачивает и получает **v0.1.1-dev**. +Приложение на рабочем столе называется "ELM Relay v2", но внутри показывает v0.1.1-dev. + +## Вопросы + +1. Может ли Android (Google Play Protect / Verify Apps) подменять APK при установке на старую версию из кеша? +2. Может ли nginx кешировать файлы, несмотря на `alias`? Нужен ли `expires -1` или `add_header Cache-Control "no-cache"`? +3. Может ли `curl` и браузер телефона видеть РАЗНЫЕ файлы из-за Cloudflare/CDN/прокси провайдера? Как проверить? +4. Может ли `wget` или `curl` с сервера через внешний IP показать, что отдаётся НЕ тот файл? +5. Может ли Android Download Manager кешировать по имени пакета (ru.elmer.raw), а не по URL? +6. Какие ещё механизмы кеширования APK существуют на стороне Android, которые мы не учли? +7. Как ПРОВЕРИТЬ на сервере, что по HTTP реально отдаётся правильный файл, а не старый — поMD5 или размеру? diff --git a/web/templates/index.html b/web/templates/index.html index a98e6bd..d981047 100644 --- a/web/templates/index.html +++ b/web/templates/index.html @@ -29,7 +29,7 @@ style="color:#00ff88;font-size:18px;font-weight:bold;text-decoration:none;"> ⬇️ Скачать ELM Relay v2 -

v0.2.1-dev • ретранслятор команд

+

v0.2.3-dev • ретранслятор команд