5.5 KiB
5.5 KiB
Резюме проекта elmAI — 14 июня 2026
Текущая версия: v1.18.0-dev
Архитектура
Сервер (Python/Flask): gitea.services.ngcloud.ru/Nail/elmer, ветка bugfix-2026-06-07
- Хост:
obdai.ru(5.172.178.213), доступ по SSH:ssh -i ~/.ssh/naeel_vm_id_ed25519 naeel@5.172.178.213 - Репо на сервере:
/opt/elmer, сервисelmer(gunicorn), nginx прокси
Android (Kotlin): github.com/Repinoid/elmer-android, ветка bugfix-2026-06-07
- APK собирается на сервере:
export ANDROID_SDK_ROOT=$HOME/android-sdk && cd /opt/elmer/android && ./gradlew clean assembleDebug - APK на сайте:
web/static/app-debug.apk→https://obdai.ru/elmer.apk
Что работает ✅
- Статическая диагностика — одиночные PID (0104-011F), DTC, VIN — ИДЕАЛЬНО
- Speed-test — замер задержек RPM/MAF/STFT при клике на 🔵 ELM (если нет профиля)
- Серверный тестовый скрипт —
GET /api/v1/script?mode=test - Авто-подбор таймингов —
POST /api/v1/test/next— сервер получает результаты, увеличивает wait_ms если ошибок >20%
Что НЕ работает ❌
- Динамический тест (СТАРТ/СТОП) — ELM327 v1.5 замолкает после первых 1-2 команд. Статика работает, динамика нет. Причина не найдена.
Ключевые файлы
Сервер
| Файл | Что |
|---|---|
api/routes.py |
?mode=test, POST /api/v1/test/next, авто-подбор |
api/scripts.py |
build_test_script(wait_ms, pids, repeat) |
api/db.py |
device_profiles таблица с response_time_ms |
api/ping.py |
ping/ping-llm эндпоинты |
Android
| Файл | Что |
|---|---|
elm/ElmProtocol.kt |
Стейт-машина AndrOBD. MAX_RETRIES=3, state=ERROR убран |
elm/ElmChecker.kt |
checkDevice, checkEcu, speed-test, quickCheck |
script/DynamicCollector.kt |
Оригинальный DynamicCollector (не используется сейчас) |
script/ScriptEngine.kt |
Выполнение скриптов с сервера, поддержка wait |
server/ServerClient.kt |
downloadTestScript(), postTestNext() |
ui/MainActivity.kt |
startDynamicRecording() — авто-подбор с сервера |
Логика авто-подбора (v1.17+)
Пользователь: СТАРТ
↓
Статика 9 PID (как обычно)
↓
Цикл 1: GET /api/v1/script?mode=test → wait=2000ms, 2 PID (010C,0106), 8 повторов
↓ выполняет
↓ POST /api/v1/test/next {run:0, results:[...]}
↓ ответ: {done:false, message:"50% ошибок — увеличиваю до 2500ms"}
↓
Цикл 2: wait=2500ms → выполняет → POST → ответ
↓
... пока done:true или run≥5
Деплой
Только сервер (без APK):
cd /home/naeel/elmer
git add -A && git commit -m "..." && git push origin bugfix-2026-06-07
ssh -i ~/.ssh/naeel_vm_id_ed25519 naeel@5.172.178.213 'cd /opt/elmer && git pull origin bugfix-2026-06-07 && sudo systemctl restart elmer'
APK + сервер:
# Бамп версии в android/app/build.gradle.kts и web/templates/index.html
# Затем:
cd /home/naeel/elmer/android
git add -A && git commit -m "..." && git push origin bugfix-2026-06-07
cd /home/naeel/elmer
git add -A && git commit -m "bump vX.Y.Z-dev" && git push origin bugfix-2026-06-07
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 && git pull origin bugfix-2026-06-07 && \
export ANDROID_SDK_ROOT=$HOME/android-sdk && export ANDROID_HOME=$ANDROID_SDK_ROOT && \
rm -rf android && tar xzf /tmp/android-src.tar.gz -C /opt/elmer/ && \
cd android && ./gradlew clean assembleDebug && \
cp app/build/outputs/apk/debug/app-debug.apk /opt/elmer/web/static/'
Нерешённая проблема
ELM327 v1.5 замолкает при последовательных OBD-командах. Статика (одиночные) — ок. Динамика (подряд) — пустые ответы. Уже пробовали:
- Разные паузы (250ms → 4000ms) — не помогает
- ATWS перед динамикой — делает хуже
- Убирали/возвращали drainInput() — v1.9 без drain хуже
- Retry в exec() — оригинальный AndrOBD код не помогает
- Разное количество PID — не помогает
- DynamicCollector → серверный скрипт — не помогает
Текущий авто-подбор должен найти рабочий интервал, но если даже 4000ms не помогает — проблема глубже таймингов.
Конфигурация авто-подбора (api/routes.py)
- Старт: 2000ms
- Шаг: +500ms
- Макс: 5 циклов
- PIDs: 010C (RPM), 0106 (STFT)
- Повторов: 6
Профиль ELM
Таблица device_profiles в elmer.db. MAC: AA:BB:CC:11:22:33. Был удалён старый мусорный профиль.