- Java 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .forgejo/workflows | ||
| app | ||
| gradle/wrapper | ||
| build.gradle | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| README.md | ||
| settings.gradle | ||
AiwaysApp — BLE-Fernsteuerung für den Aiways U5 (Community)
Steuert den eigenen Aiways U5 direkt per Bluetooth LE — ohne Backend, ohne die (abgeschaltete) Original-App. Nutzt den gemeinsamen OpenAiways-Community-Key.
Voraussetzung: Das Auto wurde einmalig mit dem Community-Key provisioniert (siehe Provision-APK), schreibt
key_OPENAIWAYS,_expiretimeundac_public_key.pemnach/usrdata/pem/der TBox).
Was sie kann
Ein Tap = frische BLE-Verbindung → A001-Auth → B001-Befehl → Ergebnis:
Entriegeln, Verriegeln, Kofferraum, Fenster hoch/runter, Schiebedach kippen/zu, Blinker, Hupe.
Dazu Klima An/Aus mit Zieltemperatur (16–30 °C, Stepper) — sendet {"type":"9","param":{"temp":"215"}}
(temp × 10, also 215 = 21.5 °C).
Verifiziert am echten Fahrzeug (resCode 0, Auto reagiert). Klima-Temperatur nutzt die aus der
TBox-Firmware abgeleitete param.temp-Skalierung (× 10).
Oberfläche
Dunkles, kategorisiertes UI (Türen/Kofferraum, Fenster/Dach, Signale, Klima), abgerundete Karten, Farbcodierung, Status-Punkt und Live-Statuszeile. Eigenes adaptives App-Icon.
Technik
- Reines Java, minSdk 26, kein AndroidX, keine Dependencies, keine nativen Libs.
- Krypto byte-genau zum verifizierten Python-Client (AES-128-CBC, RSA-1024 PKCS#1, MD5).
RSA-Community-Key als CRT-Parameter eingebettet (
Crypto.java). - Protokoll V1 (
Protocol.java): A001 (Login-Key, RSA-signiert) → Session-Key ausrk→ B001{"type":"N"}mit Session-Key. - BLE (
BleManager.java): ScanAICHI_*, GATT 0x2B70 (write) / 0x2B71 (notify), 20-B-Chunks write-with-response, LE-Frame-Reassembly.
APK bauen (einmalig, dann verteilen)
GitHub Actions (empfohlen, kein lokales SDK)
- Repo anlegen, diesen Ordner-Inhalt hochladen (push).
- Tab Actions → Build APK läuft → Artefakt
aiwaysapp-debug-apk=app-debug.apk. - APK auf dem Handy installieren (Unbekannte Quellen erlauben).
Lokal
./gradlew assembleDebug # -> app/build/outputs/apk/debug/app-debug.apk
Benutzung
- Bluetooth an, in BLE-Reichweite des Autos.
- App öffnen, Berechtigungen erlauben (Scannen/Verbinden bzw. Standort ≤ Android 11).
- Befehl antippen → Statuszeile zeigt Fortschritt, Toast das Ergebnis.
Sicherheitshinweis (gemeinsamer Schlüssel)
Alle mit dem Community-Key provisionierten Autos vertrauen demselben Schlüssel; wer diese App/den Key hat, kann sich per BLE-Nähe an ein so eingerichtetes Auto anmelden. Bewusster Trade-off für ein einfaches Community-Tool.
To-do / Ideen
- Klima/Vorheizen (Remote-/TSP-Payload finden und als B00x nachbauen).
- Verbindung offen halten für mehrere Befehle (statt pro Tap neu verbinden).
- Fahrzeug-Auswahl/Merken (MAC), Statusabfrage (gbRealtime).