From 6016053a92f119d7e74b934c6865ec710adb8d9b Mon Sep 17 00:00:00 2001 From: Tobi G Date: Thu, 3 Sep 2026 01:59:32 +0200 Subject: [PATCH] Kalender ueber EventKit, Orte nach dem Import, Fotos verkleinert, Signalsperre (2026.9.3.1-.3) - Kalendertermine gehen nativ ueber EventKit statt ueber das Teilen-Blatt: Apples Kalender meldet sich beim System gar nicht als Teilen-Ziel an, ein anderes Dateiformat haette also nie geholfen (Abschnitt BS). - Der Rueckblick stoesst jetzt selbst das Screening an, wenn er Fahrten angelegt hat - sonst blieb eine importierte Fahrt ohne Ort liegen, solange das Fahrzeug steht (Abschnitt BT). - Fahrzeugfotos werden vor dem Upload im Browser auf 2000 px/WebP gebracht. Gemessen: 3.099.022 -> 325.994 Bytes. Damit ist die Nachrichtengrenze der WebSocket-Verbindung kein Thema mehr ("connection lost" auf der realen Instanz). Formate, die der Browser weder umwandeln noch anzeigen kann, werden mit klarer Meldung abgelehnt statt roh gespeichert. - Zwei Wechsel des Fahrtsignals in derselben Sekunde kosteten eine ganze Fahrt: das "on" ueberholte den noch laufenden Beende-Vorgang und fiel durch beide Zweige. Neue asyncio-Sperre plus Regressionstest, der ohne sie nachweislich rot ist (Abschnitt BU). Co-Authored-By: Claude Opus 5 --- AGENTS.md | 285 +++++++++++++++++- companion-app/native/KalenderTermin.swift | 135 +++++++++ companion-app/scripts/ios-signieren.sh | 20 ++ .../scripts/ios-teilen-einrichten.mjs | 34 ++- companion-app/src/screens/Reifen.tsx | 17 +- companion-app/src/screens/Service.tsx | 15 +- companion-app/src/screens/bausteine.tsx | 23 +- companion-app/src/screens/bilder.ts | 100 ++++++ companion-app/src/screens/kalender.test.ts | 101 +++++++ companion-app/src/screens/kalender.ts | 114 +++++-- .../audi_dashboard/fahrterkennung.py | 42 ++- .../audi_dashboard/frontend/app/bundle.json | 2 +- .../audi_dashboard/frontend/app/bundle.zip | Bin 266091 -> 266735 bytes .../frontend/audi-dashboard-app.js | 108 ++++++- .../audi_dashboard/historienimport.py | 18 ++ .../audi_dashboard/koordinator.py | 3 + .../audi_dashboard/manifest.json | 2 +- tests/fahrterkennung/test_signalwechsel.py | 131 ++++++++ 18 files changed, 1072 insertions(+), 78 deletions(-) create mode 100644 companion-app/native/KalenderTermin.swift create mode 100644 companion-app/src/screens/kalender.test.ts create mode 100644 tests/fahrterkennung/test_signalwechsel.py diff --git a/AGENTS.md b/AGENTS.md index a195af2..a435313 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,6 +1,9 @@ # AGENTS.md — Project state, review findings, open items, and working rules -**Last updated: 2026-09-02** (Null heisst unbekannt, Momentanwerte nur fuer +**Last updated: 2026-09-03** (Zwei Signalwechsel in derselben Sekunde kosteten eine Fahrt - Sperre +plus Regressionstest, Bildformat-Pruefung, `2026.9.3.3`, Abschnitt BU. Davor: Rueckblick loest Orte +selbst auf, Fotos werden vor dem Upload verkleinert, Abschnitt BT. Davor: Kalendertermine gehen ueber EventKit statt ueber das +Teilen-Blatt, Abschnitt BS. Davor: Null heisst unbekannt, Momentanwerte nur fuer "jetzt", Uebersicht-Symbol vergroessert, `2026.9.2.7`, Abschnitte BN und BO. Davor: Verbrauchsfaktor aus dem Tankbeleg, `2026.9.1.32`, Abschnitt BM. Davor: Reifenzaehler ohne Fahrzeugwechsel, „Raeder“ @@ -8320,9 +8323,9 @@ Zwei verschiedene Termine überschrieben einander damit im Zwischenspeicher. Uml umgeschrieben statt weggeworfen (ein „ö" im Dateinamen muss über die Teilen-Kette prozentkodiert werden — eine Fehlerquelle weniger), und die Übergabe läuft über `files` statt `url`. -**Nicht bestätigt ist, dass das den Kalender-Export repariert.** Der Verdacht bleibt, dass iOS -„Kalender" im Teilen-Blatt gar nicht als Ziel führt; der verlässliche Weg wäre EventKit, also -nativ. Steht zur Prüfung beim Eigentümer. +**Der Dateiname war nicht die Ursache.** Der Verdacht daneben — iOS führt „Kalender" im +Teilen-Blatt gar nicht als Ziel — hat sich am 03.09. bestätigt; gebaut ist jetzt der EventKit-Weg, +siehe Abschnitt BS. ### Was am 02.09. abends offen blieb @@ -8413,3 +8416,277 @@ weil `ios/` jederzeit neu erzeugt werden kann. Alles Native: der Umbau der Übergabe und das Zwischenablage-Plugin. Die drei Teile davor (Backend-Feld, Warteschleife, Anzeige) laufen per OTA. **Rein per OTA ist die Brücke über die App-Gruppe nicht zu reparieren** — egal welchen Weg man nimmt. + +--- + +## BS. Der Kalender kommt über EventKit, weil das Teilen-Blatt ihn nie anbieten kann (2026.9.3.1) + +### Der Befund: es lag nie am Dateinamen und nie am Format + +Gemeldet am 02.09.2026, nachdem der `-.ics`-Fehler (Abschnitt BQ) behoben war und es trotzdem nicht +half: „iOS bietet keinen Kalender an. Schicke ich mir die ics selbst per Mail zu, kann ich diese +anklicken und der Kalender öffnet sich." + +Recherchiert statt geraten, und die Antwort ist eindeutig: **Apples Kalender-App meldet sich beim +System überhaupt nicht als Teilen-Ziel an** — für kein Format. Das Teilen-Blatt zeigt nur Apps mit +einer Share-Erweiterung; damit kann keine App der Welt dort einen Kalender erscheinen lassen. Ein +anderes Format hilft nicht: `.ics` (iCalendar, RFC 5545) ist das einzige, das iOS für Termine kennt. + +Der funktionierende Mail-Weg führte in die Irre. Ein angetippter Anhang öffnet **nicht** das +Teilen-Blatt, sondern die Dokumentvorschau des Systems (Quick Look), die `text/calendar` erkennt und +„Alle hinzufügen" einblendet — ein anderer Mechanismus, den eine App aus dem Teilen-Blatt heraus +nicht erreicht. Belege: [Apple Community](https://discussions.apple.com/thread/255910569), +[HomeBase Software](https://hbase.net/2021/07/31/adding-ics-files-to-calendar-on-ios/) (beide +beschreiben denselben Fall und weichen auf Kurzbefehle aus). + +Drei mögliche Wege standen zur Wahl: EventKit, Quick Look auf die eigene `.ics` (bildet den +Mail-Weg nach), oder `webcal://` — letzteres scheidet aus, weil es ein **Abonnement** ergibt +(schreibgeschützt, wird abgefragt) und nicht einen Termin. Gewählt: EventKit. + +### `native/KalenderTermin.swift` + +Ein eigenes kleines Plugin nach dem Muster von `BelegZwischenablage.swift`, kein Fremdpaket +(`@ebarooni/capacitor-calendar` 8.5.0 wäre kompatibel gewesen, bringt aber Android-Code und +Erinnerungen mit, die hier beide niemand braucht). + +Zwei Entscheidungen darin, die nicht offensichtlich sind: + +* **`EKEventEditViewController` statt `EKEventStore.save`.** Das passt zur Vorgabe des Eigentümers, + dass der Werkstatttermin keine eigene Verwaltung bekommt (Abschnitt BQ): die App liefert „was, + wann, welche Werkstatt" und ist danach raus — bestätigt und gespeichert wird im Kalender. Der + zweite Grund ist die Berechtigung: seit iOS 17 braucht der System-Editor keine (WWDC23, „Discover + Calendar and EventKit"), ein direktes `save()` dagegen schon. +* **`event.calendar` wird bewusst NICHT gesetzt.** Das würde `defaultCalendarForNewEvents` lesen und + damit doch eine Freigabe verlangen; der Editor sucht den Standardkalender selbst. + +Dazu zwei Kleinigkeiten mit Grund: `isModalInPresentation = true`, weil ein Wegwischen den +Delegaten nicht ruft und der wartende Aufruf sonst für immer hinge — und ein noch offener Aufruf +wird beim nächsten Öffnen als „abgebrochen" aufgelöst, statt ein Versprechen nie einzulösen. +Ganztägig mit Erinnerung zwei Tage vorher, also dasselbe wie `DTSTART;VALUE=DATE` und +`TRIGGER:-P2D` der bisherigen Datei. + +### Der Rückfall gilt nur für eine alte .ipa + +`terminUebernehmen()` (früher `kalenderDateiLaden()` — der alte Name beschrieb den Weg, den es nicht +mehr gibt) fällt auf Datei plus Teilen-Blatt **ausschließlich** bei `code === "UNIMPLEMENTED"` +zurück, also wenn die installierte App das Plugin nicht kennt. Jeder andere Fehler wird +durchgereicht und in beiden Aufrufstellen als `.dm-fehler` angezeigt. + +Der Unterschied ist der Punkt: würde jeder Fehler in den Rückfall laufen, verschwände ein echtes +Problem hinter einem Teilen-Blatt, aus dem der Termin nie in den Kalender fände — genau die +Sackgasse, die dieser Abschnitt beseitigt. + +### Panel unverändert, mit Begründung + +Das Panel läuft im Browser, dort lädt die `.ics` ganz normal herunter und das Betriebssystem +übernimmt sie wie jede andere Datei. EventKit gibt es dort nicht. Kein Portierungsbedarf nach der +Paritätsregel — eine echte Ausnahme, keine stillschweigend ausgelassene Arbeit. + +### Zwei Info.plist-Schlüssel, obwohl der Editor nicht fragt + +`ios-signieren.sh` setzt `NSCalendarsWriteOnlyAccessUsageDescription` (iOS 17+) **und** +`NSCalendarsUsageDescription` (älter), aus demselben Grund wie den Standort-Schlüssel: `ios/` ist +gitignored und wird von `npx cap add ios` neu erzeugt. Sie sind die Absicherung für den Fall, dass +EventKit doch einmal fragt — fehlt der passende, beendet iOS die App wortlos, statt eine Rückfrage +zu zeigen. + +`ios-teilen-einrichten.mjs` führt die eigenen Plugins jetzt als Liste (`PLUGIN_DATEIEN`) statt als +Einzelfall; Kopieren und Anhängen an die Sources-Phase des App-Ziels laufen darüber. + +### Verifiziert — und was ausdrücklich nicht + +`tsc --noEmit` sauber, **173/173** Tests grün (vier neue in `src/screens/kalender.test.ts`: +natives Gerät nimmt das Plugin und nicht das Teilen-Blatt, Abbruch ist kein Fehler, fehlendes +Plugin fällt auf die Datei mit korrektem Namen zurück, echter Fehler wird durchgereicht), +`vite build` sauber, `node --check` auf dem Einrichtungsskript, `bash -n` auf dem Signierskript, +Manifest und Bündel beide auf `2026.9.3.1`. + +**Nicht geprüft, weil es ohne Mac nicht geht:** dass der Swift-Code kompiliert und der Editor auf +dem Gerät erscheint. Abschnitt AK ist die Warnung dazu — dort haben vier von fünf Fehlern einen +erfolgreichen Archivlauf erzeugt und sind erst am fertigen `.ipa` aufgefallen. Beim nächsten +`ios-signieren.sh` gehört deshalb geprüft: `KalenderTermin.swift` in der Sources-Phase des +App-Ziels, beide Kalender-Schlüssel im Info.plist des Bündels. + +--- + +## BT. Der Rückblick löst jetzt selbst Orte auf; Fotos werden vor dem Upload verkleinert (2026.9.3.2) + +### Die importierte Fahrt blieb ohne Ort, obwohl beide Koordinaten dastanden + +Gemeldet am 03.09.2026 an der importierten Fahrt vom 02.09. (`t-b2a9170e7403`, 21:22–21:58, +14,0 km). Nachgesehen statt vermutet: `start_lat`/`end_lat` standen da, und **beide Schlüssel lagen +sogar schon im Zwischenspeicher** (`orte.json`: `48.887,11.197` → Eichstätt, `48.842,11.225` → +Adelschlag). Es fehlte also weder Netz noch Nominatim — es fehlte der Auslöser. + +`historienimport.importieren()` rief das Screening nie. Die einzigen Auslöser waren ein Wechsel des +Kilometerstands, ein Neustart und das Nachfassen. Steht das Fahrzeug — nach einem Import über +Vergangenes der Normalfall —, ist keiner davon der Fall, und die frische Fahrt bleibt liegen. Im +Protokoll ist es exakt so zu sehen: `Import abgeschlossen … fahrten_angelegt: 1` um 23:12:23, danach +keine einzige Screening-Zeile mehr. + +**Dass es so gemeint war, sagt der Code selbst:** der Docstring von `_nachfassen_planen()` nennt +„nach einem Rückblick-Import aus Home Assistant" als einen der zwei Fälle, für die das Nachfassen +überhaupt existiert. Ausgelöst hat den Import-Fall nur nie jemand. + +Jetzt: `if fahrten["angelegt"]: await screening.durchfuehren(k)` am Ende von `importieren()`. Nur +bei wirklich angelegten Fahrten — ein zweiter Lauf über denselben Zeitraum legt nichts an und soll +keinen Durchlauf kosten. `from . import screening` ist auf Modulebene unbedenklich: `screening` +zieht `reifen`, `verbrauchskorrektur` und `verlauf`, keines davon `historienimport` (geprüft, nicht +angenommen) — und `dienste.py` lädt `historienimport` beim Setup, ein Zyklus wäre also sofort als +Startfehler sichtbar. + +Damit trägt der Import auch das nach, was sonst am Screening hängt und ihm bisher entging: +Verbrauchseichung, Radzähler, Durchschnittsgeschwindigkeit auf nachträglich verfeinerten Strecken. + +**Verifiziert:** ein Neustart (dessen `_nach_start()`-Screening) füllte beide Orte binnen Sekunden +aus dem Zwischenspeicher — der Beweis, dass an der Fahrt selbst nie etwas fehlte. Der Import läuft +mit der Änderung sauber durch (`fahrten_angelegt: 0` über denselben Zeitraum, kein Traceback, +Screening korrekt **nicht** ausgelöst). **Nicht live gezeigt:** der Zweig selbst bei +`angelegt > 0` — dafür hätte die importierte Fahrt gelöscht und neu importiert werden müssen, und +das Löschen echter Fahrtdaten wurde abgelehnt. Alles, was der Zweig aufruft, ist dagegen bewiesen. + +### Die beiden Fahrten, die zu prüfen waren + +| | `t-0591dace4194` | `t-b2a9170e7403` | +|---|---|---| +| Zeitraum | 02.09. 16:32–21:05 (4 h 34) | 02.09. 21:22–21:58 (36 Min.) | +| Herkunft | live erkannt | Import | +| Strecke | **keine** | 14,0 km (209490 → 209504) | +| Orte | Adelschlag → Eichstätt | Eichstätt → Adelschlag (jetzt) | + +Die lange Fahrt ist **nicht reparierbar, und der Code hat richtig gehandelt**: sie läuft über einen +Fahrzeugwechsel des Dongles. `odo_start` 61823 (RS4), am Ende meldete der Zähler 209490 — das andere +Auto. Die Plausibilitätsprüfung verwarf beide Werte („unmögliche 32381,1 km/h im Schnitt"), statt +147.667 km festzuschreiben. Dass sie 4 h 34 dauert, ist die schon bekannte Lage: das Trip-Signal +meldete ihr Ende nie (siehe „Was am 02.09. abends offen blieb"). + +Eine Strecke ließe sich aus dem GNSS-Zähler holen — die Route mit 111 Punkten liegt vor —, aber +`_gnss_verfeinern()` braucht den Kilometerstand als Anker und läuft deshalb nur auf Fahrten, die +schon eine grobe Strecke haben. Der Rückfall „ohne Anker allein aus GNSS" ist der Vorschlag vom +02.09., den der Eigentümer bis zur Dongle-Prüfung zurückgestellt hat. Unverändert offen. + +Die importierte Fahrt ist in sich stimmig: Zählerdifferenz 14 km bei 36 Minuten, Route Eichstätt → +Adelschlag, also die Rückfahrt. Die absoluten Zählerstände stammen zwar aus dem anderen Fahrzeug, +die Differenz aber aus einer einzigen Fahrt — deshalb greift die Prüfung zu Recht nicht. + +### „Hochladen fehlgeschlagen … connection lost" — und warum es in der Testinstanz ging + +Der Upload läuft als Dienstaufruf über die **WebSocket-Verbindung**, und die hat eine Obergrenze je +Nachricht: aiohttps Vorgabe von 4 MiB, wobei Base64 die Datei vorher um ein Drittel aufbläht — die +Decke liegt also bei rund 3,0 MB Rohbild (in dieser Sitzung gemessen). Über die reale Instanz kommen +Cloudflare und der Vorschaltserver dazu, die enger sein können. Genau daher der Unterschied: dasselbe +Foto ging über localhost durch und riss über die reale Instanz die Verbindung ab. „connection lost" +ist deshalb auch keine Meldung des Backends — dort kam nie etwas an. + +Statt die Grenze zu verschieben (ein eigener HTTP-Endpunkt mit HAs 16-MiB-Decke wäre der andere Weg, +er steht weiter als offener Punkt in Abschnitt BQ) wird das Foto jetzt **vor dem Senden im Browser +verkleinert**: längste Kante 2000 px, WebP bei 0,85. Die größte Fläche, auf der ein Foto je +erscheint, ist die Inhaltsspalte im Breitbildlayout mit 772 px — 2000 px lassen dafür reichlich Luft. + +Drei Rückfälle, alle auf das Original: Format nicht dekodierbar, kein WebP-Encoder, oder das +Ergebnis ist **größer** als das Original (ein bereits sparsam gespeichertes Foto soll nicht ein +zweites Mal verlustbehaftet kodiert werden). Schlechter als vorher kann es dadurch nie werden. + +Nebeneffekt, der eine alte Unsauberkeit mitnimmt: das Backend schreibt die Bytes unverändert unter +einen `.webp`-Namen (`ERLAUBTE_DATEINAMEN` in `bilder.py`). Bisher lag dort also je nach Quelle ein +JPEG oder PNG mit falscher Endung; jetzt ist es wirklich WebP. + +**Live am laufenden Panel nachgewiesen**, nicht gerechnet: ein fotoähnliches 4000×2250-JPEG von +**3.099.022 Bytes** (base64 4.132.032 — schon dicht an der 4-MiB-Decke) durch den echten +`data-bildupload`-Weg geschickt; auf der Platte landeten **325.994 Bytes** als 2000×1125-WebP, ein +Faktor von 9,5. Das Testbild wurde danach über `bild_loeschen` wieder entfernt, der Platz war vorher +leer. + +Verifiziert: `tsc --noEmit` sauber, 173/173 Tests, Panel als **Modul** geparst (Abschnitt AQ), +`audi_ha_test` auf `2026.9.3.2` sauber gestartet, kein Traceback, Bündel und Manifest gleichauf +(sha256 `09c67475…`). + +--- + +## BU. Zwei Signalwechsel in derselben Sekunde kosteten eine ganze Fahrt (2026.9.3.3) + +### Die Frage, die es aufgedeckt hat + +„Warum ist die Fahrt nicht von alleine erschienen und musste importiert werden?" — die richtige +Frage, und die Antwort steht im Verlauf, nicht in einer Vermutung: + +| Ankunft in HA | Trip-Signal | Zündung | +|---|---|---| +| 21:22:12 | **off** | on | +| 21:22:12 | **on** | | +| 21:22:37 | | off, dann on | +| 21:43:15 | | off | +| 21:58:16 | off | | + +Das Gerät hatte gepuffert: der Datensatz „Fahrt zu Ende" (Gerätezeit 21:20:55) und der Datensatz +„Fahrt begonnen" kamen **in derselben Sekunde** an. Das Gerät hat sauber geliefert — der Fehler lag +bei uns. + +### Der Mechanismus + +Home Assistant startet für jeden Zustandswechsel eine **eigene Aufgabe** +(`_fahrtsignal_geaendert` ist eine Koroutine). `zuendung_geaendert()` entscheidet an +`fahrt_start_ts`, ob eine Fahrt läuft — und der Beende-Zweig wartet danach mehrfach: +`_geraetezeit()` bis zu zwei Sekunden auf die Meldezeit, `_echtes_ende()` liest den Verlauf, +`fahrt_beenden()` schreibt und stösst das Screening an. Erst ganz am Ende wurde `fahrt_start_ts` +zurückgesetzt. + +Das `on` traf mitten in diese Wartezeit, sah `fahrt_start_ts` noch gesetzt — also „es läuft eine +Fahrt" — und passte damit in **keinen** der beiden Zweige: weder „an und es läuft keine" noch „aus +und es läuft eine". Es fiel wortlos durch. Danach räumte der Beende-Vorgang das Feld ab, und das +reguläre `off` um 21:58:16 fand keine laufende Fahrt mehr. + +36 Minuten Fahrt, live nie erfasst. Gefunden hat sie nur der Rückblick, weil der den Verlauf als +Ganzes liest, statt auf Ereignisse zu reagieren. + +### Die Sperre, und warum nicht früheres Zurücksetzen + +`k.fahrt_sperre` (`asyncio.Lock`, im Koordinator) umschliesst den Rumpf; der Rumpf selbst steckt +jetzt in `_signalwechsel()`. Entscheidend ist, dass `fahrt_laeuft` **innerhalb** der Sperre gelesen +wird: ein Wechsel, der auf seinen Vorgänger gewartet hat, muss dessen Ergebnis sehen. +`nach_neustart_fortsetzen()` nimmt dieselbe Sperre — der erste Signalwechsel kann eintreffen, +während der Nachlauf noch schreibt. + +Die naheliegende Alternative — `fahrt_start_ts` sofort löschen, statt am Ende — wurde **verworfen**: +fällt der Beende-Vorgang unterwegs aus, bliebe der Zwischenstand dann gelöscht und die Fahrt wäre +verloren. Mit der Sperre bleibt er stehen wie bisher, und der nächste Auslöser schliesst sie nach. + +### Der Test beweist es, statt es zu behaupten + +`tests/fahrterkennung/test_signalwechsel.py` (5 Fälle, `IsolatedAsyncioTestCase`) stellt genau die +Verschränkung nach: die langsamen Teile sind ersetzt, `_geraetezeit` wartet messbar, zwei Aufgaben +laufen gegeneinander. **Gegen den alten Stand nachgewiesen fehlschlagend** — die Sperrzeile im +Container durch `if True:` ersetzt, und der Test meldet exakt das gemeldete Symptom: +`AssertionError: unexpectedly None : nach dem Paar muss die neue Fahrt laufen`. Danach zurückgesetzt, +5/5 grün. + +Merkposten daraus, allgemeiner als dieser eine Fall: **jeder Zustandsbeobachter in dieser +Integration, der awaitet und dabei eigenen Zwischenstand fortschreibt, kann von seinem eigenen +Nachfolger überholt werden.** Home Assistant serialisiert die Rückrufe nicht. + +### Bildformate: was der Browser nicht umwandeln kann, wird jetzt abgelehnt + +Auf die Frage nach den erlaubten Formaten nachgesehen: `accept="image/*"` in beiden Oberflächen, +und `bilder.py` prüft am Inhalt **nichts** — es dekodiert base64 und schreibt die Bytes unter einen +der elf festen `.webp`-Namen. Bis zur Verkleinerung (Abschnitt BT) lag dort also je nach Quelle ein +JPEG mit falscher Endung; aufgefallen ist das nie, weil Browser den Typ am Inhalt erkennen. + +Der Randfall, der dadurch entstand: HEIC. Über die iPhone-Fotoauswahl kommt in der Regel JPEG an, +am Mac im Finder gewählt aber eine `.heic` — und die kann ausser Safari/WKWebView niemand +dekodieren. Der Rückfall auf das Original hätte sie dann roh gespeichert, und das Panel zeigte +hinterher ein leeres Bild ohne jede Erklärung. + +`bildformatIstSicher()` (wortgleich in beiden Codebasen) prüft JPEG/PNG/WebP/GIF/BMP/AVIF am +MIME-Typ, bei leerem Typ an der Endung — dieselbe Doppelprüfung wie `istPdf()`. Ist die Umwandlung +gescheitert **und** das Original nicht anzeigbar, wird der Upload mit klarer Meldung abgelehnt statt +etwas zu speichern, das niemand darstellen kann. Ein anzeigbares Original geht unverändert durch. + +Nebenbei geschlossen: in der App war ein Fehlschlag beim Hochladen bisher **unsichtbar** — der +Aufruf lief als `void hochladen(f)` ins Leere. Jetzt steht die Meldung unter dem Bild. + +Live am laufenden Panel geprüft: eine vorgetäuschte `IMG_4711.heic` erzeugt +„Dieses Bildformat kann der Browser nicht umwandeln (image/heic). Bitte das Foto als JPEG, PNG oder +WebP sichern und noch einmal versuchen." — und auf der Platte entsteht **nichts**. + +Verifiziert: 5/5 Backend-Tests (und ohne die Sperre nachweislich rot), `tsc --noEmit` sauber, +173/173 App-Tests, Panel als Modul geparst, `audi_ha_test` auf `2026.9.3.3` sauber gestartet. diff --git a/companion-app/native/KalenderTermin.swift b/companion-app/native/KalenderTermin.swift new file mode 100644 index 0000000..c47c4b4 --- /dev/null +++ b/companion-app/native/KalenderTermin.swift @@ -0,0 +1,135 @@ +// +// KalenderTermin.swift +// DataMetric360 +// +// Legt einen Termin über EventKit an — der Weg, den das Teilen-Blatt nicht +// anbietet. +// +// WARUM ES DAS BRAUCHT +// -------------------- +// Bis zum 03.09.2026 ging der Werkstatt- und der Radwechseltermin als +// .ics-Datei ins iOS-Teilen-Blatt. Dort erscheint nie ein Kalender, und das +// liegt nicht an der Datei: Apples Kalender-App meldet sich beim System +// überhaupt nicht als Teilen-Ziel an, für kein Format. Das Blatt kann sie +// deshalb gar nicht zeigen, egal wie die Datei aussieht. +// +// Dass ein per Mail geschickter Anhang funktioniert, führt in die Irre: dort +// öffnet nicht das Teilen-Blatt, sondern die Dokumentvorschau des Systems +// (Quick Look). Die erkennt text/calendar und blendet „Alle hinzufügen" ein. +// Ein anderer Mechanismus, den eine App nicht aus dem Teilen-Blatt heraus +// erreicht. Gemeldet vom Eigentümer am 02.09.2026. +// +// EventKit umgeht beides: der Termin geht direkt an den Kalender. +// +// WARUM DER SYSTEM-EDITOR UND NICHT `EKEventStore.save` +// ----------------------------------------------------- +// `EKEventEditViewController` zeigt den fertig ausgefüllten Termin und lässt +// ihn den Menschen bestätigen. Das passt zur Vorgabe des Eigentümers, dass +// der Werkstatttermin keine eigene Verwaltung bekommt (siehe Abschnitt BQ in +// AGENTS.md): die App liefert „was, wann, welche Werkstatt" und ist danach +// raus — gespeichert wird im Kalender, nicht bei uns. +// +// Der zweite Grund ist die Berechtigung. Seit iOS 17 braucht der System- +// Editor keine (WWDC23, „Discover Calendar and EventKit"): er läuft außerhalb +// unseres Zugriffs, wir übergeben nur den Entwurf. Ein direktes `save()` +// bräuchte dagegen eine Freigabe samt Rückfrage. Deshalb wird hier auch +// `event.calendar` NICHT gesetzt — das würde `defaultCalendarForNewEvents` +// lesen und damit doch eine Freigabe verlangen; der Editor sucht den +// Standardkalender selbst. +// +// DIESE DATEI IST VERSIONIERT, ios/ NICHT. +// `npx cap add ios` erzeugt den nativen Ordner neu und würde alles darin +// verlieren. scripts/ios-teilen-einrichten.mjs kopiert sie bei jedem Bau +// wieder hinein und hängt sie an die Sources-Phase des App-Ziels. +// + +import Capacitor +import EventKit +import EventKitUI +import Foundation +import UIKit + +@objc(KalenderTerminPlugin) +public class KalenderTerminPlugin: CAPPlugin, CAPBridgedPlugin, EKEventEditViewDelegate { + public let identifier = "KalenderTerminPlugin" + public let jsName = "KalenderTermin" + public let pluginMethods: [CAPPluginMethod] = [ + CAPPluginMethod(name: "terminAnlegen", returnType: CAPPluginReturnPromise) + ] + + /// Muss den Editor überleben — eine lokale Instanz wäre beim Erscheinen + /// des Blatts schon wieder abgeräumt. + private let speicher = EKEventStore() + + /// Der Aufruf wartet, bis der Mensch im Editor entschieden hat. + private var offenerAufruf: CAPPluginCall? + + @objc func terminAnlegen(_ call: CAPPluginCall) { + guard let titel = call.getString("titel"), !titel.isEmpty else { + return call.reject("Ohne Titel kein Termin.") + } + guard let isoTag = call.getString("isoTag"), let tag = tagAus(isoTag) else { + return call.reject("Kein gültiges Datum (erwartet JJJJ-MM-TT).") + } + + let termin = EKEvent(eventStore: speicher) + termin.title = titel + termin.isAllDay = true + // Ganztägig heißt für EventKit: Beginn und Ende am selben Tag. Deckt + // sich mit dem DTSTART;VALUE=DATE der bisherigen .ics. + termin.startDate = tag + termin.endDate = tag + if let ort = call.getString("ort"), !ort.isEmpty { termin.location = ort } + if let text = call.getString("beschreibung"), !text.isEmpty { termin.notes = text } + // Zwei Tage vorher erinnern - dieselbe Vorwarnzeit wie im TRIGGER:-P2D + // der .ics, die dieser Weg ablöst. + termin.addAlarm(EKAlarm(relativeOffset: -2 * 24 * 60 * 60)) + + DispatchQueue.main.async { [weak self] in + guard let self else { return } + guard let eltern = self.bridge?.viewController else { + return call.reject("Kein Fenster zum Anzeigen des Kalender-Editors.") + } + + // Ein noch offener Aufruf kann nur von einem Editor stammen, der + // ohne Rueckmeldung verschwunden ist. Ihn stehen zu lassen hiesse, + // ein Versprechen nie einzuloesen. + self.offenerAufruf?.resolve(["status": "abgebrochen"]) + self.offenerAufruf = call + + let editor = EKEventEditViewController() + editor.event = termin + editor.eventStore = self.speicher + editor.editViewDelegate = self + // Wegwischen wuerde den Delegaten nicht rufen und den Aufruf oben + // haengen lassen; so bleiben nur "Hinzufuegen" und "Abbrechen". + editor.isModalInPresentation = true + eltern.present(editor, animated: true) + } + } + + public func eventEditViewController( + _ controller: EKEventEditViewController, + didCompleteWith action: EKEventEditViewAction + ) { + controller.dismiss(animated: true) + let aufruf = offenerAufruf + offenerAufruf = nil + // .deleted gibt es hier nicht (der Termin ist neu), zaehlt aber wie ein + // Abbruch: gespeichert wurde nichts. + aufruf?.resolve(["status": action == .saved ? "gespeichert" : "abgebrochen"]) + } + + /// „2027-03-14" -> Mitternacht dieses Tages in der Zeitzone des Geräts. + private func tagAus(_ isoTag: String) -> Date? { + let teile = isoTag.split(separator: "-").compactMap { Int($0) } + guard teile.count == 3 else { return nil } + var komponenten = DateComponents() + komponenten.year = teile[0] + komponenten.month = teile[1] + komponenten.day = teile[2] + var kalender = Calendar(identifier: .gregorian) + kalender.timeZone = TimeZone.current + return kalender.date(from: komponenten) + } +} diff --git a/companion-app/scripts/ios-signieren.sh b/companion-app/scripts/ios-signieren.sh index 5acb3d1..12fec5d 100755 --- a/companion-app/scripts/ios-signieren.sh +++ b/companion-app/scripts/ios-signieren.sh @@ -106,6 +106,26 @@ fi exit 1 } +# Kalender-Berechtigung, aus demselben Grund an derselben Stelle. +# +# Warum ZWEI Schluessel: seit iOS 17 gibt es einen eigenen Nur-Schreiben-Zugriff +# (NSCalendarsWriteOnlyAccessUsageDescription), aeltere Fassungen kennen nur den +# alten Sammelschluessel. Der System-Editor (native/KalenderTermin.swift) fragt +# auf iOS 17+ von sich aus gar nicht - die Schluessel sind die Absicherung fuer +# den Fall, dass EventKit doch einmal fragt. Fehlt der passende, beendet iOS die +# App wortlos, statt eine Rueckfrage zu zeigen. +echo "==> Kalender-Berechtigung eintragen" +KALENDERGRUND="Traegt Werkstatt- und Wechseltermine in deinen Kalender ein." +for SCHLUESSEL in NSCalendarsWriteOnlyAccessUsageDescription NSCalendarsUsageDescription; do + if ! /usr/libexec/PlistBuddy -c "Set :$SCHLUESSEL $KALENDERGRUND" "$PLIST" 2>/dev/null; then + /usr/libexec/PlistBuddy -c "Add :$SCHLUESSEL string $KALENDERGRUND" "$PLIST" + fi + /usr/libexec/PlistBuddy -c "Print :$SCHLUESSEL" "$PLIST" >/dev/null || { + echo "FEHLER: $SCHLUESSEL liess sich nicht setzen." >&2 + exit 1 + } +done + # Share-Erweiterung ins Xcode-Projekt haengen. # # Aus demselben Grund wie die Team-Kennung und der Standort-Schluessel oben: diff --git a/companion-app/scripts/ios-teilen-einrichten.mjs b/companion-app/scripts/ios-teilen-einrichten.mjs index 9a85546..44a9024 100644 --- a/companion-app/scripts/ios-teilen-einrichten.mjs +++ b/companion-app/scripts/ios-teilen-einrichten.mjs @@ -53,6 +53,11 @@ const ZIEL_NAME = "DataMetric360Share" const BUNDLE_ID = "app.datametric360.teilen" const GRUPPE = "group.app.datametric360" +/* Eigene Capacitor-Plugins der App - je eine Swift-Datei, die neben der + Erweiterung ins App-Ziel gehört. Sie liegen aus demselben Grund unter + native/ wie alles andere hier: ios/ ist gitignored und wird neu erzeugt. */ +const PLUGIN_DATEIEN = ["BelegZwischenablage.swift", "KalenderTermin.swift"] + /** pbxproj-Wert ohne die optionalen Anfuehrungszeichen. */ const entquotet = (wert) => String(wert ?? "").replace(/^"|"$/g, "") const SCHEMA = "datametric360" @@ -87,10 +92,9 @@ for (const datei of ["ShareViewController.swift", "Info.plist", `${ZIEL_NAME}.en copyFileSync(join(quelleErw, datei), join(zielErw, datei)) } copyFileSync(join(APP, "native", "App.entitlements"), join(iosApp, "App", "App.entitlements")) -copyFileSync( - join(APP, "native", "BelegZwischenablage.swift"), - join(iosApp, "App", "BelegZwischenablage.swift"), -) +for (const datei of PLUGIN_DATEIEN) { + copyFileSync(join(APP, "native", datei), join(iosApp, "App", datei)) +} melden(`Quellen nach ios/App/${ZIEL_NAME}/ kopiert`) /* ------------------------------------------------------------- URL-Schema */ @@ -129,24 +133,28 @@ if (!appPlist.includes("CFBundleURLTypes")) { const projekt = xcode.project(pbxPfad) projekt.parseSync() -/* ------------------------------------------- Zwischenablage-Plugin (App-Ziel) +/* ------------------------------------------------ Eigene Plugins (App-Ziel) Steht VOR dem Ausstieg unten: die Erweiterung ist nach dem ersten Lauf - vorhanden, das Plugin muss trotzdem bei jedem Bau geprüft werden - ios/ + vorhanden, die Plugins müssen trotzdem bei jedem Bau geprüft werden - ios/ wird von `npx cap add ios` jederzeit neu erzeugt. `addSourceFile` ohne Gruppe hängt die Datei an die ERSTE Sources-Phase des Projekts, und das ist die des App-Ziels - genau die richtige. (Mit Gruppe landete die Datei nur im Navigator; daran ist am 02.09.2026 die Erweiterung ohne Programm entstanden, siehe unten.) */ -const PLUGIN_DATEI = "BelegZwischenablage.swift" -const schonDrin = JSON.stringify(projekt.pbxSourcesBuildPhaseObj()).includes(PLUGIN_DATEI) -if (schonDrin) { - melden("Zwischenablage-Plugin war bereits im App-Ziel") -} else { - projekt.addSourceFile(`App/${PLUGIN_DATEI}`) +let pluginsGeaendert = false +for (const datei of PLUGIN_DATEIEN) { + if (JSON.stringify(projekt.pbxSourcesBuildPhaseObj()).includes(datei)) { + melden(`${datei} war bereits im App-Ziel`) + continue + } + projekt.addSourceFile(`App/${datei}`) + melden(`${datei} ins App-Ziel gehängt`) + pluginsGeaendert = true +} +if (pluginsGeaendert) { writeFileSync(pbxPfad, projekt.writeSync()) - melden("Zwischenablage-Plugin ins App-Ziel gehängt") // Nach dem Schreiben neu einlesen: der Rest des Skripts arbeitet sonst auf // einem Stand, der die eigene Änderung nicht kennt. projekt.parseSync() diff --git a/companion-app/src/screens/Reifen.tsx b/companion-app/src/screens/Reifen.tsx index b126401..3db70f6 100644 --- a/companion-app/src/screens/Reifen.tsx +++ b/companion-app/src/screens/Reifen.tsx @@ -18,7 +18,7 @@ import { datum, de, deOderStrich } from "../format" import { SymbolEdit, SymbolPaket, SymbolZahnradVoll } from "../symbole" import { BildMitMenue, WischLoeschen, Wertzeile, Werteliste, bestaetigen } from "./bausteine" import { Datumsfeld } from "./Datumsfeld" -import { kalenderDateiLaden } from "./kalender" +import { terminUebernehmen } from "./kalender" type SatzSchluessel = "sommer" | "winter" @@ -30,6 +30,7 @@ export function Reifen() { const [kmOffen, setzeKmOffen] = useState(null) const [kmEntwurf, setzeKmEntwurf] = useState("") const [wechselDatum, setzeWechselDatum] = useState(null) + const [kalenderFehler, setzeKalenderFehler] = useState(null) if (!fahrzeug) return null @@ -51,6 +52,7 @@ export function Reifen() { } const kalenderUebernehmen = async () => { + setzeKalenderFehler(null) await profilSpeichern({ fahrzeug: { ...fahrzeug, @@ -58,11 +60,13 @@ export function Reifen() { }, }) const ziel = aktiv === "Sommer" ? "Winter" : "Sommer" - await kalenderDateiLaden( - "Reifenwechsel", - wechselDatumAnzeige, - `Wechsel auf ${ziel}reifen`, - ) + try { + await terminUebernehmen("Reifenwechsel", wechselDatumAnzeige, `Wechsel auf ${ziel}reifen`) + } catch (fehler) { + setzeKalenderFehler( + fehler instanceof Error ? fehler.message : "Der Termin ließ sich nicht übergeben.", + ) + } } const kmSpeichern = async (satzSchluessel: SatzSchluessel) => { @@ -309,6 +313,7 @@ export function Reifen() { In den Kalender übernehmen + {kalenderFehler &&

