From 6c6bed1f143c03cc5b4f6d394b7df1467d18549d Mon Sep 17 00:00:00 2001 From: Repinoid Date: Wed, 10 Jun 2026 20:36:26 +0400 Subject: [PATCH] =?UTF-8?q?bump=20v0.94.0-dev,=20docs:=20=D0=B8=D1=81?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=B8=D1=8F=20speed-test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 2 +- doc/history/2026-06-10.md | 68 ++++++++++++++++++++++++++++++++++++++- web/templates/index.html | 4 +-- 3 files changed, 70 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ae954d3..4fdd7ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ # elmAI — Changelog / Полное описание проекта > Файл для нового агента: прочитай — и ты в курсе всего. -> Актуально: v0.93.0-dev, 10 июня 2026 +> Актуально: v0.94.0-dev, 10 июня 2026 --- diff --git a/doc/history/2026-06-10.md b/doc/history/2026-06-10.md index 5208c53..7969477 100644 --- a/doc/history/2026-06-10.md +++ b/doc/history/2026-06-10.md @@ -1,4 +1,4 @@ -# 2026-06-10 — Speed-test ELM327, адаптивный интервал, деплой v0.93.0-dev +# 2026-06-10 — Speed-test ELM327, адаптивный интервал, валидация, деплой v0.94.0-dev ## Проблема @@ -139,3 +139,69 @@ interval = max(250, avg_response_time × num_pids × 1.5) | `android/.../DynamicCollector.kt` | intervalMs параметр (уже есть) | | `android/app/build.gradle.kts` | versionName = "0.93.0-dev" | | `web/templates/index.html` | v0.93.0-dev | + +--- + +## 3. Валидация speed-test (v0.94.0-dev) + +### Проблема +Если ELM327 плохо вставлен в OBD-разъём (контакт болтается), замеры скорости — мусор: часть команд падает с `(err)`, время прыгает от 10ms до 900ms. Сохранять такой профиль нельзя. + +### Решение +`ElmChecker.kt` — `measureResponseTime()` возвращает `SpeedTestResult`: + +```kotlin +data class SpeedTestResult( + val perPidAvg: List, + val batchTime: Int, + val reliable: Boolean, + val message: String +) +``` + +**Критерии отбраковки (reliable=false):** +1. Любой замер отклоняется от среднего по своему PID >50% +2. Любая команда вернула `(err)` или пустой ответ +3. Все замеры <20ms (ELM не отвечает, мусор) + +При `reliable=false` — профиль **не сохраняется**, интервал 250ms по умолчанию. + +### Quick-check при каждом connect +`ElmChecker.kt` — добавлен `quickCheck(): Int?`: + +``` +При каждом клике на светофор ELM: +1. Загрузить профиль с сервера +2. Послать 010C (RPM), замерить время +3. Сравнить с профилем: + - расхождение <50% → "✅ ELM стабилен: ~85ms (профиль 256ms)" + - расхождение >50% → "⚠️ Скорость ELM изменилась: было 256ms, сейчас ~510ms" +4. Если профиля нет → полный speed-test (3 PID × 3 раза) +``` + +### Принудительный перетест +Клик на 🔵 ELM → переинициализация → quick-check. Если нужно полностью перемерить — очистить `response_time_ms` в `device_profiles` на сервере. + +--- + +## Итоговая логика + +| Ситуация | При connect | При СТАРТ | +|----------|------------|-----------| +| Новый ELM (нет профиля) | Полный speed-test 3 PID × 3 → сохранить | Интервал из профиля | +| Знакомый ELM, контакт ок | Quick-check: "стабилен" | Интервал из профиля | +| Знакомый ELM, контакт плохой | Quick-check: "изменилась" | Интервал 250ms (дефолт) | +| После переподключения | Quick-check → сверка | Интервал из профиля если ок | + +## Файлы (v0.94.0-dev) + +| Файл | Что изменено | +|------|-------------| +| `android/.../ElmChecker.kt` | `SpeedTestResult`, `quickCheck()`, валидация | +| `android/.../MainActivity.kt` | Speed-test при инициализации, quick-check | +| `android/.../ServerClient.kt` | `getProfileResponseTime()`, `saveProfile()` | +| `api/db.py` | `response_time_ms` колонка, threading lock | +| `api/routes.py` | `PUT /api/v1/elm/profile/` | +| `android/app/build.gradle.kts` | versionName = "0.94.0-dev" | +| `web/templates/index.html` | v0.94.0-dev | +| `doc/history/2026-06-10.md` | Этот файл | diff --git a/web/templates/index.html b/web/templates/index.html index 7e4c198..798a3be 100644 --- a/web/templates/index.html +++ b/web/templates/index.html @@ -13,14 +13,14 @@ elmAI

elmAI

Диагностика авто через ELM327 + ИИ

-

v0.93.0-dev — 7 июня 2026

+

v0.94.0-dev — 7 июня 2026

📱 Скачай приложение на телефон:

⬇️ Скачать elmAI APK -

v0.93.0-dev • нажмите чтобы скачать

+

v0.94.0-dev • нажмите чтобы скачать