5.5 KiB
5.5 KiB
Сессия 2026-05-27 — домен obdai.ru, стратегия деплоя, исследование ELM/BT
Домен
obdai.ru— куплен, DNS-зона в ngcloud (PowerDNS)- NS:
ns5.rcloud.ru/ns4.rcloud.ru(у регистратора сменили с reg.ru) - A-записи:
@,www,ai,test→5.172.178.213 - Ждём propagation (TTL старой зоны 86400)
Решение: obdai.ru пока НЕ деплоим
Причина
Главная задача сейчас — стабильный обмен ELM327↔Android. Пока это звено не отлажено на 100%, деплой на ВМ и домен не дают никакой ценности:
- В машине телефон на одном WiFi с ноутбуком — локальный IP быстрее и надёжнее
- Клиент уже принимает URL сервера как параметр — сменить на
obdai.ru= одна строка - DNS ещё не пророс
Порядок приоритетов
- Стабильный обмен ELM↔Android — критический путь, уже выявлено 4+ багов
- Fat-client протокол (скрипт + батч) — обкатать на реальном ELM
- Gunicorn + nginx на ВМ — только после пунктов 1-2
- Переключение клиента на
obdai.ru— последний шаг, одна строка
Состояние звена ELM↔Android
| Баг | Статус |
|---|---|
| Сервер шлёт команды без пауз → ELM не успевает | ⚠️ не решён |
\r vs \r\n → мусор в буфере |
✅ исправлено |
| Deadlock при старте (ELM не шлёт приветствие) | ✅ исправлено (fwd READY) |
| Android блокирует HTTP (cleartext) | ✅ исправлено (usesCleartextTraffic) |
Архитектура деплоя (в будущем)
obdai.ru (95.172.178.213)
├── nginx (reverse proxy + SSL)
│ ├── / → лендинг (статический HTML)
│ ├── /static/app.apk → APK для скачивания
│ └── /api/v1/* → gunicorn (Flask)
│ ├── /script → выдача скрипта диагностики
│ └── /session/upload → приём батча + LLM
└── gunicorn (web/app.py)
├── script_endpoint (fat-client)
└── возможно raw_endpoint (опционально)
Что НЕ переносится на ВМ
- Десктоп-диагностика (
POST /api/diagnose,ELM327.elm.py) — требует Bluetooth на ноутбуке в машине - Локальный Flask для тестов — остаётся на ноутбуке разработчика
11:00-15:00 — Исследование ELM327/BT: 19 проектов
Найдено и изучено
| Тип | Кол-во | Лучший |
|---|---|---|
| ELM→LLM проекты | 5 | OBD-Droid (Wal33D) |
| Традиционные OBD2 Android | 14 | AndrOBD (1993⭐) |
Ключевой результат: AndrOBD — золотой стандарт
Изучен сырой исходный код. Выписаны все паттерны в doc/elm-reference.md (1100+ строк).
Критические находки, которых не было в нашем коде:
Thread.sleep(500)после BT connect — без этого Android теряет данные- Fallback RFCOMM channel 1 через reflection (для китайских клонов)
- Адаптивный таймаут: 200мс ± 4мс, диапазон 12-1000мс
- ATST меняется на лету
- Побайтовое чтение с паузой 1мс (не readLine!)
>— НЕ спецсигнал, а разделитель строк как CR/LF- Мульти-фрейм ISO-TP с префиксом длины
- Полная обработка ошибок: SEARCHING, NO DATA, BUS ERROR, UNABLE, DATA ERROR
- Инициализация: ATSP→ATAT→ATS0→ATL0→ATE0 (без ATZ при каждом подключении)
Созданные документы
| Файл | Содержание |
|---|---|
doc/elm-reference.md |
1100+ строк: паттерны 19 проектов + сырой код AndrOBD |
doc/competitors.md |
7 конкурентов, русских 0 |
elmer/elm_proto.py |
❌ Переусложнён (написан до изучения AndrOBD) |
tools/mock_elm327_v2.py |
❌ Требует доработки под реальные паттерны |
План: переписать ELM-слой по AndrOBD
Шаг 1 — СЕЙЧАС: Переписать elmer/elm_proto.py — эталонный Python-референс.
Шаг 2 — ЗАВТРА: Перенести в ScriptRunnerService.kt (Kotlin).
Шаг 3: Тест на Mock ELM327 v2.
Шаг 4: Выезд к Фаэтону.
Что НЕ делаем сейчас (приоритеты)
| P0 | Стабильный ELM↔Android | 🔴 сейчас | | P1 | ScriptRunner v2 + Mock v2 | 🟡 завтра | | P2 | Трёхфазный флоу, жалобы водителя | 🟢 потом | | P3 | LLM-промпты, cross-val, DTC-база | 🔵 потом |