docs: +14 традиционных OBD2 Android проектов — AndrOBD король
This commit is contained in:
+64
-3
@@ -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 на старом протоколе |
|
||||
|
||||
Reference in New Issue
Block a user