docs: +14 традиционных OBD2 Android проектов — AndrOBD король

This commit is contained in:
Repinoid
2026-05-27 10:13:01 +03:00
parent bb510dad22
commit afd4cce53a
+64 -3
View File
@@ -1,12 +1,14 @@
# ELM327 Communication Patterns — анализ 5 отлаженных проектов
# ELM327 Communication Patterns — анализ 5+14 проектов
> **Цель:** понять как РЕАЛЬНО работают проекты с ELM327, выбрать лучшие паттерны для Elmer.
> **Дата:** 2026-05-27
> **Источники:** исходный код 5 проектов (Java, Kotlin, Python, C)
> **Источники:** 5 LLM-проектов + 14 традиционных OBD2 Android-проектов
---
## Сводная таблица
## Часть 1: Проекты с LLM (ELM → LLM → диагноз)
### Сводная таблица
| | OBD-Droid | OBD2AI | Automotive-AI | obd2-mcp-server | Vehicle-Diag-Assist |
|---|---|---|---|---|---|
@@ -482,3 +484,62 @@ def calculate_obd_value(raw_response, formula):
- [ ] Мульти-фрейм ISO-TP
- [ ] DTC база (можно с obd2-mcp-server)
- [ ] Экспоненциальный backoff для ретраев
---
## Часть 2: Традиционные OBD2 Android-проекты (БЕЗ LLM)
> Только ELM327 ↔ Android Bluetooth SPP. Именно они интересны для слоя коммуникации — оттестированы годами на тысячах машин.
### Топ-10 батл-тестед проектов
| # | Проект | URL | Язык | Создатель | Обновлён | ⭐ | DTC | Live | VIN | Примечания |
|---|--------|-----|------|-----------|----------|-------|-----|------|-----|-----------|
| 1 | **AndrOBD** | [fr3ts0n/AndrOBD](https://github.com/fr3ts0n/AndrOBD) | Java | Sepp Seidel | Апр 2025 | 1993 | ✅ | ✅ | ✅ | **Король.** 10+ лет, MQTT, графики, плагины, многоязычный |
| 2 | **AndroidOBD** | [barnhill/AndroidOBD](https://github.com/barnhill/AndroidOBD) | Kotlin | Brian Barnhill | Ноя 2025 | 79 | ✅ | ✅ | ✅ | **Библиотека.** Хороший API для интеграции |
| 3 | **Java OBD** | [Tomiwa-Ot/obd](https://github.com/Tomiwa-Ot/obd) | Java | Tomiwa O. | Март 2025 | 30 | ✅ | ✅ | ✓ | **Библиотека.** SPP + USB. Опубликована на JitPack. Async |
| 4 | **ObdGraphs** | [tzebrowski/ObdGraphs](https://github.com/tzebrowski/ObdGraphs) | Kotlin | Tomek Żebrowski | Апр 2025 | 53 | ✅ | ✅ | ✅ | Графики в реальном времени. Проф. дизайн |
| 5 | **CarScanApp** | [midnightyoff/CarScanApp](https://github.com/midnightyoff/CarScanApp) | Kotlin | midnightyoff | Окт 2025 | 2 | ✅ | ✅ | ✅ | **Свежий.** Compose, DTC read/clear, maintenance log |
| 6 | **Elm327** | [takyonxxx/Elm327](https://github.com/takyonxxx/Elm327) | Java | Türkay Biliyor | Окт 2023 | 48 | ✅ | ✅ | ✅ | В Play Store. WiFi + BT. 22 форка |
| 7 | **CarBusInterface** | [theksmith/CarBusInterface](https://github.com/theksmith/CarBusInterface) | Java | Kristoffer Smith | Янв 2016 | 291 | ✅ | ✅ | ✅ | Старый, боевой. 77 форков. Raw command interface |
| 8 | **BT OBD-II Diag Tool** | [fussek/Bluetooth-OBD-II-Diagnostic-Tool](https://github.com/fussek/Bluetooth-OBD-II-Diagnostic-Tool) | Java | Sebastian Fussek | Сент 2022 | 21 | ✅ | ✅ | ✅ | Bachelor thesis. Хорошая документация + расчёты PID |
| 9 | **obd-scanner-android** | [ETSoftwareStudio/obd-scanner-android](https://github.com/ETSoftwareStudio/obd-scanner-android) | Kotlin | ETSoftware | Апр 2025 | 2 | ✅ | ✅ | ✓ | Jetpack Compose + Hilt. Образец архитектуры |
| 10 | **KWP Logger** | [bri3d/kwp-android-logger](https://github.com/bri3d/kwp-android-logger) | Java | Brian Ledbetter | Фев 2016 | 28 | ✅ | ✅ | ✓ | **KWP2000 для VW/Audi.** Специалист по протоколам |
### Что между ними общего (подтверждено всеми 14 проектами)
**Bluetooth SPP:**
```java
UUID SPP_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(SPP_UUID);
socket.connect();
```
**Инициализация ELM327 (единый стандарт):**
```
ATZ → сброс
ATE0 → эхо выкл
ATL0 → line feeds выкл
ATS0 → пробелы выкл (или ATS1 — с пробелами)
ATH0/1 → заголовки CAN
ATSP0 → авто-протокол
```
**Отправка команд (единый стандарт):**
```java
outputStream.write((cmd + "\r").getBytes());
outputStream.flush();
```
**Чтение ответов — два лагеря:**
- **Лагерь 1 (AndrOBD, CarBusInterface):** побайтово, по 1мс
- **Лагерь 2 (AndroidOBD, Elm327):** `BufferedReader.readLine()`
### Кого изучать в первую очередь для Elmer
| Для чего | Проект | Почему |
|----------|--------|--------|
| **BT ↔ ELM слой** | AndrOBD + CarBusInterface | 10 лет отладки, все краевые случаи |
| **Kotlin-интеграция** | AndroidOBD + CarScanApp | Чистый API, современный код |
| **PID/DTC парсинг** | AndrOBD | Все формулы, все режимы |
| **KWP2000 (VW)** | KWP Logger | Если Phaeton на старом протоколе |