diff --git a/doc/history/opus-sonnet-comparison-2026-06-29.md b/doc/history/opus-sonnet-comparison-2026-06-29.md new file mode 100644 index 0000000..8cae36d --- /dev/null +++ b/doc/history/opus-sonnet-comparison-2026-06-29.md @@ -0,0 +1,79 @@ +# Ответы Opus и Sonnet — залипание клона ELM327 v1.5 + +Дата: 2026-06-29 + +--- + +## Opus 4.8 + +### 1. Природа залипания +Прошивка-эмулятор (MCU имитирует команды, нет настоящего чипа). Под нагрузкой буфер ответа переполняется, MCU зацикливается, отдавая последний кадр (`7F0112`) на всё. CAN-контроллер жив, мёртв эмулятор. UART отвечает, но игнорирует ввод. + +### 2. Детект залипания +AT-команда возвращает OBD-кадр = залип. `ATRV` без `V`/напряжения = залип. 3+ одинаковых hex-ответа на разные PID. `7F` на PID 0100 — флаг. + +### 3. Паузы +2-3 сек снижают вероятность, но не устраняют. Залипание зависит от **суммарного числа команд**, а не интервалов. + +### 4. Auto-recovery +`ATWS`/`ATZ` иногда оживляют, но если завис UART-приём — команды не дойдут. **90% случаев — только обесточивание.** Алгоритм: ATWS → 2 сек → ATRV для проверки. Не сработало → требовать переподключения. + +### 5. Оптимальный размер цикла +**2-3 PID** на цикл при паузе 2-3 сек. 4 уже на грани. + +### 6. Влияние оборотов +CAN-нагрузка ускоряет залипание. 3500+ → больше трафика → раньше переполнение. + +### 7. Замена адаптера +OBDLink SX/MX+ — лучший. v2.1 клон — миф, тот же эмулятор. + +### 8. Стратегия +Гибрид: адаптироваться (2-3 PID, паузы, детект+recovery), детектить тип, предупреждать, не блокировать. + +--- + +## Sonnet + +### 1. Природа залипания +Баг клонов v1.5 (CH340/PIC18F). Залипает CAN-контроллер внутри клона. + +### 2. Детект залипания +`ATRV` до/после цикла. 2-3 одинаковых ответа подряд. + +### 3. Паузы +2-3 сек помогают. Минимум 1.5 сек. 6+ PID → 3-5 сек. + +### 4. Auto-recovery +`ATZ` — надёжный. `ATWS` — мягче. `ATPC` — иногда. Последовательность: ATPC → 500ms → ATZ → переинит. + +### 5. Оптимальный размер цикла +**4 PID** — хороший баланс. 6 рискованно. 2 безопасно. + +### 6. Влияние оборотов +Да, прямое. Холостые — залипает позже. + +### 7. Замена адаптера +OBDLink EX/MX+ → оригинал ELM327 v1.4b/v2.1 → клоны v2.1 лотерея. + +### 8. Стратегия +Медленный режим (4 PID, 3 сек) как default. Детект + авто-ATZ. Предупреждение в UI. + +--- + +## Моё мнение + +**Opus точнее** в трёх ключевых пунктах: + +1. **Природа залипания** — Opus правильно указывает на эмулятор/прошивку, а не CAN-контроллер. Это объясняет почему AT-команды тоже ломаются. + +2. **Auto-recovery** — Opus реалистичнее: 90% только обесточивание. Соннет излишне оптимистичен про ATZ. Наш опыт подтверждает Опуса — ATZ не помогал. + +3. **Размер цикла** — Opus консервативнее (2-3 PID). С учётом что клон залип после ~10 команд, 2-3 PID на цикл безопаснее. + +**Соннет практичнее** в одном: 4 PID + 3 сек как default для продакшена. Но с учётом рисков, 2-3 PID + детект залипания + авто-предупреждение — более надёжный путь. + +**Что берём в работу:** +- Детект залипания через `ATRV` (без `V` = залип) +- Циклы по 3 PID с паузой 2-3 сек +- Auto-recovery через ATWS → проверка ATRV → если нет → сообщение пользователю +- Предупреждение в UI: «Адаптер нестабилен, рекомендуем OBDLink» diff --git a/doc/history/session-summary-2026-06-28.md b/doc/history/session-summary-2026-06-28.md new file mode 100644 index 0000000..6d8193c --- /dev/null +++ b/doc/history/session-summary-2026-06-28.md @@ -0,0 +1,34 @@ +# Итоги тестирования протокола ELM327 v1.5 — 28.06.2026 + +## Результаты + +| Версия | Условия | Результат | +|--------|---------|-----------| +| v0.2.3 | Зажиг ON, двиг OFF, старый код | 12/12 (100%) один раз, потом нестабильно | +| v0.2.4 | Двиг OFF, с drain (сломан) | 1/20 | +| v0.2.4 | Двиг OFF, без drain | 9/12 (после чистки очереди) | +| v0.2.6 | Двиг ON (заведён), без info-команд | 8/12 (первые 4 — хвост инита, потом 8/8) | +| v0.2.6 | Двиг ON, после сброса ELM | 16/16 (100%) — но ELM залип на одном ответе | + +## Что работает + +- Канонический протокол (ATE0→ATL0→ATS0→ATI→detectClone→ATST96→ATSP0) — стабилен +- ElmActor (single-thread executor) — без нареканий +- SQLite command_queue с gunicorn -w 4 — работает +- Поллинг Android↔сервер — стабилен +- hello чистит очередь для device_id — новые сессии без мусора +- VERSION_NAME через val appVersionName — больше не хардкод + +## Проблемы + +1. **Клон v1.5 залипает** — после ~10 команд начинает повторять один ответ (`410405\n7F0112`). + Нужен сброс питания (вынуть из OBD) для восстановления. +2. **ATI/ATDPN/ATRV засоряют буфер** — убраны из relayLoop, но init() всё ещё делает ATI. +3. **Без заведённого двигателя ~50% ответов пустые** — ECU медленнее отвечает. + +## Что дальше + +1. Тест с паузами 2-3 сек между циклами — проверить, уходит ли залипание +2. Тест с меньшим числом PID в цикле (2-3 вместо 4) +3. После стабилизации — перенос фиксов в основное приложение (:app) +4. Смержить opus-fixes в master diff --git a/doc/history/sonnet-response-post-tests-2026-06-29.md b/doc/history/sonnet-response-post-tests-2026-06-29.md new file mode 100644 index 0000000..2ff6b1a --- /dev/null +++ b/doc/history/sonnet-response-post-tests-2026-06-29.md @@ -0,0 +1,30 @@ +# Ответ Соннета — по результатам тестов 28.06.2026 + +(Отправлено по ошибке вместо Опуса) + +## 1. Природа залипания +Известный баг клонов (особенно v1.5 на CH340/PIC18F). Залипает обычно CAN-контроллер внутри клона — накапливает необработанные фреймы и перестаёт принимать команды через UART. Настоящий ELM327 сбрасывает буфер сам; клоны — нет. + +## 2. Детект залипания +Лучший вариант — сравнивать `ATRV` до и после цикла (у живого ELM всегда выдаёт реальное напряжение ~12.x V). Дополнительно: если два последних ответа на разные PID идентичны побайтово — залип. Трёх совпадений достаточно. + +## 3. Паузы +2–3 секунды между циклами по 4 PID обычно помогают. Минимум ~1.5 сек. При 6+ PID в цикле лучше 3–5 сек. Чем больше PID, тем больше CAN-трафика, тем быстрее переполняется буфер. + +## 4. Auto-recovery +`ATZ` (полный сброс, ~1 сек) — самый надёжный программный способ. `ATWS` (warm start) — мягче, но не всегда помогает клонам. `ATPC` (protocol close) — иногда достаточно. Последовательность: `ATPC` → 500 мс → если не помогло → `ATZ` → переинициализация. + +## 5. Оптимальный размер цикла +При паузе 2–3 сек: **4 PID** — хороший баланс. 6 PID уже рискованно на нагруженной шине. 2 PID — безопасно, но медленно. + +## 6. Влияние оборотов +Да, напрямую. При высоких оборотах CAN-шина загружена больше (ECU шлёт больше фреймов), буфер клона заполняется быстрее. На холостых — залипает позже. + +## 7. Замена адаптера +Приоритет: **OBDLink EX/MX+** (оригинальный чип STN2120, нет этой проблемы) → оригинальный ELM327 v1.4b/v2.1 (реже). Клоны v2.1 — лотерея, та же болезнь. Китайские v1.5 — для продакшена непригодны. + +## 8. Стратегия для продакшена +Адаптироваться под клонов, но с явными ограничениями: +- Медленный режим (4 PID, пауза 3 сек) как default +- Детект залипания + авто-`ATZ` +- В UI показывать «адаптер нестабилен, рекомендуем OBDLink/оригинал» diff --git a/doc/opus-questions-post-tests-2026-06-29.md b/doc/opus-questions-post-tests-2026-06-29.md new file mode 100644 index 0000000..9e4ad0e --- /dev/null +++ b/doc/opus-questions-post-tests-2026-06-29.md @@ -0,0 +1,28 @@ +# Вопросы к Opus 4.8 — по результатам тестов 28.06.2026 + +## Контекст + +Протестирован канонический протокол на клоне ELM327 v1.5 (заведённый двигатель). +Результаты: протокол стабилен (16/16), НО клон залипает после ~10 команд — +начинает возвращать один и тот же ответ `410405\n7F0112` на ВСЕ команды, +включая AT (ATRV возвращает тот же OBD-ответ вместо напряжения). + +Единственный способ восстановления — физическое извлечение из OBD. + +## Вопросы + +1. **Природа залипания.** Это известный баг клонов v1.5 или проблема конкретного экземпляра? Что именно залипает: внутренний буфер ELM, CAN-контроллер, или сам чип перестаёт принимать новые команды? + +2. **Детект залипания.** Как программно определить что ELM залип? Проверять что ответ не меняется 3+ команды подряд? Сравнивать ATRV до и после цикла? + +3. **Паузы между циклами.** Какая минимальная пауза предотвращает залипание? Достаточно ли 2-3 секунд между циклами по 4 PID? Зависит ли от числа PID в цикле? + +4. **Auto-recovery без извлечения.** Есть ли программный способ вывести клон из залипания? ATPC? ATWS? ATZ? Или только обесточивание? + +5. **Оптимальный размер цикла.** При паузе 2-3 сек между циклами — сколько PID оптимально в одном цикле? 2? 4? 6? + +6. **Влияние оборотов двигателя.** Залипание зависит от нагрузки на CAN-шину? При высоких оборотах (3500+) залипает быстрее? + +7. **Замена адаптера.** Если клон v1.5 принципиально нестабилен — какой адаптер рекомендовать? Оригинальный ELM327? v2.1 клон? OBDLink? + +8. **Стратегия для продакшена.** Учитывая что 50%+ пользователей будут с клонами — какую стратегию выбрать: адаптироваться под клонов (медленный сбор) или требовать оригинал? diff --git a/web/templates/index.html b/web/templates/index.html index 9492e5a..65c841f 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.6-dev • ретранслятор команд
+v0.3.0-dev • ретранслятор команд