160 lines
5.1 KiB
Markdown
160 lines
5.1 KiB
Markdown
# OBD Widgets - Android Widgets für OBD2-Daten
|
|
|
|
Eine Android-App zur Anzeige von OBD2-Daten als Widgets auf dem Home-Screen. Unterstützt verschiedene Widget-Typen (Analog, Digital, Balken) und kann mit Bluetooth OBD2-Adaptern verbunden werden.
|
|
|
|
## Features
|
|
|
|
- **Verschiedene Widget-Typen**: Analog (Tacho), Digital, Balken, Gauge
|
|
- **Konfigurierbare OBD-Parameter**: Speed, RPM, Batteriespannung, Kühlmitteltemperatur, etc.
|
|
- **Bluetooth OBD2-Integration**: Unterstützt ELM327-kompatible Adapter
|
|
- **Automatische Wiederverbindung**: Verbindet sich automatisch wieder bei Verbindungsabbruch
|
|
- **Testmodus**: Simuliert OBD-Daten ohne Bluetooth-Verbindung
|
|
- **Tasker/MacroDroid Integration**: Sendet Broadcasts bei Verbindung/Trennung
|
|
- **Skalierbare Widgets**: Widgets können in der Größe angepasst werden
|
|
- **Keine Background-App nötig**: Service läuft im Hintergrund, keine App muss geöffnet bleiben
|
|
|
|
## Anforderungen
|
|
|
|
- Android 14+ (API Level 34)
|
|
- Bluetooth-fähiges Gerät
|
|
- ELM327-kompatibler OBD2-Adapter
|
|
|
|
## Installation
|
|
|
|
1. Projekt in Android Studio öffnen
|
|
2. Gradle Sync durchführen
|
|
3. App auf Gerät oder Emulator installieren
|
|
|
|
## Verwendung
|
|
|
|
### Erste Einrichtung
|
|
|
|
1. **Bluetooth-Gerät auswählen**:
|
|
- Öffnen Sie die App
|
|
- Gehen Sie zu Einstellungen
|
|
- Wählen Sie Ihr OBD2 Bluetooth-Gerät aus
|
|
|
|
2. **Widget hinzufügen**:
|
|
- Long-Press auf Home-Screen
|
|
- "Widgets" auswählen
|
|
- "OBD Widgets" auswählen
|
|
- Widget auf Home-Screen platzieren
|
|
|
|
3. **Widget konfigurieren**:
|
|
- Tippen Sie auf das Widget
|
|
- Wählen Sie Widget-Typ (Analog, Digital, Balken)
|
|
- Wählen Sie OBD-Parameter (Speed, RPM, etc.)
|
|
- Setzen Sie Min/Max-Werte
|
|
- Optional: Benutzerdefinierte Bezeichnung
|
|
|
|
### Einstellungen
|
|
|
|
- **Testmodus**: Aktivieren Sie den Testmodus, um simulierte Daten ohne BT-Verbindung zu sehen
|
|
- **Automatisch verbinden**: Service verbindet sich automatisch beim Start
|
|
- **Wiederverbindungs-Intervall**: Zeit zwischen Verbindungsversuchen (Standard: 5 Sekunden)
|
|
|
|
### Widget-Typen
|
|
|
|
- **Analog**: Runder Tacho mit Nadel (vereinfacht als ProgressBar dargestellt)
|
|
- **Digital**: Große digitale Anzeige
|
|
- **Balken**: Horizontale Balkenanzeige mit Prozentanzeige
|
|
- **Gauge**: Ähnlich wie Analog
|
|
|
|
### OBD-Parameter
|
|
|
|
Verfügbare Parameter:
|
|
- **Speed**: Geschwindigkeit (km/h)
|
|
- **RPM**: Drehzahl (RPM)
|
|
- **Voltage**: Batteriespannung (V)
|
|
- **Coolant Temp**: Kühlmitteltemperatur (°C)
|
|
- **Intake Temp**: Ansauglufttemperatur (°C)
|
|
- **MAF**: Mass Air Flow (g/s)
|
|
- **Throttle**: Drosselklappenstellung (%)
|
|
- **Fuel Level**: Kraftstoffstand (%)
|
|
|
|
## Tasker/MacroDroid Integration
|
|
|
|
Die App sendet folgende Broadcasts:
|
|
|
|
- `com.obdwidgets.CONNECTED`: Wenn Verbindung hergestellt wurde
|
|
- `com.obdwidgets.DISCONNECTED`: Wenn Verbindung getrennt wurde
|
|
- `com.obdwidgets.CONNECTION_STATUS_CHANGED`: Bei Statusänderung (Extra: `status`)
|
|
|
|
### Tasker Beispiel
|
|
|
|
1. Erstellen Sie ein neues Profil
|
|
2. Event → System → Intent Received
|
|
3. Action: `com.obdwidgets.CONNECTED`
|
|
4. Fügen Sie Aktionen hinzu (z.B. Benachrichtigung, Task starten)
|
|
|
|
## Erweiterbarkeit
|
|
|
|
Die App ist für Erweiterungen ausgelegt:
|
|
|
|
### Neue OBD-Parameter hinzufügen
|
|
|
|
1. Öffnen Sie `OBDParameter.kt`
|
|
2. Fügen Sie einen neuen Enum-Wert hinzu:
|
|
```kotlin
|
|
NEW_PARAMETER(
|
|
pid = "01XX",
|
|
name = "New Parameter",
|
|
unit = "unit",
|
|
minValue = 0f,
|
|
maxValue = 100f,
|
|
formula = { bytes -> /* Berechnung */ }
|
|
)
|
|
```
|
|
|
|
### Neue Widget-Typen hinzufügen
|
|
|
|
1. Fügen Sie einen neuen Wert zu `WidgetType` Enum hinzu
|
|
2. Erstellen Sie ein neues Layout in `res/layout/widget_xxx.xml`
|
|
3. Implementieren Sie die Widget-Erstellung in `OBDWidgetProvider.kt`
|
|
|
|
### Neue OBD-Protokolle hinzufügen
|
|
|
|
1. Implementieren Sie das `OBDProtocol` Interface
|
|
2. Erstellen Sie eine neue Klasse (z.B. `STN11xxProtocol.kt`)
|
|
3. Verwenden Sie die neue Implementierung im `OBDService`
|
|
|
|
## Architektur
|
|
|
|
```
|
|
app/
|
|
├── model/ # Datenmodelle (OBDParameter, WidgetConfig, etc.)
|
|
├── obd/ # OBD-Protokoll-Implementierungen
|
|
├── service/ # OBDService (Foreground Service)
|
|
├── widget/ # Widget Provider
|
|
├── ui/ # Activities (Settings, Configuration)
|
|
└── receiver/ # Broadcast Receiver (Boot)
|
|
```
|
|
|
|
## Bekannte Einschränkungen
|
|
|
|
- Der analoge Tacho verwendet aktuell eine vereinfachte Darstellung (ProgressBar statt echter Tacho-Nadel)
|
|
- Widgets aktualisieren sich alle 1 Sekunde (konfigurierbar in `obd_widget_info.xml`)
|
|
- Bluetooth-Berechtigungen müssen manuell erteilt werden (Android 12+)
|
|
|
|
## Lizenz
|
|
|
|
Dieses Projekt ist für den persönlichen Gebrauch erstellt.
|
|
|
|
## Vergleich mit Torque Pro
|
|
|
|
Im Gegensatz zu Torque Pro:
|
|
- ✅ Keine Background-App muss geöffnet bleiben
|
|
- ✅ Widgets funktionieren unabhängig
|
|
- ✅ Service läuft im Hintergrund
|
|
- ✅ Automatische Wiederverbindung
|
|
- ⚠️ Aktuell weniger Parameter (aber erweiterbar)
|
|
- ⚠️ Keine Logging-Funktion (kann hinzugefügt werden)
|
|
|
|
## Support
|
|
|
|
Bei Problemen:
|
|
1. Prüfen Sie die Bluetooth-Verbindung
|
|
2. Aktivieren Sie den Testmodus zum Testen
|
|
3. Prüfen Sie die App-Berechtigungen
|
|
4. Starten Sie den Service manuell in den Einstellungen
|