"502" beim Neustart entschaerft, OTA-Buendel nachgezogen (2026.9.1.8)

DIE APP MELDETE EINEN FEHLER, WO KEINER WAR

Nach "Jetzt neu starten" sprang der Knopf zurueck und darunter stand 502,
waehrend Home Assistant ordnungsgemaess hochfuhr. Der Nutzer musste annehmen,
der Neustart sei gescheitert, und drueckte erneut.

updateNeustartAusloesen() behandelte jeden Fehlschlag als Fehler. Ueber einen
Vorschaltserver kommt beim Neustart aber kein Abbruch zurueck, sondern eine
saubere 502/503/504 - der Proxy antwortet, Home Assistant noch nicht. Genau
der Fall, fuer den ApiFehler.istVoruebergehend seit dem 31.08. existiert; er
wurde hier nur nicht gefragt. Der Bildschirm bleibt jetzt auf "Home Assistant
startet neu ...", der bestehende Effekt raeumt ihn ab, sobald die Verbindung
wieder steht.

Im Panel war es kein Fehler (WebSocket bricht ab statt 502 zu liefern), aber
die Luecke war dieselbe, sobald ein Vorschaltserver dazwischen steht -
dieselbe Toleranz deshalb auch dort.

DAS OTA-BUENDEL STAND NOCH AUF 2026.8.31.5

Gemeldet: Kopfzeile "App ist aelter als der Server", Kachel "App ist aktuell
31.5", Integration auf 1.7. Kein Fehler - die Anzeige sagte die Wahrheit.
Sieben Versionen lang wurde nur die Integration ausgeliefert; npm run ota lief
seit dem 31.08. nicht mehr.

Merkposten: eine Aenderung an companion-app/src ist erst dann beim Nutzer,
wenn das Buendel neu gebaut wurde. Der Versionssprung allein beschreibt sonst
eine App, die es nicht gibt.

