bump: v0.3.0-dev на морде
This commit is contained in:
@@ -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»
|
||||||
@@ -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. Оптимальный размер цикла
|
||||||
|
При паузе 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/оригинал»
|
||||||
@@ -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%+ пользователей будут с клонами — какую стратегию выбрать: адаптироваться под клонов (медленный сбор) или требовать оригинал?
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
style="color:#00ff88;font-size:18px;font-weight:bold;text-decoration:none;">
|
style="color:#00ff88;font-size:18px;font-weight:bold;text-decoration:none;">
|
||||||
⬇️ Скачать ELM Relay v2
|
⬇️ Скачать ELM Relay v2
|
||||||
</a>
|
</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>
|
</div>
|
||||||
|
|
||||||
<!-- Кнопка десктоп-диагностики скрыта — только для разработчика с прямым ELM327 -->
|
<!-- Кнопка десктоп-диагностики скрыта — только для разработчика с прямым ELM327 -->
|
||||||
|
|||||||
Reference in New Issue
Block a user