Files
elmer/doc/session-resume-2026-06-14.md
T

5.5 KiB
Raw Blame History

Резюме проекта 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

Что работает ✅

  1. Статическая диагностика — одиночные PID (0104-011F), DTC, VIN — ИДЕАЛЬНО
  2. Speed-test — замер задержек RPM/MAF/STFT при клике на 🔵 ELM (если нет профиля)
  3. Серверный тестовый скрипт — GET /api/v1/script?mode=test
  4. Авто-подбор таймингов — POST /api/v1/test/next — сервер получает результаты, увеличивает wait_ms если ошибок >20%

Что НЕ работает ❌

  1. Динамический тест (СТАРТ/СТОП) — 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. Был удалён старый мусорный профиль.