bump: v0.3.0-dev на морде

This commit is contained in:
Repinoid
2026-07-04 14:51:40 +04:00
parent caef3cc970
commit daa7fcf4a6
5 changed files with 172 additions and 1 deletions
@@ -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»
+34
View File
@@ -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
@@ -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. Оптимальный размер цикла
При паузе 23 сек: **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/оригинал»
@@ -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%+ пользователей будут с клонами — какую стратегию выбрать: адаптироваться под клонов (медленный сбор) или требовать оригинал?
+1 -1
View File
@@ -29,7 +29,7 @@
style="color:#00ff88;font-size:18px;font-weight:bold;text-decoration:none;">
⬇️ Скачать ELM Relay v2
</a>
<p style="font-size:11px;opacity:0.6;margin:4px 0 0 0;">v0.2.6-dev • ретранслятор команд</p>
<p style="font-size:11px;opacity:0.6;margin:4px 0 0 0;">v0.3.0-dev • ретранслятор команд</p>
</div>
<!-- Кнопка десктоп-диагностики скрыта — только для разработчика с прямым ELM327 -->