Files
elmer/analysis.md
T

5.0 KiB
Raw Blame History

Elmer — анализ и план (2026-05-25)

Суть проекта

Сервис анализа ошибок электроники автомобиля через ELM327 OBD2 + LLM.

Железо

  • Сканер: ELM327 Bluetooth v1.5, чип PIC18F25K80 (китайский клон)
  • Ноутбук разработчика: с Bluetooth, будет соединяться с ELM327 напрямую для отладки

Целевая аудитория

  • Технически любопытный автовладелец (не профессионал, но и не «глубинарий»)
  • Уже имеет ELM327 — значит базовое понимание есть
  • Хочет понять проблему, а не просто получить код ошибки

Ключевые требования к ответам

  • Честная уверенность: «С вероятностью ~80% проблема в X, потому что...»
  • Пояснение логики: почему именно этот вывод
  • Предупреждения: «Если НЕ помогло — тогда проверь Y»
  • Никаких категоричных «меняй X» без 100% уверенности
  • Liability Protection: нельзя чтобы пользователь сломал машину из-за неверного диагноза

LLM

  • Рассматривается DeepSeek (дёшево через API)
  • Или другая простая/дешёвая модель
  • Нужен RAG/grounding на реальных repair manuals и TSB, чтобы минимизировать галлюцинации

Компоненты системы

  1. Android-приложение (в последнюю очередь)

    • Стабильная версия Android (не гоняться за новейшей)
    • Максимально простое: минимум кнопок
    • Русский язык
    • Bluetooth SPP → ELM327
  2. Сервер (после отладки логики на ноутбуке)

    • Принимает данные от приложения
    • Формирует запросы к LLM
    • Итеративный цикл: запрос → ответ → может запросить ещё параметры или действия от пользователя
    • Отдаёт диагноз с пояснениями
  3. LLM-слой

    • Промпт с контекстом автомобиля (VIN → марка/модель/двигатель)
    • RAG на базу знаний (ошибки, мануалы, TSB)
    • Итеративная диагностика: сервер может переспрашивать LLM

Протокол диагностики (конечный автомат)

Цикл:

  1. Приложение считывает VIN → сервер
  2. Приложение считывает коды ошибок → сервер
  3. Сервер → LLM: первичный анализ
  4. LLM может запросить:
    • Дополнительные PID'ы с ЭБУ (live data)
    • Действия от пользователя (прогазовать, проехать, считать на холодную и т.д.)
  5. Повторять пока не будет достаточно данных для диагноза
  6. Финальный ответ: диагноз + степень уверенности + пояснения + что делать

План разработки (три фазы)

Фаза 1: Ноутбук + ELM327 (СЕЙЧАС)

  • Python-скрипт: Bluetooth → ELM327 → читаем VIN, ошибки, PID'ы
  • Отправляем в LLM вручную — отлаживаем логику, промпты, цикл вопросов-ответов
  • Никакого сервера, никакого Android

Фаза 2: Сервер

  • Flask/FastAPI — принимать данные, проксировать в LLM
  • База знаний / RAG
  • State machine диагностики

Фаза 3: Android-приложение

  • Bluetooth SPP (Serial Port Profile) — есть нюансы на Android 12+
  • Минималистичный UI
  • Отправка данных на сервер, отображение ответов

Риски

  1. ELM327 v1.5 клон — неполный протокол, глюки на高速 CAN
  2. PID'ы разные у разных марок — нужна БД по производителям
  3. LLM галлюцинации — только grounding/RAG спасёт
  4. Bluetooth SPP на Android 12+ — permissions, pairing

Ресурсы

  • python-OBD — библиотека для работы с ELM327 (или свой serial-протокол)
  • pyserial уже установлен в системе
  • DeepSeek API (или OpenRouter как альтернатива)

Продолжить: читать данные с ELM327 на ноутбуке по Bluetooth.