VERIFIZIERT: Manifest, bundle.json und die ausgelieferte Zip tragen alle
2026.9.1.8 und denselben SHA-256 c2f9192e...; tsc --noEmit sauber, 165/165
Tests gruen, Panel als Modul geparst, audi_ha_test fehlerfrei gestartet.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-01 12:19:04 +02:00
parent d1e3f7230c
commit 3cd9e6149b
6 changed files with 68 additions and 5 deletions
+42 -1
View File
@@ -1,6 +1,7 @@
# AGENTS.md — Project state, review findings, open items, and working rules
**Last updated: 2026-09-01** („Geparkt seit" kommt von der Zündung und wird nach einem Neustart
**Last updated: 2026-09-01** („502" beim Neustart entschärft, OTA-Bündel auf `2026.9.1.8`
nachgezogen, Abschnitt BC. Davor: „Geparkt seit" kommt von der Zündung und wird nach einem Neustart
aus der Aufzeichnung nachgeholt, Manifest `2026.9.1.7`,
Abschnitt BB. Davor: GNSS-Streckenrollen vorbereitet, `2026.9.1.5`, Abschnitt BA.
Davor: Fahrtende ohne den 900-s-Nachlauf des Geräts, Manifest `2026.9.1.4`,
@@ -6669,6 +6670,46 @@ ein Tor — nur zählen, wenn Bewegung gemeldet ist. Dass `Movement` jetzt auf O
genau dieses Tor erst möglich. Vor der ersten echten Fahrt ist die Größenordnung der Drift unbekannt;
sie ist als Erstes zu messen.
## BC. „502" beim Neustart, und das OTA-Bündel hing sieben Versionen zurück (2026.9.1.8)
### Die App meldete einen Fehler, wo keiner war
Nach „Jetzt neu starten" sprang der Knopf zurück und darunter stand **502** — während Home
Assistant ordnungsgemäß hochfuhr. Der Nutzer musste annehmen, der Neustart sei gescheitert, und
drückte erneut. Vom Eigentümer gemeldet am 2026-09-01, und schon in der Fassung vom 31.08. der
zweite Teil desselben Berichts.
Ursache: `updateNeustartAusloesen()` behandelte **jeden** Fehlschlag als Fehler. Über einen
Vorschaltserver kommt beim Neustart aber kein Verbindungsabbruch zurück, sondern eine saubere
502/503/504 — der Proxy antwortet, Home Assistant noch nicht. Genau der Fall, für den
`ApiFehler.istVoruebergehend` seit dem 31.08. existiert; er wurde hier nur nicht gefragt.
Jetzt: `if (fehler instanceof ApiFehler && fehler.istVoruebergehend) return` — der Bildschirm
bleibt auf „Home Assistant startet neu …", und der bestehende Effekt räumt ihn ab, sobald die
Verbindung wieder steht. Dieselbe Einstufung wie im `DatenKontext`, damit Anzeige und
Wiederverbindung denselben Fall gleich bewerten.
**Im Panel war es kein Fehler, aber die Lücke war dieselbe.** Es ruft über die WebSocket-Verbindung
(`HASS.callService`), da bricht die Leitung ab statt 502 zu liefern — der Kommentar dort sagte das
sogar. „Normalerweise" ist aber keine Garantie, sobald ein Vorschaltserver dazwischen steht.
Dieselbe Toleranz deshalb auch dort, damit beide Oberflächen denselben Fall gleich bewerten.
### Das OTA-Bündel stand noch auf 2026.8.31.5
Der Eigentümer meldete: Kopfzeile „App ist älter als der Server", Kachel „App ist aktuell 31.5",
Integration steht auf 1.7, und „Update prüfen" findet nichts. **Kein Fehler — die Anzeige sagte die
Wahrheit.** Sieben Versionen lang wurde nur die Integration ausgeliefert; `npm run ota` lief seit
dem 31.08. um 20:03 nicht mehr.
**Merkposten, der in VERSIONIERUNG.md fehlt:** eine Änderung an `companion-app/src` ist erst dann
beim Nutzer, wenn das Bündel neu gebaut wurde. Das Erhöhen der Manifest-Version allein reicht
nicht — sie beschreibt dann eine App, die es nicht gibt. Bei jeder Änderung an der App gehört
`npm run ota` dazu, nicht nur der Versionssprung.
Nachgewiesen: Manifest, `bundle.json` und die ausgelieferte Zip tragen alle `2026.9.1.8` und
denselben SHA-256 `c2f9192e…`; `tsc --noEmit` sauber, 165/165 Tests grün, Panel als **Modul**
geparst (Abschnitt AQ), `audi_ha_test` fehlerfrei gestartet.
## Working conventions (observed — keep them)
- German is the project language: identifiers, comments, commits, UI texts. Exceptions:
+14 -1
View File
@@ -8,7 +8,7 @@ import { useEffect, useRef, useState } from "react"
import { ActionButton, Feld, Seg, Sheet, Switch, Tile } from "@audi-dash/ui"
import { DIENST_DOMAIN, zugangLesen, zugangVerwerfen } from "../api"
import { ApiFehler, DIENST_DOMAIN, zugangLesen, zugangVerwerfen } from "../api"
import type { Profil } from "../api"
import { eigeneVersion } from "../daten/appVersion"
import { Datumsfeld } from "./Datumsfeld"
@@ -147,6 +147,19 @@ export function Einstellungen({
try {
await api.homeAssistantNeuStarten()
} catch (fehler) {
// Waehrend Home Assistant neu startet, ist ein Fehlschlag der Normalfall
// und kein Fehler: der Vorschaltserver antwortet mit 502/503/504, oder
// die Verbindung bricht ganz ab. Beides als Fehlerzeile zu zeigen war
// irrefuehrend - der Knopf sprang zurueck auf "Jetzt neu starten" und
// darunter stand "502", waehrend Home Assistant ordnungsgemaess hochfuhr.
// Der Nutzer musste annehmen, der Neustart sei gescheitert, und drueckte
// erneut (gemeldet vom Eigentuemer am 2026-09-01).
//
// Der Bildschirm bleibt deshalb auf "Home Assistant startet neu ...";
// der Effekt darunter raeumt ihn ab, sobald die Verbindung wieder steht.
// Dieselbe Einstufung wie im DatenKontext, damit Anzeige und
// Wiederverbindung denselben Fall gleich bewerten.
if (fehler instanceof ApiFehler && fehler.istVoruebergehend) return
setzeUpdateAktionFehler(
fehler instanceof Error
? fehler.message
@@ -1 +1 @@
{"version":"2026.8.31.5","sha256":"3f297e72a5b215e54d1eb17d134d6d66ef65d1d29a5793220ff2456b6c6cc5c8","bytes":265697,"gebaut":"2026-08-31T18:03:21Z"}
{"version":"2026.9.1.8","sha256":"c2f9192ecc9a32542a9f1dd23ec10c05bcbcb7fffbfd80a09b2a5cf907e437a9","bytes":265705,"gebaut":"2026-09-01T10:18:03Z"}
@@ -5552,7 +5552,16 @@ function ereignisseVerdrahten() {
// Bricht die Verbindung normalerweise durch den Neustart selbst ab,
// bevor diese Zeile überhaupt liefe - nur ein echter Fehlschlag
// (Dienst abgelehnt, o.ä.) kommt hier tatsächlich an.
hinweis("Neustart fehlgeschlagen", err && err.message ? err.message : "Home Assistant konnte nicht neu gestartet werden.");
//
// "Normalerweise" ist aber keine Garantie: geht der Ruf ueber einen
// Vorschaltserver, kommt statt eines Abbruchs eine 502/503/504
// zurueck, und die ist waehrend eines Neustarts kein Fehlschlag,
// sondern der erwartete Zustand. Die App hat genau daran gelitten
// (siehe Einstellungen.tsx, 2026-09-01); hier dieselbe Einstufung,
// damit beide Oberflaechen denselben Fall gleich bewerten.
const txt = err && err.message ? String(err.message) : "";
if (/(502|503|504)/.test(txt) || /fetch|network|Failed to fetch/i.test(txt)) return;
hinweis("Neustart fehlgeschlagen", txt || "Home Assistant konnte nicht neu gestartet werden.");
INTEGRATION_UPDATE_LAEUFT = null; render();
});
}
@@ -1,7 +1,7 @@
{
"domain": "audi_dashboard",
"name": "Audi Dashboard",
"version": "2026.9.1.7",
"version": "2026.9.1.8",
"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"],