project structure: elm.py, db.py, prompts.py, diagnose.py, web UI (Flask), config

This commit is contained in:
“Naeel”
2026-05-25 07:46:04 +04:00
parent 200a27c26e
commit 6cc42bc340
13 changed files with 1089 additions and 1 deletions
+64 -1
View File
@@ -92,4 +92,67 @@
---
*Продолжить: читать данные с ELM327 на ноутбуке по Bluetooth.*
## Структура проекта (создана 2026-05-25)
```
elmer/
├── elmer/ # Python-пакет
│ ├── __init__.py # версия 0.1.0
│ ├── config.py # загрузка config.yaml + подстановка ${ENV}
│ ├── elm.py # ELM327: pyserial, VIN, DTC, PID
│ ├── db.py # SQLite: cars, tokens, llm_messages, ecu_parameters, dtc_codes
│ ├── prompts.py # SYSTEM_PROMPT + build_user_prompt()
│ └── diagnose.py # DeepSeek API (OpenAI-совместимый)
├── config.yaml # настройки (BT-порт, API-ключ, PID'ы)
├── requirements.txt # pyserial, pyyaml, requests
├── run.py # главный вход: ELM → данные → LLM → печать + сохранение
├── idea.md # исходная задумка
└── analysis.md # этот файл
```
## Запуск (в салоне авто)
```bash
# 1. Установить зависимости
pip install -r requirements.txt
# 2. Сопрячь ELM327 по Bluetooth
bluetoothctl pair 11:22:33:44:55:66
# (в config.yaml прописан порт /dev/rfcomm0)
# 3. Запустить
DEEPSEEK_API_KEY=sk-... python run.py
```
Что произойдёт:
1. Подключится к ELM327
2. Прочитает VIN
3. Считает ошибки (stored mode 03 + pending mode 07)
4. Считает параметры (обороты, температура, скорость, дроссель, MAP, IAT, топливные тримы)
5. Отправит в DeepSeek → напечатает диагноз
6. Сохранит всё в `elmer.db` (SQLite)
---
## Десктопный UI (Web)
Для тестирования на ноутбуке (не тыкать грязным пальцем в телефон):
- `web/app.py` — Flask (порт 5005), один endpoint `/api/diagnose` (POST)
- `web/templates/index.html` — одна кнопка, тёмная тема, результат
- В будущем этот же код — прототип серверного API
Запуск:
```bash
DEEPSEEK_API_KEY=sk-... python web/app.py
# Открыть http://localhost:5005
```
## Версии для пользователей (будущее)
- **Android** — Kotlin/Java, Bluetooth SPP
- **Windows** — тот же веб-интерфейс в WebView (или Electron, или просто браузер)
- Общий серверный API между ними
---
*Продолжить: тестировать в салоне авто с реальным ELM327.*