# 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.*