# Результаты тестирования протокола 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