OBDWidget_Auto/README.md
2026-01-24 16:29:50 +01:00

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