Initial
This commit is contained in:
159
README.md
Normal file
159
README.md
Normal file
@@ -0,0 +1,159 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user