GNSS-Rollen vorbereitet, "Geparkt seit" von der Zuendung (2026.9.1.5/.6)
GNSS-STRECKENROLLEN, NOCH OHNE VERBRAUCHER 11806 steht seit dem 01.09. auf GNSS. Zwei neue Sensorrollen angelegt, damit nach der ersten echten Fahrt nur noch gemessen und nicht mehr zugeordnet werden muss: GNSS_KM_SENSOR (total_calculated_mileage, der robustere fuer eine Fahrtstrecke - ein verlorener Datensatz verfaelscht die Differenz nicht) und GNSS_TEILSTRECKE_SENSOR (segment_mileage, zeigt WO Strecke fehlt, taugt als Gegenprobe). Kein Code liest sie; die Zuordnung aendert nichts. KM_SENSOR bleibt der Anker - er ist der Tacho des Fahrzeugs und driftet nicht. Der alte Warnhinweis dort zeigt jetzt auf die neue Rolle statt ins Leere. "GEPARKT SEIT" KOMMT VON DER ZUENDUNG Die Anzeige rechnete "jetzt minus ts_end der juengsten Fahrt". Das ist keine Aussage ueber das Parken, sondern ueber die Fahrterkennung: am 01.09. stand dort "Geparkt seit 2 Tg. 16 Std.", waehrend am Vorabend 7 km gefahren wurden - die Fahrt fehlte im Bestand, weil trip_status festhing. Der Koordinator merkt sich jetzt den Zeitpunkt, zu dem die Zuendung zuletzt ausging, in der Zeit des Geraets. Er liegt im Laufzeit-Store neben fahrt_start_ts und ueberlebt einen Neustart. Kein Rueckfall auf die Fahrtenliste: null heisst unbekannt und wird auch so angezeigt - ausdrueckliche Ansage des Eigentuemers, eine falsche Zahl ist schlechter als keine. Beim Ausliefern fiel derselbe Neustart-Fehler auf wie bei der Phantomfahrt: der Zuhoerer las die Registrierung der Entitaet als Wechsel und stempelte den Parkbeginn bei jedem Neustart neu. if alt is None: return behebt es. Merkposten fuer dieses Projekt: jeder neue Zustandszuhoerer braucht diese Pruefung. VERIFIZIERT in audi_ha_test: Neustart laesst 09:34:15 unveraendert; Zuendung an -> null; Zuendung aus mit Geraetezeit von vor 40 Minuten -> 09:04:57 statt jetzt. Companion-App gleichgezogen, tsc --noEmit sauber, 165/165 Tests gruen. NOTIERT, NICHT GEBAUT: der GNSS-Zaehler driftet im Stand. Die 0,034 km waren GPS-Rauschen, nicht Aufloesung - der Dongle lag unbewegt. Die GNSS-Zuwaechse brauchen deshalb ein Bewegungstor, bevor sie summiert werden duerfen. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -194,6 +194,7 @@ function profilZuCar(p, status) {
|
||||
gesichert: status.gesichert,
|
||||
sicherheitscheck: status.sicherheitscheck || [],
|
||||
zuendung: status.zuendung ?? null,
|
||||
geparktSeit: status.geparkt_seit ?? null,
|
||||
standortLat: status.standort_lat,
|
||||
standortLon: status.standort_lon,
|
||||
standortGenauigkeitM: status.standort_genauigkeit_m,
|
||||
@@ -785,9 +786,20 @@ function letzteFahrt() {
|
||||
}
|
||||
return neueste;
|
||||
}
|
||||
/* Seit wann das Fahrzeug steht: aus dem Backend, hergeleitet aus dem
|
||||
Zeitpunkt, zu dem die Zuendung zuletzt ausging (in der Zeit des Geraets).
|
||||
|
||||
Bis 2026-09-01 stand hier das Ende der juengsten Fahrt aus der Liste. Das
|
||||
war keine Aussage ueber das Parken, sondern ueber die Fahrterkennung: eine
|
||||
verpasste Fahrt laesst das Fahrzeug seit Tagen stehen, obwohl es gestern
|
||||
unterwegs war. Real vorgekommen - am 31.08.2026 zeigte die Anzeige
|
||||
"geparkt seit 2 Tg. 16 Std.", waehrend am Vorabend 7 km gefahren wurden.
|
||||
|
||||
Kein Rueckfall auf die Fahrtenliste: null heisst unbekannt, und das wird
|
||||
auch so angezeigt. Eine falsche Zahl ist schlechter als keine. */
|
||||
function standortZustand() {
|
||||
const t = letzteFahrt();
|
||||
const seitTs = t && t.ts_end ? new Date(t.ts_end).getTime() : null;
|
||||
const roh = CAR.geparktSeit ? new Date(CAR.geparktSeit).getTime() : NaN;
|
||||
const seitTs = Number.isNaN(roh) ? null : roh;
|
||||
if (CAR.zuendung === true) return { faehrt: true, seitTs: null, parkplatz: false };
|
||||
const minuten = seitTs != null ? (Date.now() - seitTs) / 60000 : null;
|
||||
return {
|
||||
@@ -1351,7 +1363,7 @@ function vStandort() {
|
||||
? `<span class="dot"></span><span>Zündung an</span>`
|
||||
: zustand.unbekannt
|
||||
? `${ciSVG(CI.parking)}<span>Fahrzustand unbekannt</span>`
|
||||
: `${ciSVG(CI.parking)}<span>${zustand.seitTs != null ? "Geparkt seit " + dauerSeitText(zustand.seitTs) : "Fahrzeug steht"}</span>`}
|
||||
: `${ciSVG(CI.parking)}<span>${zustand.seitTs != null ? "Geparkt seit " + dauerSeitText(zustand.seitTs) : "Fahrzeug steht, Parkdauer unbekannt"}</span>`}
|
||||
</div>
|
||||
<div class="standortmenu-werte">
|
||||
<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${ICONS.fuel}</svg>
|
||||
|
||||
Reference in New Issue
Block a user