Verschlafene Kilometer am Fahrtanfang zurueckholen

Der Dongle wacht nach dem Motorstart erst nach 28 s bis 19,5 min auf; was in
der Zeit gefahren wird, zeichnet er nicht auf. Die Kilometer holt das
Screening jetzt aus dem Endkilometerstand der Vorgaengerin zurueck und haelt
in luecke_km fest, wie viel davon betroffen ist.

Keine Sperre der GNSS-Verfeinerung, sondern eine Zerlegung: verschlafener
Anfang in ganzen Kilometern, aufgezeichneter Rest metergenau. Sonst waere die
feine Zahl systematisch zu klein und wuerde bei kleinen Luecken die Korrektur
stillschweigend wieder kassieren.

Zwei Schutzgitter, beide am Bestand gelernt: LUECKE_MAX_KM = 50 gegen
Differenzen, die keine Weckverzoegerung mehr sein koennen, und ein Rueckfall,
wenn _vollstaendig() die Werte daraufhin verwerfen wuerde.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-06 16:56:14 +02:00
co-authored by Claude Opus 5
parent 52fbf375d2
commit d6e27666a3
11 changed files with 361 additions and 3 deletions
+71
View File
@@ -12336,3 +12336,74 @@ wertlos; entweder auf `link.sheet` warten oder ein zweites Mal messen.
Live geprüft (2026.9.6.1, beide Oberflächen): Reichweite 700, Nächster Service
300, Kilometerstand 300, geladene Wide-Schnitte nur noch 300 und 700,
Reservebalken `rgb(245, 5, 55)`.
## DE. Verschlafene Kilometer zurückholen (2026.9.6.2)
Der FMM003 kommt aus dem Deep Sleep nur über seinen Beschleunigungssensor hoch:
die eingestellte Zündungsquelle ist die Motordrehzahl, die liegt am CAN, und
CAN ist im Schlaf abgeschaltet. Gemessene Weckzeiten vom 18.08. bis 05.09.2026:
**28 s bis 1170 s**. Am 05.09. fehlten dadurch **9 Minuten und 6 Kilometer** am
Anfang der Rückfahrt — belegt am geräteeigenen GNSS-Wegzähler, der in fünf
Stunden um 244 m weiterlief, während das Auto 6 km fuhr.
Alle geräteseitigen Auswege sind vom Eigentümer geprüft und verworfen:
Dauerbetrieb und GPS-Schlaf wegen des Ruhestroms, Periodic Wakeup ebenso, die
Empfindlichkeit des Beschleunigungssensors ist am FMM003 nicht einstellbar, und
die Bordspannung taugt an diesem Fahrzeug nicht als Zündungsquelle — bei
laufendem Motor liegen **87,6 % von 2089 Messwerten** im Spannungsbereich des
stehenden Wagens (Rekuperationsmanagement des RS 4).
### Was jetzt passiert
`verlauf.aufzeichnungsluecke_km()` — reine Funktion, sieben Tests in
`tests/verlauf/test_aufzeichnungsluecke.py`. Zwischen zwei Fahrten steht das
Fahrzeug; ist der Startkilometerstand trotzdem höher als der Endstand der
Vorgängerin, wurden diese Kilometer gefahren, ohne dass ein Datensatz entstand.
`screening._aufzeichnungsluecken_schliessen()` holt sie zurück und schreibt sie
nach `luecke_km` (plus `luecke_unsicher`, wenn schon das Ende der Vorgängerin
vorläufig war).
**Keine Sperre der GNSS-Verfeinerung, sondern eine Zerlegung.** Der Eigentümer:
„das macht die gesamte Nutzbarkeit des Fahrtenbuchs sehr grob". Richtig ist:
```
Strecke = verschlafener Anfang (ganze km, Tacho)
+ aufgezeichneter Rest (metergenau, GNSS-Zähler)
```
Die Summe wird wie sonst gegen den Tacho geprüft. Die Unschärfe steckt damit
nur im verschlafenen Stück; Fahrten ohne Lücke bleiben unverändert metergenau.
Ohne die Zerlegung wäre die feine Zahl systematisch zu klein — und bei einer
kleinen Lücke läge sie noch innerhalb von `GNSS_TOLERANZ_KM` und kassierte die
Korrektur stillschweigend wieder ein. Genau dafür gibt es einen Test.
### Zwei Schutzgitter, beide durch Schaden gelernt
Der erste Lauf am 06.09.2026 griff sofort daneben und hat **drei Fahrten aus
der Testphase beschädigt** (Kilometerstände auf `None`):
* **`LUECKE_MAX_KM = 50.0`** — die längste gemessene Weckverzögerung sind
19,5 min, bei Autobahntempo rund 42 km. Ohne die Grenze fand die Regel
1078 km zwischen zwei Fahrten vom 27.08. (dort fehlen Fahrten in der Liste)
und 187831 km am 29.08. (Sprung zwischen den Zahlenbändern des Geräts).
* **Rückfall, wenn `_vollstaendig()` die Werte verwirft.** Macht die Korrektur
die Strecke unplausibel, war die Annahme falsch, dass die beiden Fahrten
aufeinanderfolgen — dann bleibt der Bestand, wie er war.
Die drei beschädigten Fahrten wurden aus `backups/20260901_072541/` von Hand
wiederhergestellt. **Merkposten:** eine Regel, die rückwirkend auf den ganzen
Bestand läuft, gehört vor dem ersten Lauf gegen den Bestand simuliert, nicht
danach repariert.
### Stand
Live in `audi_ha_test`, 0 Tracebacks, 303 App-Tests grün. Die Rückfahrt vom
05.09. steht jetzt mit **7,922 km statt ~1 km**, Zeile „Nicht aufgezeichnet:
6 km am Anfang" in beiden Oberflächen (am gerenderten Panel nachgemessen).
**Offen, im selben Zug gefunden:** dieselbe Fahrt hat ein **falsches Ende**.
Das gepufferte Zündung-Aus kam am 06.09. um 14:28 mit Gerätezeit 23:21:29 an,
`_echtes_ende()` hat daraus aber **14:27:25** gemacht — 15 h Dauer, 0,1 km/h
Schnitt. Die Umstempelung auf Gerätezeit hat hier nicht gegriffen
(`ZUORDNUNG_MAX_S = 1.0`). Das ist dieselbe Familie wie der Befund zu
`_letztes_lebenszeichen()` und noch nicht behoben.