diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8b43fe2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +token.txt +__pycache__/ diff --git a/doc/session-2025-05-25.md b/doc/session-2025-05-25.md new file mode 100644 index 0000000..52b9b4c --- /dev/null +++ b/doc/session-2025-05-25.md @@ -0,0 +1,55 @@ +# Сессия 2025-05-25 — первый выезд к Фаэтону + +## Цель +Подключить ELM327 к ноутбуку (WSL/Windows) и запустить диагностику. + +## Результаты + +### Что сделано +- Установлен Python 3.12 в Windows (winget) +- Установлены зависимости: pyserial, pyyaml, requests (Windows Python) +- Установлен Flask в WSL (--break-system-packages) +- Проект скопирован в C:\Users\super\elmer для доступа из Windows +- ELM327 сопряжён с Windows (PIN 1234), созданы COM4/COM5 (Bluetooth SPP) + +### Что НЕ работает +- **Windows Bluetooth SPP** — COM4/COM5 открываются, но виснут на serial.Serial(). + Видимо, Windows не умеет нормально поднимать SPP-сессию к ELM327. + COM3 — это Intel AMT SOL, а не ELM327. + +### Что работает +- **Android + ELM327** — OBD Amy подключается без проблем. + ELM327 живой, питание от OBD2 есть (красный горит). +- Сервер Flask на http://192.168.18.62:5005 (WSL) + +### Исследование Android-клиента +- `MainActivity.kt` — готова: ищет спаренный ELM327, запускает сервис +- `ElmForwardService.kt` — готов на 80%: + - Bluetooth SPP → ELM327: ✅ + - Инициализация AT-команд: ✅ + - Чтение сырых ответов: ✅ + - HTTP-forward на сервер: ✅ + - Отправка OBD-команд (VIN/DTC/PID): ❌ (нужно дописать) +- `web/raw_endpoint.py` — буферизирует raw-данные, но не парсит + +## Архитектура (план) +``` +Телефон (Android) Ноутбук (WSL/Flask) +┌──────────────┐ ┌──────────────────┐ +│ ElmForward │─HTTP──→ │ /api/v1/raw-obd │ +│ Service │ │ ↓ │ +│ ↓ BT SPP │ │ парсер + LLM │ +│ ELM327 │ │ ↓ │ +│ ↓ OBD2 │ │ диагноз │ +│ ЭБУ (Фаэтон) │ └──────────────────┘ +└──────────────┘ +``` + +## Дальнейшие шаги +1. **Дописать ElmForwardService.kt** — отправка OBD-команд после init: + - VIN (0902) + - DTC stored (03), pending (07) + - PID'ы: 0105, 010C, 010D, 0111, 010B, 010F, 011F, 0104, 0106, 0107 +2. **Дописать raw_endpoint.py** — парсинг ответов + вызов LLM +3. **Собрать APK** (нужен Android SDK) +4. **Дописать web/templates/index.html** — форма ручного ввода для телефона