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
@@ -543,6 +543,41 @@ def strecke_waehlen(
return grob, False
def aufzeichnungsluecke_km(
vorheriges_ende: float | None, eigener_start: float | None
) -> float | None:
"""Die Kilometer am Anfang einer Fahrt, die das Geraet nicht mitbekommen hat.
Zwischen zwei aufeinanderfolgenden Fahrten steht das Fahrzeug, der
Kilometerstand aendert sich also nicht - dieselbe Annahme, auf der
_lueckenlos_verketten() in screening.py seit jeher beruht. Steht der
Startkilometerstand einer Fahrt trotzdem HOEHER als der Endstand ihrer
Vorgaengerin, sind diese Kilometer gefahren worden, ohne dass ein einziger
Datensatz entstanden ist.
WARUM ES DAS GIBT: der FMM003 kommt aus dem Deep Sleep nur ueber seinen
Beschleunigungssensor hoch. Die eingestellte Zuendungsquelle ist die
Motordrehzahl, die liegt am CAN - und CAN ist im Schlaf abgeschaltet
(Teltonika: "In deep sleep mode, OBD, CAN and Eventual I/O activity is
disabled"). Die Bordspannung taugt an diesem Fahrzeug nicht als Ersatz:
das Rekuperationsmanagement des RS 4 laedt in Schueben, und von 2089
Messwerten bei laufendem Motor liegen 87,6 % im Spannungsbereich des
stehenden Wagens (gemessen 06.09.2026). Gemessene Weckzeiten reichen von
39 s bis 19,5 min; am 05.09.2026 fehlten 9 Minuten und 6 Kilometer.
Der Eigentuemer hat alle geraeteseitigen Auswege ausgeschlossen
(Dauerbetrieb und GPS-Schlaf wegen des Ruhestroms, Periodic Wakeup ebenso,
die Empfindlichkeit des Beschleunigungssensors ist am FMM003 nicht
einstellbar). Die Luecke bleibt also - sie soll aber wenigstens die
Streckenlaenge nicht kosten und sichtbar sein.
Reine Funktion, damit sie ohne Home Assistant pruefbar ist."""
if vorheriges_ende is None or eigener_start is None:
return None
fehlt = round(eigener_start - vorheriges_ende, 1)
return fehlt if fehlt > 0 else None
def ist_gefahren(distanz: float | None) -> bool:
"""Hat sich das Fahrzeug bewegt?