- Java 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
Build APK / build (push) Successful in 1m38s
Die nutzer-spezifischen Schluessel erzeugt jetzt das Backend bei der Konto-Erstellung; die AiwaysApp deployt sie per :9000 /file. Entfernt: key_OPENAIWAYS, key_OPENAIWAYS_expiretime, ac_public_key.pem (Assets + FTP-Deploy, PEM_DIR/KEY_FILES). Die Head-Unit provisioniert nur noch TBox-Infrastruktur: Daemon + Config(api_token) + fota-Autostart + QR. |
||
| .forgejo/workflows | ||
| app | ||
| gradle/wrapper | ||
| .gitignore | ||
| build.gradle | ||
| claude_initial_setup.txt | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| README.md | ||
| settings.gradle | ||
HeadUnit TBox Provisioning
Provisioning-App für die Aiways Head-Unit (Android 4.4.2 / API 19). Wird per USB-Stick installiert und richtet in einem Erststart-Wizard die TBox komplett ein.
Nachfolger/Erweiterung von BLEAppProvisioning
(die nur die BLE-key_*-Files schrieb) — diese App macht das gesamte Setup.
Ablauf
-
Wizard (Erststart): erfasst
- WLAN-SSID der TBox — vorbelegt
MyAiways-XXXXX(5 Zufallszeichen), editierbar, - WLAN-Passwort — vorgeneriert (12 Zeichen), editierbar (8–31 Zeichen),
- Backend-URL — Default
https://aiways.it-perspective.de.
- WLAN-SSID der TBox — vorbelegt
-
„Fertig – TBox einrichten" → schreibt per FTP (
root:oelinux123@<TBox-IP>:21) auf die Box:- BLE-Schlüssel
key_OPENAIWAYS,key_OPENAIWAYS_expiretime,ac_public_key.pem→/usrdata/pem, - unseren Telemetrie-Daemon
tbox_daemon(statisches armv7-Binary, als Asset eingebettet) →/usrdata/tbox_daemon(+x viaSITE CHMOD), - dessen Config aus den Wizard-Werten →
/usrdata/tbox_daemon.conf.
Das eingebettete Asset
app/src/main/assets/tbox_daemonist derzeit v1.0.20. Bei Daemon-Updates neu ziehen:curl -fL -o app/src/main/assets/tbox_daemon \ https://forgejo.timo-erdbruegger.de/aiways/tbox_daemon/releases/download/v1.0.20/tbox_daemon-v1.0.20-armv7 - BLE-Schlüssel
-
Zeigt einen QR-Code, den die AiwaysApp scannt. Payload (JSON):
{"v":1,"type":"aiways-provision","backend":"…","ap_ssid":"…","ap_key":"…","tbox_ip":"…"}Damit weiß die App, welches Backend sie nutzt und wie sie in den TBox-AP kommt.
Die TBox-IP ist per Default 192.168.1.1; „TBox suchen" scannt das lokale Netz nach offenem FTP (:21).
Bauen
Reines Java, kein AndroidX, einzige Dependency com.google.zxing:core (QR). Gebaut wie die
anderen Repos über die Forgejo-CI (.forgejo/workflows/build-apk.yml): AGP 8.5.2, Gradle 8.7,
JDK 17, assembleDebug. Ein Commit mit dem Wort release erzeugt automatisch ein Release
mit der APK (Tag vX.Y.Z, Patch zählt hoch).
Lokal:
./gradlew assembleDebug
# -> app/build/outputs/apk/debug/app-debug.apk
Deployen (auf die Head-Unit)
APK per USB-Stick auf die Head-Unit kopieren und installieren (Gerät ist gerootet, im selben Netz wie die TBox). App starten → Wizard.
Noch offen (Folge-Issues)
- Daemon-Autostart auf der TBox (idempotenter Block in
fota.sh) — aktuell wird der Daemon nur abgelegt/ausführbar gemacht, nicht automatisch gestartet. - QR-Scan in der AiwaysApp: Gegenstück implementieren (Payload-Vertrag oben), inkl. des optionalen Konto-Anlege-Pfads (in der App bisher deaktiviert).
- ESP32-S3-LTE-Provisionierung über dieselben Daten — Hardware liegt noch nicht vor, der QR-Payload ist aber schon so gestaltet, dass er später erweitert werden kann.
- Hardware-End-to-End-Test am echten Fahrzeug.
Sicherheit
Die App läuft nur im lokalen TBox-Netz. FTP-Zugang (oelinux123) ist der Werks-Default der Box.
Die erzeugten AP-Credentials stehen im QR-Code (bewusst — der Installateur scannt ihn direkt) und
in /usrdata/tbox_daemon.conf (chmod 600). Keine echten Secrets im Repo.