- obd/probe.py: трехуровневый каскад (L0/L1/L2) - obd/commands.py: каталог всех AT-команд с метаданными - obd/classifier.py: классификация ответов + определение уровня - obd/connection.py: транспортный слой (SerialTransport) - obd/protocol.py: init() только база, без ATAT1/ATST - api/db.py: таблица device_profiles по BT MAC - api/scripts.py: три уровня скриптов (l0/l1/l2) - api/routes.py: /elm/probe, /elm/profile/<mac>, /script?level= - web/templates/index.html: v0.48.0 - CHANGELOG.md, doc/architecture.md, resume.txt: версии
64 lines
3.1 KiB
Plaintext
64 lines
3.1 KiB
Plaintext
## 4. Контекст проекта (РЕЗЮМЕ для нового чата)
|
|
|
|
### Что это
|
|
elmAI — Android-приложение + Python-сервер для диагностики авто через ELM327.
|
|
|
|
### Текущая версия
|
|
**v0.48.0** (APK: https://obdai.ru/elmer.apk)
|
|
|
|
### Репозитории
|
|
- Сервер: https://gitea.services.ngcloud.ru/Nail/elmer (ветка master)
|
|
- Android: https://github.com/Repinoid/elmer-android (ветка master)
|
|
- Сервер живёт на 5.172.178.213 (SSH: naeel@5.172.178.213, ключ ~/.ssh/naeel_vm_id_ed25519)
|
|
|
|
### Деплой
|
|
```bash
|
|
# ВСЕГДА сначала bump версии в android/app/build.gradle.kts!
|
|
cd /home/naeel/elmer/android && git add -A && git commit -m "..." && git push origin master
|
|
cd /home/naeel/elmer && tar czf /tmp/android-src.tar.gz --exclude='.git' --exclude='build' --exclude='.gradle' android/
|
|
scp -i ~/.ssh/naeel_vm_id_ed25519 /tmp/android-src.tar.gz naeel@5.172.178.213:/tmp/
|
|
ssh -i ~/.ssh/naeel_vm_id_ed25519 naeel@5.172.178.213 \
|
|
"cd /opt/elmer && rm -rf android && tar xzf /tmp/android-src.tar.gz && \
|
|
cd android && gradle wrapper --gradle-version 8.7 && \
|
|
export ANDROID_SDK_ROOT=\$HOME/android-sdk && \
|
|
./gradlew clean assembleDebug && \
|
|
cp app/build/outputs/apk/debug/app-debug.apk /opt/elmer/web/static/"
|
|
```
|
|
|
|
### Структура проекта
|
|
```
|
|
elmer/
|
|
android/ — Android-приложение (Kotlin)
|
|
app/src/.../elm/ — ElmProtocol.kt, ElmChecker.kt
|
|
app/src/.../ui/ — MainActivity.kt
|
|
api/ — Flask API (Python)
|
|
brain/ — LLM-клиент (Python)
|
|
obd/ — ELM-протокол (Python)
|
|
doc/ — Документация, сессии
|
|
web/ — Flask web, статика
|
|
```
|
|
|
|
### Ключевые файлы
|
|
- `android/app/build.gradle.kts` — versionName (менять при КАЖДОМ деплое)
|
|
- `android/.../elm/ElmProtocol.kt` — стейт-машина AndrOBD (init, sendCommand)
|
|
- `android/.../elm/ElmChecker.kt` — checkDevice, checkEcu, scanDtc
|
|
- `android/.../ui/MainActivity.kt` — UI (~470 строк, надо разбить)
|
|
|
|
### Что уже исправлено (сессия 2026-06-06)
|
|
- ELM v1.5 совместимость (init без ретраев, skip v2-команд)
|
|
- Статус-строка: append вместо overwrite
|
|
- BT-подключение: connect() идемпотентный
|
|
- Все таймауты сокращены (2000-3000мс вместо 5000-10000мс)
|
|
|
|
### Что НЕ сделано (TODO)
|
|
- Разбить MainActivity.kt (~470 -> <=200 строк)
|
|
- Разбить ElmChecker.kt (~270 -> <=200 строк)
|
|
- Подробные комментарии перед функциями
|
|
- Полевой тест на машине
|
|
|
|
### Важные правила
|
|
- ELM327 v1.5 — фейк (клоны v1.0/v1.4), НЕ слать ATAT1/AT@1/AT@2/ATST
|
|
- Все статусы через appendStatus("\n..."), не tvStatus.text =
|
|
- Таймер инита макс 14 секунд (было 88)
|
|
- Подробности: doc/session-2026-06-06.md
|