{kalenderFehler}

} {satzTile("sommer")} diff --git a/companion-app/src/screens/Service.tsx b/companion-app/src/screens/Service.tsx index 3ad72be..1c050c5 100644 --- a/companion-app/src/screens/Service.tsx +++ b/companion-app/src/screens/Service.tsx @@ -32,7 +32,7 @@ import { bestaetigen, } from "./bausteine" import { Datumsfeld } from "./Datumsfeld" -import { kalenderDateiLaden } from "./kalender" +import { terminUebernehmen } from "./kalender" import { vcardParsen } from "./vcard" export interface ServicebuchEintrag { @@ -270,6 +270,7 @@ function TerminVereinbaren() { Sobald jemand ein Datum wählt, bleibt es stehen, auch wenn die Art wechselt - sonst würde die eigene Eingabe stillschweigend überschrieben. */ const [eigenesDatum, setzeEigenesDatum] = useState(null) + const [kalenderFehler, setzeKalenderFehler] = useState(null) if (!fahrzeug) return null @@ -319,17 +320,23 @@ function TerminVereinbaren() { Panel (`ics()` dort). Fehlt das Autohaus, bleiben beide Felder leer und der Termin trägt nur "was" und "wann". */} - void kalenderDateiLaden( + onClick={() => { + setzeKalenderFehler(null) + void terminUebernehmen( `${einstellungen?.fahrzeugtitel ?? "Fahrzeug"}: ${art}`, datumWert, autohaus.adresse ?? "", autohaus.name ?? "", + ).catch((fehler) => + setzeKalenderFehler( + fehler instanceof Error ? fehler.message : "Der Termin ließ sich nicht übergeben.", + ), ) - } + }} > In den Kalender übernehmen + {kalenderFehler &&

{kalenderFehler}

} ) } diff --git a/companion-app/src/screens/bausteine.tsx b/companion-app/src/screens/bausteine.tsx index b43698c..3b1954c 100644 --- a/companion-app/src/screens/bausteine.tsx +++ b/companion-app/src/screens/bausteine.tsx @@ -11,7 +11,7 @@ import type { SicherheitsPunkt } from "../api" import { useDaten } from "../daten/DatenKontext" import { SymbolZahnradVoll } from "../symbole" import { Bild } from "./Bild" -import { bildVersionErneuern } from "./bilder" +import { bildAlsBase64, bildVerkleinern, bildVersionErneuern } from "./bilder" /** Kraftstoffsorten zur Auswahl - dieselbe feste Liste wie `KRAFTSTOFFSORTEN` im Panel, geteilt zwischen Tanken.tsx (Neuanlegen) und TankDetail.tsx @@ -96,15 +96,16 @@ export function BildMitMenue({ }) { const { api, jetztAktualisieren } = useDaten() const [offen, setzeOffen] = useState(false) + /* Ein Fehlschlag beim Hochladen war bisher unsichtbar: der Aufruf lief als + `void hochladen(f)` ins Leere. Jetzt steht er unter dem Bild. */ + const [fehler, setzeFehler] = useState(null) const datei_ = useRef(null) const hochladen = async (gewaehlt: File) => { - const base64 = await new Promise((fertig, fehler) => { - const leser = new FileReader() - leser.onload = () => fertig(String(leser.result).split(",")[1] ?? "") - leser.onerror = () => fehler(leser.error) - leser.readAsDataURL(gewaehlt) - }) + setzeFehler(null) + /* Verkleinern vor dem Senden - Begründung in bilder.ts. Ein Foto direkt + aus der Kamera sprengt sonst die Nachrichtengrenze der Verbindung. */ + const base64 = await bildAlsBase64(await bildVerkleinern(gewaehlt)) await api.bildHochladen(datei, base64) /* Ohne diese beiden Zeilen bliebe das alte Foto stehen: die Adresse ist unveraendert, und Home Assistant liefert /local/ mit 31 Tagen @@ -133,10 +134,16 @@ export function BildMitMenue({ hidden onChange={(e) => { const f = e.target.files?.[0] - if (f) void hochladen(f) + if (f) + void hochladen(f).catch((problem) => + setzeFehler( + problem instanceof Error ? problem.message : "Hochladen fehlgeschlagen.", + ), + ) e.target.value = "" }} /> + {fehler &&

{fehler}

} {/* Auswahlblatt statt schwebendem Menü: zwei Wege, die der Nutzer selbst angestoßen hat, plus ein abgesetztes Abbrechen - genau der Zuschnitt, für den Apple das Aktionsblatt vorsieht. Das frühere diff --git a/companion-app/src/screens/bilder.ts b/companion-app/src/screens/bilder.ts index 857e530..d53419f 100644 --- a/companion-app/src/screens/bilder.ts +++ b/companion-app/src/screens/bilder.ts @@ -129,3 +129,103 @@ export function markenlogoUrl(): string | undefined { if (!basis) return undefined return `${basis}/audi_dashboard_static/bilder/shell-logo.svg` } + +/* Ein Fahrzeugfoto wird im Browser verkleinert, bevor es hochgeladen wird. + + WARUM: der Upload läuft als Dienstaufruf über die WebSocket-Verbindung, und + die hat eine Obergrenze je Nachricht - aiohttps Vorgabe sind 4 MiB, und + Base64 bläht die Datei vorher um ein Drittel auf. Über die reale Instanz + kommt noch Cloudflare samt Vorschaltserver dazu, die enger sein können. + Genau das war der Befund vom 03.09.2026: dasselbe Cockpit-Foto ging in der + Testinstanz (localhost) durch und scheiterte über die reale Instanz mit + "connection lost" - eine abgerissene Verbindung, kein Fehler des Backends, + deshalb auch keine brauchbare Meldung. + + Verkleinern löst das an der Wurzel statt die Grenze zu verschieben: die + größte Fläche, auf der ein Foto je erscheint, ist die Inhaltsspalte im + Breitbildlayout mit 772px. 2000px lange Kante lassen dafür reichlich Luft + (auch für Bildschirme mit doppelter Punktdichte), und WebP bei 0,85 bringt + ein solches Foto typischerweise auf einige hundert Kilobyte. + + Fällt irgendein Schritt aus (Format nicht dekodierbar, kein WebP-Encoder, + Ergebnis größer als das Original), bleibt es beim Original - schlechter als + vorher wird es dadurch nie. Wortgleich im Panel. */ +const MAX_KANTE = 2000 +const QUALITAET = 0.85 + +export function bildAlsBase64(blob: Blob): Promise { + return new Promise((fertig, fehler) => { + const leser = new FileReader() + leser.onload = () => fertig(String(leser.result).split(",")[1] ?? "") + leser.onerror = () => fehler(leser.error) + leser.readAsDataURL(blob) + }) +} + + +/* Formate, die jeder Browser dieser App wirklich anzeigen kann. + + Wichtig, weil das Backend nichts prüft: `bilder.py` schreibt die Bytes roh + unter einen der elf festen `.webp`-Namen. Ein Foto, das der Browser nicht + umwandeln konnte und das er auch nicht anzeigen kann, läge danach als + Bilddatei auf der Platte, die niemand darstellt - ohne Meldung. + + Der praktische Fall ist HEIC: die iPhone-Fotoauswahl liefert in der Regel + JPEG, am Mac im Finder gewählt kommt aber eine `.heic` an, und die kann + ausser Safari/WKWebView niemand dekodieren. */ +const SICHERE_TYPEN = /^image\/(jpeg|png|webp|gif|bmp|avif)$/i +const SICHERE_ENDUNGEN = /\.(jpe?g|png|webp|gif|bmp|avif)$/i + +export function bildformatIstSicher(datei: File): boolean { + // Der MIME-Typ zählt, wenn er da ist. Aus dem Explorer gezogene Dateien + // kommen je nach Quelle mit leerem `type` an - dann die Endung, dieselbe + // Doppelprüfung wie bei `istPdf()` im Panel. + if (datei.type) return SICHERE_TYPEN.test(datei.type) + return SICHERE_ENDUNGEN.test(datei.name) +} + +export class BildformatFehler extends Error {} + +export async function bildVerkleinern(datei: File): Promise { + let klein: Blob | null = null + const adresse = URL.createObjectURL(datei) + try { + const bild = await new Promise((fertig, fehler) => { + const i = new Image() + i.onload = () => fertig(i) + i.onerror = () => fehler(new Error("Bild nicht lesbar")) + i.src = adresse + }) + const kante = Math.max(bild.naturalWidth, bild.naturalHeight) + if (kante) { + const faktor = Math.min(1, MAX_KANTE / kante) + const flaeche = document.createElement("canvas") + flaeche.width = Math.round(bild.naturalWidth * faktor) + flaeche.height = Math.round(bild.naturalHeight * faktor) + flaeche.getContext("2d")?.drawImage(bild, 0, 0, flaeche.width, flaeche.height) + klein = await new Promise((fertig) => + flaeche.toBlob(fertig, "image/webp", QUALITAET), + ) + } + } catch (fehler) { + console.warn("Bild konnte nicht umgewandelt werden", fehler) + } finally { + URL.revokeObjectURL(adresse) + } + + // Ein bereits sparsam gespeichertes Foto soll nicht ein zweites Mal durch + // eine verlustbehaftete Kodierung - das kostet Qualität ohne Gewinn. + if (klein && klein.size < datei.size) return klein + + /* Umwandeln ging nicht (oder brachte nichts) - dann muss wenigstens das + Original anzeigbar sein. Sonst lieber jetzt eine klare Meldung als + hinterher ein leeres Bild, dessen Ursache niemand mehr sieht. */ + if (!bildformatIstSicher(datei)) { + const art = datei.type || datei.name.split(".").pop() || "unbekannt" + throw new BildformatFehler( + `Dieses Bildformat kann der Browser nicht umwandeln (${art}). ` + + "Bitte das Foto als JPEG, PNG oder WebP sichern und noch einmal versuchen.", + ) + } + return datei +} diff --git a/companion-app/src/screens/kalender.test.ts b/companion-app/src/screens/kalender.test.ts new file mode 100644 index 0000000..4ceeb85 --- /dev/null +++ b/companion-app/src/screens/kalender.test.ts @@ -0,0 +1,101 @@ +/** + * Der Weg eines Termins auf dem Gerät. + * + * Geprüft wird die Entscheidung, nicht EventKit: dass ein natives Gerät das + * Plugin nimmt und NICHT das Teilen-Blatt (aus dem nie ein Kalender kam, siehe + * Kopf von kalender.ts), dass eine .ipa ohne das Plugin auf die Datei + * zurückfällt, und dass ein echter Fehler nicht hinter diesem Rückfall + * verschwindet. + * + * `@capacitor/*` wird ersetzt: sonst meldet `isNativePlatform()` "Browser" und + * die native Verzweigung wird nie betreten. + */ + +import { beforeEach, describe, expect, it, vi } from "vitest" + +const { nativ, dateien, teilen } = vi.hoisted(() => ({ + nativ: { terminAnlegen: vi.fn() }, + dateien: { writeFile: vi.fn() }, + teilen: { share: vi.fn() }, +})) + +vi.mock("@capacitor/core", () => ({ + Capacitor: { isNativePlatform: () => true }, + registerPlugin: () => nativ, +})) + +vi.mock("@capacitor/filesystem", () => ({ + Filesystem: dateien, + Directory: { Cache: "CACHE" }, + Encoding: { UTF8: "utf8" }, +})) + +vi.mock("@capacitor/share", () => ({ Share: teilen })) + +/** Was Capacitor wirft, wenn die installierte App das Plugin nicht kennt. */ +function pluginFehltFehler(): Error { + const fehler = new Error('KalenderTermin does not have an implementation of "terminAnlegen".') + ;(fehler as Error & { code: string }).code = "UNIMPLEMENTED" + return fehler +} + +beforeEach(() => { + vi.clearAllMocks() + dateien.writeFile.mockResolvedValue({ uri: "file:///cache/termin.ics" }) + teilen.share.mockResolvedValue(undefined) +}) + +describe("Termin an den Kalender übergeben", () => { + it("nimmt auf dem Gerät das Plugin und nicht das Teilen-Blatt", async () => { + nativ.terminAnlegen.mockResolvedValue({ status: "gespeichert" }) + const { terminUebernehmen } = await import("./kalender") + + await terminUebernehmen("RS4: Ölwechsel", "2027-03-14", "Musterstr. 1", "Autohaus Muster") + + expect(nativ.terminAnlegen).toHaveBeenCalledWith({ + titel: "RS4: Ölwechsel", + isoTag: "2027-03-14", + beschreibung: "Musterstr. 1", + ort: "Autohaus Muster", + }) + expect(teilen.share).not.toHaveBeenCalled() + expect(dateien.writeFile).not.toHaveBeenCalled() + }) + + /* Ein Abbruch im System-Editor ist kein Fehler - die Funktion kehrt still + zurück, damit die Oberfläche nichts Rotes zeigt. */ + it("behandelt einen Abbruch wie einen Erfolg", async () => { + nativ.terminAnlegen.mockResolvedValue({ status: "abgebrochen" }) + const { terminUebernehmen } = await import("./kalender") + + await expect(terminUebernehmen("Reifenwechsel", "2026-10-15")).resolves.toBeUndefined() + expect(teilen.share).not.toHaveBeenCalled() + }) + + it("fällt auf die Datei zurück, wenn die App das Plugin nicht kennt", async () => { + nativ.terminAnlegen.mockRejectedValue(pluginFehltFehler()) + const { terminUebernehmen } = await import("./kalender") + + await terminUebernehmen("Audi RS4: Inspektion", "2027-01-01") + + expect(dateien.writeFile).toHaveBeenCalledWith( + expect.objectContaining({ path: "audi-rs4-inspektion.ics" }), + ) + expect(teilen.share).toHaveBeenCalledWith( + expect.objectContaining({ files: ["file:///cache/termin.ics"] }), + ) + }) + + /* Der Rückfall gilt NUR für die fehlende Umsetzung. Sonst verschwände ein + echtes Problem hinter einem Teilen-Blatt, aus dem der Termin nie in den + Kalender fände. */ + it("reicht einen echten Fehler durch, statt zu teilen", async () => { + nativ.terminAnlegen.mockRejectedValue(new Error("Kein Fenster für den Kalender-Editor.")) + const { terminUebernehmen } = await import("./kalender") + + await expect(terminUebernehmen("Reifenwechsel", "2026-10-15")).rejects.toThrow( + "Kein Fenster für den Kalender-Editor.", + ) + expect(teilen.share).not.toHaveBeenCalled() + }) +}) diff --git a/companion-app/src/screens/kalender.ts b/companion-app/src/screens/kalender.ts index 53f2784..04cbb66 100644 --- a/companion-app/src/screens/kalender.ts +++ b/companion-app/src/screens/kalender.ts @@ -1,26 +1,59 @@ /** - * Termine als Kalenderdatei. Portiert aus `ics()` im alten Panel. + * Termine an den Kalender übergeben. * - * Erzeugt eine .ics-Datei ohne Server, mit Erinnerung zwei Tage vorher. + * DREI WEGE, WEIL DREI UMGEBUNGEN + * ------------------------------- + * **Auf dem Gerät** geht der Termin über EventKit direkt in den Kalender + * (native/KalenderTermin.swift): der System-Editor erscheint fertig ausgefüllt, + * ein Tipp auf „Hinzufügen" genügt. * - * ZWEI WEGE, WEIL EIN DOWNLOAD IN DER APP NICHT ANKOMMT - * ----------------------------------------------------- - * Im Browser und im HA-Panel genügt ein `` mit einer - * Blob-Adresse. In der nativen Hülle nicht: **WKWebView ignoriert das - * `download`-Attribut**, der Klick läuft ins Leere und es passiert sichtbar - * nichts — genau so gemeldet („Wechseltermin in Kalender übernehmen klappt - * nicht", 2026-08-31). + * Vorher lief auch dort der Datei-Weg, und der konnte nie ankommen. Nicht wegen + * der Datei: **Apples Kalender-App meldet sich beim System gar nicht als + * Teilen-Ziel an**, für kein Format — das Teilen-Blatt kann sie deshalb + * überhaupt nicht anbieten. Dass ein per Mail geschickter Anhang funktioniert, + * führt in die Irre; dort öffnet die Dokumentvorschau des Systems (Quick Look) + * mit ihrem eigenen „Alle hinzufügen", nicht das Teilen-Blatt. Gemeldet vom + * Eigentümer am 02.09.2026, nachdem der Dateiname am selben Tag repariert war + * und es trotzdem nicht half. * - * Auf dem Gerät geht die Datei deshalb ins temporäre Verzeichnis und von - * dort ins iOS-Teilen-Blatt, aus dem „Zu Kalender hinzufügen" kommt. Das ist - * auch der ehrlichere Ablauf: man sieht, wohin der Termin geht, statt dass - * eine Datei stillschweigend irgendwo landet. + * **Der Datei-Weg bleibt als Rückfall** für eine .ipa von vor dem 03.09.2026, + * die das Plugin noch nicht kennt. Ein Kalender steht darin weiterhin nicht zur + * Auswahl, aber die Datei lässt sich in „Dateien" sichern und von dort öffnen — + * besser als ein Knopf, der gar nichts tut. + * + * **Im Browser und im HA-Panel** bleibt es beim gewöhnlichen Download; dort + * übernimmt das Betriebssystem die .ics wie jede andere Datei. (In der nativen + * Hülle ginge das nicht: **WKWebView ignoriert das `download`-Attribut**, der + * Klick lief sichtbar ins Leere — so gemeldet am 2026-08-31.) */ -import { Capacitor } from "@capacitor/core" +import { Capacitor, registerPlugin } from "@capacitor/core" import { Directory, Encoding, Filesystem } from "@capacitor/filesystem" import { Share } from "@capacitor/share" +interface KalenderTermin { + /** `status`: "gespeichert" oder "abgebrochen" - ein Abbruch ist kein Fehler. */ + terminAnlegen(angaben: { + titel: string + isoTag: string + beschreibung: string + ort: string + }): Promise<{ status: string }> +} + +/** Muss zu `jsName` in KalenderTermin.swift passen. */ +const Nativ = registerPlugin("KalenderTermin") + +/** + * Unterscheidet „dieses Gerät kennt das Plugin nicht" von einem echten Fehler. + * Nur im ersten Fall ist der Rückfall auf die Datei richtig - sonst verschwände + * ein echtes Problem hinter einem Teilen-Blatt, aus dem der Termin nie in den + * Kalender fände. + */ +function pluginFehlt(fehler: unknown): boolean { + return (fehler as { code?: string } | null)?.code === "UNIMPLEMENTED" +} + function zeilenUmbruch(text: string): string { return text.replace(/\\/g, "\\\\").replace(/;/g, "\\;").replace(/,/g, "\\,").replace(/\n/g, "\\n") } @@ -104,37 +137,52 @@ function dateiname(titel: string): string { return `${stamm || "termin"}.ics` } -export async function kalenderDateiLaden( +/** Der Rückfall für Geräte ohne das Plugin - siehe Kopf dieser Datei. */ +async function ueberTeilenBlatt( + titel: string, + isoTag: string, + beschreibung: string, + ort: string, +): Promise { + /* Cache statt Documents: der Termin ist im Kalender aufgehoben, sobald er + dort ist - die Zwischendatei muss nicht überleben, und iOS darf den + Cache jederzeit räumen. */ + const geschrieben = await Filesystem.writeFile({ + path: dateiname(titel), + data: kalenderDatei(titel, isoTag, beschreibung, ort), + directory: Directory.Cache, + encoding: Encoding.UTF8, + }) + /* files statt url: beides landet im Plugin als URL in den activityItems, + aber `files` ist der dokumentierte Weg für lokale Dateien - `url` ist + für Links gedacht. dialogTitle ist Android-only und schadet hier nicht. */ + await Share.share({ title: titel, files: [geschrieben.uri], dialogTitle: titel }) +} + +export async function terminUebernehmen( titel: string, isoTag: string, beschreibung = "", ort = "", ): Promise { - const inhalt = kalenderDatei(titel, isoTag, beschreibung, ort) - const name = dateiname(titel) - if (Capacitor.isNativePlatform()) { - /* Cache statt Documents: der Termin ist im Kalender aufgehoben, sobald er - dort ist - die Zwischendatei muss nicht überleben, und iOS darf den - Cache jederzeit räumen. */ - const geschrieben = await Filesystem.writeFile({ - path: name, - data: inhalt, - directory: Directory.Cache, - encoding: Encoding.UTF8, - }) - /* files statt url: beides landet im Plugin als URL in den activityItems, - aber `files` ist der dokumentierte Weg für lokale Dateien - `url` ist - für Links gedacht. dialogTitle ist Android-only und schadet hier nicht. */ - await Share.share({ title: titel, files: [geschrieben.uri], dialogTitle: titel }) + try { + await Nativ.terminAnlegen({ titel, isoTag, beschreibung, ort }) + return + } catch (fehler) { + if (!pluginFehlt(fehler)) throw fehler + } + await ueberTeilenBlatt(titel, isoTag, beschreibung, ort) return } - const blob = new Blob([inhalt], { type: "text/calendar;charset=utf-8" }) + const blob = new Blob([kalenderDatei(titel, isoTag, beschreibung, ort)], { + type: "text/calendar;charset=utf-8", + }) const url = URL.createObjectURL(blob) const verweis = document.createElement("a") verweis.href = url - verweis.download = name + verweis.download = dateiname(titel) document.body.appendChild(verweis) verweis.click() verweis.remove() diff --git a/custom_components/audi_dashboard/fahrterkennung.py b/custom_components/audi_dashboard/fahrterkennung.py index ded7f63..4cec182 100644 --- a/custom_components/audi_dashboard/fahrterkennung.py +++ b/custom_components/audi_dashboard/fahrterkennung.py @@ -254,11 +254,39 @@ async def zuendung_geaendert( # abbrechen - das ist der Mechanismus hinter der Pausenregel. k.warte_ende_ab_abbrechen() - an_jetzt = neu == "on" + # Von hier an nur einer zur Zeit. Home Assistant startet für jeden + # Zustandswechsel eine eigene Aufgabe, und dieser Rumpf wartet mehrfach: + # _geraetezeit() bis zu zwei Sekunden auf die Meldezeit, danach liest + # _echtes_ende() den Verlauf, danach schreibt fahrt_beenden() die Fahrt + # und stösst das Screening an. + # + # Ohne die Sperre überholt der nächste Wechsel den laufenden. Genau das ist + # am 02.09.2026 passiert und hat eine ganze Fahrt gekostet: das Gerät hatte + # gepuffert, deshalb kamen "Fahrt zu Ende" (Gerätezeit 21:20:55) und "Fahrt + # begonnen" in DERSELBEN Sekunde bei Home Assistant an, 21:22:12. Das "off" + # ging in den Beende-Zweig und wartete; das "on" traf mitten hinein, sah + # fahrt_start_ts noch gesetzt - also "es läuft eine Fahrt" - und passte + # damit in keinen der beiden Zweige unten. Es fiel wortlos durch. Danach + # räumte der Beende-Vorgang das Feld ab, und das reguläre "off" um 21:58:16 + # fand keine laufende Fahrt mehr. 36 Minuten Fahrt, live nie gesehen; nur + # der Rückblick hat sie später gefunden. + # + # Die Sperre statt eines früheren Zurücksetzens von fahrt_start_ts: fällt + # der Beende-Vorgang unterwegs aus, bleibt der Zwischenstand stehen wie + # bisher und der nächste Auslöser schliesst die Fahrt nach. Ein früheres + # Löschen hätte sie in dem Fall verloren. + async with k.fahrt_sperre: + await _signalwechsel(k, neu == "on", ereigniszeit) + + +async def _signalwechsel( + k: Koordinator, an_jetzt: bool, ereigniszeit: datetime.datetime | None +) -> None: # Ob eine Fahrt läuft, entscheidet der eigene Zwischenstand # (fahrt_start_ts) - nicht der vorherige Rohwert der Entität. Der wäre bei # einer Funklücke "unavailable" statt "on" gewesen, obwohl die Fahrt die - # ganze Zeit lief. + # ganze Zeit lief. Gelesen wird er INNERHALB der Sperre: ein Wechsel, der + # auf seinen Vorgänger gewartet hat, muss dessen Ergebnis sehen. fahrt_laeuft = k.fahrt_start_ts is not None jetzt = datetime.datetime.now(datetime.UTC) @@ -324,6 +352,16 @@ async def nach_neustart_fortsetzen(k: Koordinator) -> None: if zustand_oder_none(k.hass, sensor) == "on": return # fährt noch - der Beobachter übernimmt wie sonst auch + # Dieselbe Sperre wie im Beobachter: der erste Wechsel des Fahrtsignals + # kann eintreffen, während dieser Nachlauf noch schreibt. + async with k.fahrt_sperre: + await _nachtraeglich_schliessen(k, sensor) + + +async def _nachtraeglich_schliessen(k: Koordinator, sensor: str) -> None: + if k.fahrt_start_ts is None: + return # der Beobachter war schneller + ende_ts = await _letztes_lebenszeichen(k, sensor, k.fahrt_start_ts) _LOGGER.info( "Fahrt seit %s wurde während eines Ausfalls beendet - wird jetzt mit " diff --git a/custom_components/audi_dashboard/frontend/app/bundle.json b/custom_components/audi_dashboard/frontend/app/bundle.json index 6bc3abd..639de80 100644 --- a/custom_components/audi_dashboard/frontend/app/bundle.json +++ b/custom_components/audi_dashboard/frontend/app/bundle.json @@ -1 +1 @@ -{"version":"2026.9.2.25","sha256":"106acbff40d3a14b59a1759f422e0d4346f29f196d0c3196c80289f6815d6804","bytes":266091,"gebaut":"2026-09-02T20:11:42Z"} \ No newline at end of file +{"version":"2026.9.3.3","sha256":"7b2e99c4c05b9522abc8cb3276a9cca3fd25d23c25db1ebd79d312be712f9945","bytes":266735,"gebaut":"2026-09-02T23:54:05Z"} \ No newline at end of file diff --git a/custom_components/audi_dashboard/frontend/app/bundle.zip b/custom_components/audi_dashboard/frontend/app/bundle.zip index 89fda9a3da16ed9e9dd1594f62a96be7b7e07101..487199e4fa8040a57f0fe4011ec490a947662ce1 100644 GIT binary patch delta 120839 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%0Antr)9v#%^f%g2rhS*6d1 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 ANdN!< diff --git a/custom_components/audi_dashboard/frontend/audi-dashboard-app.js b/custom_components/audi_dashboard/frontend/audi-dashboard-app.js index cf0835b..1cf2624 100644 --- a/custom_components/audi_dashboard/frontend/audi-dashboard-app.js +++ b/custom_components/audi_dashboard/frontend/audi-dashboard-app.js @@ -388,6 +388,103 @@ function startIndex() { const i = BILDER.findIndex((b) => b.name === CONFIG.startbild); return i < 0 ? 0 : i; } + +/* Ein Fahrzeugfoto wird im Browser verkleinert, bevor es hochgeladen wird. + + WARUM: der Upload laeuft als Dienstaufruf ueber die WebSocket-Verbindung, + und die hat eine Obergrenze je Nachricht - aiohttps Vorgabe sind 4 MiB, und + Base64 blaeht die Datei vorher um ein Drittel auf. Ueber die reale Instanz + kommt noch Cloudflare samt Vorschaltserver dazu, die enger sein koennen. + Genau das war der Befund vom 03.09.2026: dasselbe Cockpit-Foto ging in der + Testinstanz (localhost) durch und scheiterte ueber die reale Instanz mit + "connection lost" - eine abgerissene Verbindung, kein Fehler des Backends, + deshalb auch keine brauchbare Meldung. + + Verkleinern loest das an der Wurzel statt die Grenze zu verschieben: die + groesste Flaeche, auf der ein Foto je erscheint, ist die Inhaltsspalte im + Breitbildlayout mit 772px. 2000px lange Kante lassen dafuer reichlich Luft + (auch fuer Bildschirme mit doppelter Punktdichte), und WebP bei 0,85 bringt + ein solches Foto typischerweise auf einige hundert Kilobyte. + + Faellt irgendein Schritt aus (Format nicht dekodierbar, kein WebP-Encoder, + Ergebnis groesser als das Original), bleibt es beim Original - schlechter + als vorher wird es dadurch nie. */ +const BILD_MAX_KANTE = 2000; +const BILD_QUALITAET = 0.85; + +function bildAlsBase64(blob) { + return new Promise((fertig, fehler) => { + const leser = new FileReader(); + leser.onload = () => fertig(String(leser.result).split(",")[1] || ""); + leser.onerror = () => fehler(leser.error); + leser.readAsDataURL(blob); + }); +} + +/* Formate, die jeder Browser dieser App wirklich anzeigen kann. + + Wichtig, weil das Backend nichts prueft: bilder.py schreibt die Bytes roh + unter einen der elf festen .webp-Namen. Ein Foto, das der Browser nicht + umwandeln konnte und das er auch nicht anzeigen kann, laege danach als + Bilddatei auf der Platte, die niemand darstellt - ohne Meldung. + + Der praktische Fall ist HEIC: die iPhone-Fotoauswahl liefert in der Regel + JPEG, am Mac im Finder gewaehlt kommt aber eine .heic an, und die kann + ausser Safari/WKWebView niemand dekodieren. */ +const BILD_SICHERE_TYPEN = /^image\/(jpeg|png|webp|gif|bmp|avif)$/i; +const BILD_SICHERE_ENDUNGEN = /\.(jpe?g|png|webp|gif|bmp|avif)$/i; + +function bildformatIstSicher(datei) { + // Der MIME-Typ zaehlt, wenn er da ist. Aus dem Explorer gezogene Dateien + // kommen je nach Quelle mit leerem type an - dann die Endung, dieselbe + // Doppelpruefung wie bei istPdf(). + if (datei.type) return BILD_SICHERE_TYPEN.test(datei.type); + return BILD_SICHERE_ENDUNGEN.test(datei.name); +} + +async function bildVerkleinern(datei) { + let klein = null; + const adresse = URL.createObjectURL(datei); + try { + const bild = await new Promise((fertig, fehler) => { + const i = new Image(); + i.onload = () => fertig(i); + i.onerror = () => fehler(new Error("Bild nicht lesbar")); + i.src = adresse; + }); + const kante = Math.max(bild.naturalWidth, bild.naturalHeight); + if (kante) { + const faktor = Math.min(1, BILD_MAX_KANTE / kante); + const flaeche = document.createElement("canvas"); + flaeche.width = Math.round(bild.naturalWidth * faktor); + flaeche.height = Math.round(bild.naturalHeight * faktor); + flaeche.getContext("2d").drawImage(bild, 0, 0, flaeche.width, flaeche.height); + klein = await new Promise((fertig) => + flaeche.toBlob(fertig, "image/webp", BILD_QUALITAET), + ); + } + } catch (err) { + console.warn("Bild konnte nicht umgewandelt werden", err); + } finally { + URL.revokeObjectURL(adresse); + } + + // Ein bereits sparsam gespeichertes Foto soll nicht ein zweites Mal durch + // eine verlustbehaftete Kodierung - das kostet Qualitaet ohne Gewinn. + if (klein && klein.size < datei.size) return klein; + + /* Umwandeln ging nicht (oder brachte nichts) - dann muss wenigstens das + Original anzeigbar sein. Sonst lieber jetzt eine klare Meldung als + hinterher ein leeres Bild, dessen Ursache niemand mehr sieht. */ + if (!bildformatIstSicher(datei)) { + const art = datei.type || datei.name.split(".").pop() || "unbekannt"; + throw new Error( + `Dieses Bildformat kann der Browser nicht umwandeln (${art}). ` + + "Bitte das Foto als JPEG, PNG oder WebP sichern und noch einmal versuchen.", + ); + } + return datei; +} function bildInfo(i) { const b = BILDER[i]; if (b.name === "Seitenansicht" && CAR.reifen.aktiv === "Winter") { @@ -5937,16 +6034,15 @@ function ereignisseVerdrahten() { if (e.target.dataset.bildupload !== undefined) { const datei = e.target.files[0]; if (!datei) return; const dateiname = e.target.dataset.bildupload; - const leser = new FileReader(); - leser.onload = async () => { - const daten_base64 = String(leser.result).split(",")[1] || ""; + e.target.value = ""; + (async () => { try { + const klein = await bildVerkleinern(datei); + const daten_base64 = await bildAlsBase64(klein); await HASS.callService(DOMAIN, "bild_hochladen", { dateiname, daten_base64 }); } catch (err) { hinweis("Hochladen fehlgeschlagen", err.message); } bildMenuOffen = null; bildVersion = Date.now(); render(); - }; - leser.readAsDataURL(datei); - e.target.value = ""; + })(); return; } if (e.target.dataset.backupintervall !== undefined) { diff --git a/custom_components/audi_dashboard/historienimport.py b/custom_components/audi_dashboard/historienimport.py index 6ecfd88..eee7772 100644 --- a/custom_components/audi_dashboard/historienimport.py +++ b/custom_components/audi_dashboard/historienimport.py @@ -41,6 +41,7 @@ import datetime import logging from typing import TYPE_CHECKING +from . import screening from .batterie import SPANNUNG_MIN_V from .fahrterkennung import leere_fahrt from .tankerkennung import LITER_SCHWELLE, leerer_tankvorgang, schwelle_prozent @@ -524,6 +525,23 @@ async def importieren(k: Koordinator, start: object, ende: object) -> None: await k.tankvorgang_nachbereiten() await k.batterieverlauf_veroeffentlichen() + # Der Rückblick trägt nur ein, was er aus dem Verlauf selbst ableiten kann. + # Ortsnamen, Verbrauchseichung und der Radzähler hängen dagegen am + # Screening - und das lief bis zum 03.09.2026 nur bei einem Wechsel des + # Kilometerstands, nach einem Neustart oder aus dem Nachfassen heraus. + # Steht das Fahrzeug, ist keines davon der Fall: eine frisch importierte + # Fahrt blieb ohne Ort liegen, obwohl beide Koordinaten dastanden und + # sogar im Zwischenspeicher schon aufgelöst waren (gemeldet vom + # Eigentümer). Dass es so gemeint war, sagt das Nachfassen selbst - sein + # Docstring nennt den Import als einen der zwei Fälle, für die es + # existiert; nur ausgelöst hat ihn nie jemand. + # + # Nur bei wirklich angelegten Fahrten: ein Import ohne Ergebnis (der + # Normalfall beim zweiten Lauf über denselben Zeitraum) soll keinen + # Durchlauf kosten. + if fahrten["angelegt"]: + await screening.durchfuehren(k) + ergebnis = { "von": von.isoformat(), "bis": bis.isoformat(), diff --git a/custom_components/audi_dashboard/koordinator.py b/custom_components/audi_dashboard/koordinator.py index f3c5f35..000229d 100644 --- a/custom_components/audi_dashboard/koordinator.py +++ b/custom_components/audi_dashboard/koordinator.py @@ -127,6 +127,9 @@ class Koordinator: self._store = Store[dict](hass, STORE_VERSION, f"{entry.entry_id}_laufzeit") self.fahrt_start_ts: datetime.datetime | None = None + # Zwei Wechsel des Fahrtsignals in derselben Sekunde duerfen sich nicht + # ueberholen - Begruendung in fahrterkennung.zuendung_geaendert(). + self.fahrt_sperre = asyncio.Lock() self.tiefststand_pct: float | None = None self.tiefststand_liter: float | None = None # Seit wann das Fahrzeug steht (Zeit des Geraets). None = unbekannt. diff --git a/custom_components/audi_dashboard/manifest.json b/custom_components/audi_dashboard/manifest.json index fa98a54..aec27c7 100644 --- a/custom_components/audi_dashboard/manifest.json +++ b/custom_components/audi_dashboard/manifest.json @@ -1,7 +1,7 @@ { "domain": "audi_dashboard", "name": "Audi Dashboard", - "version": "2026.9.2.25", + "version": "2026.9.3.3", "documentation": "https://gitea.nothaft.cloud/paul/audi-app/src/branch/main/README.md", "issue_tracker": "https://gitea.nothaft.cloud/paul/audi-app/issues", "codeowners": ["@paul"], diff --git a/tests/fahrterkennung/test_signalwechsel.py b/tests/fahrterkennung/test_signalwechsel.py new file mode 100644 index 0000000..5775e92 --- /dev/null +++ b/tests/fahrterkennung/test_signalwechsel.py @@ -0,0 +1,131 @@ +#!/usr/bin/env python3 +"""Regressionstest: zwei Wechsel des Fahrtsignals in derselben Sekunde. + +Der Fall, der ihn nötig gemacht hat (02.09.2026, im Verlauf nachgemessen): +das Gerät hatte gepuffert, deshalb kamen "Fahrt zu Ende" und "Fahrt begonnen" +gemeinsam um 21:22:12 bei Home Assistant an. Home Assistant startet für jeden +Zustandswechsel eine eigene Aufgabe, und der Beende-Zweig wartet mehrfach +(Meldezeit, Verlauf, Schreiben, Screening). Das "on" überholte ihn, sah +fahrt_start_ts noch gesetzt und fiel durch beide Zweige - die anschliessende +36-Minuten-Fahrt wurde live nie erfasst und tauchte erst über den Rückblick auf. + +Geprüft wird deshalb genau die Verschränkung, nicht die Fahrterkennung als +Ganzes: die langsamen Teile (_geraetezeit, _echtes_ende, fahrt_beenden) sind +ersetzt, übrig bleibt die Frage, ob der zweite Wechsel den ersten abwarten muss. + +Aufruf: python3 tests/fahrterkennung/test_signalwechsel.py +(braucht das homeassistant-Paket, weil die Integration es importiert - also +z. B. im Test-Container) +""" + +import asyncio +import datetime +import os +import sys +import unittest + +_HIER = os.path.dirname(os.path.abspath(__file__)) +sys.path.insert(0, os.path.dirname(os.path.dirname(_HIER))) + +from custom_components.audi_dashboard import fahrterkennung as f # noqa: E402 + +T0 = datetime.datetime(2026, 9, 2, 16, 32, 18, tzinfo=datetime.UTC) +T_WECHSEL = datetime.datetime(2026, 9, 2, 21, 22, 12, tzinfo=datetime.UTC) + + +class FakeKoordinator: + """Nur das, was der Signalpfad anfasst.""" + + def __init__(self, start_ts): + self.fahrt_start_ts = start_ts + self.fahrt_sperre = asyncio.Lock() + self.beendet = [] + self.veroeffentlicht = 0 + + def warte_ende_ab_abbrechen(self): + pass + + async def fahrt_start_setzen(self, ts): + self.fahrt_start_ts = ts + + async def fahrzeugstatus_veroeffentlichen(self): + self.veroeffentlicht += 1 + + +class SignalwechselTest(unittest.IsolatedAsyncioTestCase): + async def asyncSetUp(self): + self._echt = (f._geraetezeit, f._echtes_ende, f.fahrt_beenden) + + async def geraetezeit(k, ereigniszeit, standard): + # Der eigentliche Punkt: dieser Schritt wartet wirklich (in echt + # bis zu MELDEZEIT_FRIST_S = 2 s auf die Meldezeit des Geräts). + await asyncio.sleep(0.05) + return ereigniszeit or standard + + async def echtes_ende(k, start, signal_ende): + return signal_ende + + async def beenden(k, start_ts, ende_ts): + await asyncio.sleep(0.05) # Schreiben und Screening brauchen Zeit + k.beendet.append((start_ts, ende_ts)) + await k.fahrt_start_setzen(None) + + f._geraetezeit, f._echtes_ende, f.fahrt_beenden = ( + geraetezeit, echtes_ende, beenden, + ) + + async def asyncTearDown(self): + f._geraetezeit, f._echtes_ende, f.fahrt_beenden = self._echt + + async def test_off_und_on_in_derselben_sekunde(self): + """Der genaue Fall vom 02.09.2026: die neue Fahrt darf nicht verloren + gehen, während die alte noch geschlossen wird.""" + k = FakeKoordinator(T0) + + aus = asyncio.create_task(f.zuendung_geaendert(k, "off", "on", T_WECHSEL)) + # Dem "off" gerade so viel Vorlauf, dass es die Sperre hält und im + # ersten await steht - genau die Lage, in der das "on" eintrifft. + await asyncio.sleep(0) + await asyncio.sleep(0) + an = asyncio.create_task(f.zuendung_geaendert(k, "on", "off", T_WECHSEL)) + await asyncio.gather(aus, an) + + self.assertEqual(len(k.beendet), 1, "die alte Fahrt muss genau einmal enden") + self.assertEqual(k.beendet[0][0], T0) + self.assertIsNotNone( + k.fahrt_start_ts, + "nach dem Paar muss die neue Fahrt laufen - sonst ist sie verloren", + ) + self.assertEqual(k.fahrt_start_ts, T_WECHSEL) + + async def test_nacheinander_unveraendert(self): + """Der gewöhnliche Ablauf darf sich durch die Sperre nicht ändern.""" + k = FakeKoordinator(T0) + await f.zuendung_geaendert(k, "off", "on", T_WECHSEL) + self.assertEqual(len(k.beendet), 1) + self.assertIsNone(k.fahrt_start_ts) + + await f.zuendung_geaendert(k, "on", "off", T_WECHSEL) + self.assertEqual(k.fahrt_start_ts, T_WECHSEL) + + async def test_zweites_on_startet_keine_zweite_fahrt(self): + k = FakeKoordinator(T0) + await f.zuendung_geaendert(k, "on", "off", T_WECHSEL) + self.assertEqual(k.fahrt_start_ts, T0, "die laufende Fahrt bleibt stehen") + self.assertEqual(k.beendet, []) + + async def test_ohne_vorzustand_passiert_nichts(self): + """Registrierung beim Start ist kein Wechsel - sonst Phantomfahrten.""" + k = FakeKoordinator(None) + await f.zuendung_geaendert(k, "on", None, T_WECHSEL) + self.assertIsNone(k.fahrt_start_ts) + + async def test_funkstille_wird_ignoriert(self): + k = FakeKoordinator(T0) + await f.zuendung_geaendert(k, "unavailable", "on", T_WECHSEL) + self.assertEqual(k.fahrt_start_ts, T0) + self.assertEqual(k.beendet, []) + + +if __name__ == "__main__": + unittest.main(verbosity=2)