Nachlauf-Abzug nur, wenn das Trip-Element ihn erzeugt (2026.9.1.9)

_echtes_ende() zog NACHLAUF_S bedingungslos ab. Richtig, solange die Fahrten
vom Trip-Signal ausgeloest werden - aber verlauf.fahrtsignal() faellt auf die
Zuendung zurueck, wenn TRIP_SENSOR nicht zugeordnet ist, und die hat keinen
Nachlauf. Jede Fahrt haette fuenfzehn Minuten verloren, jede kuerzere waere
ganz verschwunden.

Genau die Konstellation, in die eine bestehende Installation nach dem Update
ohne Zutun laeuft: die neue Rolle ist leer, bis jemand sie zuordnet. Gefunden
beim Durchdenken des Update-Wegs fuer die reale Instanz, nicht durch einen
Fehlerbericht.

Nachgewiesen: TRIP_SENSOR geleert, Zuendung fuenf Minuten an -> Fahrt mit
300 s angelegt statt verworfen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-01 12:24:50 +02:00
parent 3cd9e6149b
commit 0124254ea9
5 changed files with 31 additions and 4 deletions
+19 -1
View File
@@ -1,6 +1,7 @@
# AGENTS.md — Project state, review findings, open items, and working rules
**Last updated: 2026-09-01** („502" beim Neustart entschärft, OTA-Bündel auf `2026.9.1.8`
**Last updated: 2026-09-01** (Nachlauf-Abzug nur mit zugeordnetem `TRIP_SENSOR`, `2026.9.1.9`;
davor „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.
@@ -6545,6 +6546,23 @@ Einstellungen, darunter `trip_scenario.ign_off_timeout`), aber dafür bräuchte
einen zweiten Zugang samt Token; sie liest heute ausschließlich Telemetrie. Verworfen als
unverhältnismäßig.
### Nachtrag (2026.9.1.9): der Nachlauf gilt nur, wenn das Trip-Element ihn erzeugt
`_echtes_ende()` zog `NACHLAUF_S` bedingungslos ab. Das ist richtig, solange die Fahrten vom
Trip-Signal ausgelöst werden — aber `verlauf.fahrtsignal()` fällt auf die **Zündung** zurück, wenn
`TRIP_SENSOR` nicht zugeordnet ist, und die hat keinen Nachlauf.
In dieser Konstellation hätte jede Fahrt fünfzehn Minuten verloren und jede kürzere wäre ganz
verschwunden — der Klemmzweig hätte sie auf Dauer 0 gesetzt und `MINDESTDAUER_S` verworfen. Genau
die Konstellation, in die eine bestehende Installation nach dem Update ohne Zutun läuft: die neue
Rolle ist leer, bis jemand sie zuordnet.
`if not k.zuordnung.werte.TRIP_SENSOR: return signal_ende`. Gefunden beim Durchdenken des
Update-Wegs für die reale Instanz, nicht durch einen Fehlerbericht.
Nachgewiesen: `TRIP_SENSOR` geleert, Zündung fünf Minuten an → Fahrt mit **300 s** angelegt statt
verworfen. Mit gesetztem `TRIP_SENSOR` bleibt der Abzug wie in Abschnitt AZ nachgewiesen.
### Die Gegenprobe meldet, statt zu korrigieren
`_nachlauf_gegenpruefen()` vergleicht das gerechnete Ende mit dem letzten beobachteten
@@ -122,7 +122,16 @@ async def _echtes_ende(
die Zuendung nur kurz an, ohne dass gefahren wurde. Das Ende wird auf den
Beginn geklemmt, und MINDESTDAUER_S in fahrt_beenden() verwirft den Vorgang
anschliessend. Ohne diese Klemme entstuende aus dreissig Sekunden Zuendung
eine Viertelstunde Fahrt."""
eine Viertelstunde Fahrt.
NUR wenn die Fahrten wirklich vom Trip-Signal ausgeloest werden. Ist
TRIP_SENSOR nicht zugeordnet, uebernimmt die Zuendung diese Aufgabe
(verlauf.fahrtsignal()) - und die hat keinen Nachlauf. Dort abzuziehen
wuerde jede Fahrt um eine Viertelstunde verkuerzen und jede kuerzere ganz
verschwinden lassen. Der Nachlauf gehoert zum Trip-Element des Geraets,
nicht zu uns; ohne dieses Element gibt es ihn nicht."""
if not k.zuordnung.werte.TRIP_SENSOR:
return signal_ende
gerechnet = signal_ende - datetime.timedelta(seconds=NACHLAUF_S)
if gerechnet <= start_ts:
_LOGGER.info(
@@ -1 +1 @@
{"version":"2026.9.1.8","sha256":"c2f9192ecc9a32542a9f1dd23ec10c05bcbcb7fffbfd80a09b2a5cf907e437a9","bytes":265705,"gebaut":"2026-09-01T10:18:03Z"}
{"version":"2026.9.1.9","sha256":"bdf895932e11e336474b4441a66912dd273e5f22b3bbf82e9b1cd29d6447a652","bytes":265713,"gebaut":"2026-09-01T10:24:49Z"}
@@ -1,7 +1,7 @@
{
"domain": "audi_dashboard",
"name": "Audi Dashboard",
"version": "2026.9.1.8",
"version": "2026.9.1.9",
"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"],