# 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