56 lines
2.9 KiB
Markdown
56 lines
2.9 KiB
Markdown
# Сессия 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** — форма ручного ввода для телефона
|