Files
audi-app/testumgebung
Paul Nothaft 4395ff6ac6 Native iOS-Huelle in Betrieb, drei Darstellungsfehler behoben
Xcode ist vorhanden, die Huelle liess sich also wirklich bauen statt nur
vorzubereiten: Capacitor 8 fuer iOS und Android, Build fuer den Simulator
erfolgreich, App laeuft und zeigt echte Daten vom Server.

CapacitorHttp eingeschaltet. Das ist keine Feinheit: die native Huelle
liefert die Oberflaeche unter eigenem Ursprung aus, jede Anfrage an Home
Assistant ist damit ursprungsuebergreifend, und die WebView lehnt sie ohne
CORS-Freigabe ab. Nativ gestellte Anfragen kennen keine CORS-Pruefung -
die App braucht dadurch keine CORS-Einstellung am Server.

Drei Fehler, die erst die Bildschirmfotos zeigten:

1. Der Fahrzeug-Block auf der Uebersicht war unsichtbar. Ursache war der
   Flexbox-Fallstrick: "overflow: hidden" setzt die automatische Mindesthoehe
   auf 0, und sobald die Seite laenger ist als der Bildschirm, quetscht
   flex-shrink den Block auf Hoehe 0. Modellname, Typenschild und Kennzeichen
   waren damit schlicht weg.
2. Neben dem Typenschild stand der Modellname noch einmal komplett, obwohl
   das Schild ihn bereits zeigt. Das alte Panel loest das laengst richtig -
   nur der Zusatz gehoert daneben. Nachgezogen, samt Entdopplung, wenn die
   Ausfuehrung schon im Namen steckt.
3. In der Fotogalerie liefen die Dateinamen ueber den Rand der Miniaturen.

Dazu: Datumszeile in Listen bricht um statt abzuschneiden, Statistik nutzt
auf der Flaeche mehrere Spalten.

Im Backend war das Kilometerstand-Screening kaputt: es rief urlopen direkt
auf, was Home Assistant seit 2026.8 als blockierenden Aufruf abbricht. Jede
Fahrt blieb dadurch ohne Strecke - sichtbar nur als Warnung im Protokoll.
Laeuft jetzt ueber task.executor und rechnet an der Testinstanz wieder echte
Strecken aus dem Verlauf.

Die CORS-Freigabe fuer die Web-Fassung ist in der Testkonfiguration
hinterlegt. Sie greift in Home Assistant 2026.8 allerdings nicht - deshalb
wird die App aus Home Assistant selbst ausgeliefert (gleicher Ursprung, kein
CORS), was ohnehin der geplante Weg ist.

Die erzeugten Ordner ios/ und android/ bleiben ungetrackt; sie entstehen
jederzeit neu aus dem Webbuendel.
2026-08-11 12:44:11 +02:00
..

testumgebung/ — Wegwerf-Home-Assistant für Entwicklung und Tests

Setzt eine vollständige Home-Assistant-Instanz in Docker auf, in der das pyscript-Backend dieses Projekts echt läuft: eigene Entitäten, echte Service-Aufrufe, nachgebildete Fahrzeugsensoren. Gedacht als Ziel für die Abnahmekriterien aus ../UMSETZUNGSPLAN.md (Phasen 1, 6, 9).

Die ursprüngliche Testinstanz aus der Entwicklung des HA-Panels war eine Wegwerfinstanz ohne Skript und ist verloren gegangen — deshalb liegt der Aufbau hier als ausführbares Skript statt als Anleitung.

Aufsetzen

./aufsetzen.sh

Das Skript ist mehrfach ausführbar (löscht einen vorhandenen Container vorher). Es lädt das offizielle Image, startet den Container auf Port 18123, legt per API einen Testnutzer an, erzeugt ein langlebiges Zugriffstoken, installiert pyscript als Custom Component, kopiert ../homeassistant/{pyscript,www,data} hinein und startet neu.

Am Ende schreibt es das Token nach ../companion-app/.env.local (Variable VITE_TEST_TOKEN, gitignored) — von dort holen es die authentifizierten Tests.

Zugang: http://localhost:18123 · Benutzer test · Passwort testtest123

Was nachgebildet wird

konfiguration.yaml bildet die Entitäten der HACS-Integration TommiG1/HA_VAG-EU-Data-Act als Template-Sensoren nach, damit das Backend echte Werte sieht. Steuerbar zur Laufzeit über Helfer — damit lassen sich die @state_trigger-Abläufe wirklich auslösen:

Helfer Steuert Wofür
input_number.test_kilometerstand sensor.audi_rs_4_avant_mileage Reifenzähler, Fahrtabschluss-Screening
input_number.test_tankfuellstand sensor.audi_rs_4_avant_fuel_level automatische Tankerkennung
input_number.test_reichweite sensor.audi_rs_4_avant_range_primary Übersichtsanzeige
input_text.test_wlan sensor.iphone_wifi_connection Fahrterkennung (Start/Ende)
input_boolean.test_tuer_vl Tür vorne links „sicher abgestellt"
input_boolean.test_fenster_vl Fenster vorne links „sicher abgestellt"
input_boolean.test_entriegelt Türschloss vorne links „sicher abgestellt"

Beispiel — Fahrt auslösen (WLAN des Fahrzeugs verbinden, dann trennen):

T=$(grep VITE_TEST_TOKEN ../companion-app/.env.local | cut -d= -f2)
curl -X POST -H "Authorization: Bearer $T" -H "Content-Type: application/json" \
  -d '{"entity_id":"input_text.test_wlan","value":"Audi_MMI"}' \
  http://localhost:18123/api/services/input_text/set_value

Der WLAN-Name muss zu fahrzeug.wlan_ssid in audi_dashboard/fahrzeugprofil.json passen.

Aufräumen

docker rm -f audi_ha_test

Die Konfiguration liegt außerhalb des Repos unter dem im Skript gesetzten ZIEL-Pfad; es werden keine echten Fahrzeugdaten verwendet, sondern fahrzeugprofil.example.json.