Keine Phantomfahrt beim Neustart, Tankstand auf wert_bei() (2026.9.1.1)
zuendung_geaendert() prueste den neuen Zustand, aber nicht den alten. Beim Hochfahren taucht die Zuendungs-Entitaet neu auf; das kommt als Wechsel mit old_state = None an. Steht das Trip-Signal ohnehin auf "an" - beim FMM003 der Normalfall -, las der Beobachter das als "Zuendung ging gerade an" und legte eine Fahrt an, deren Beginn schlicht der Zeitpunkt des Neustarts war. Daher der Eintrag 30.08. 19:43 bis 31.08. 08:37, 12,9 h, 0 km. Die Pruefung ist "if alt is None: return" - dieselbe, die _kilometerstand_geaendert() im Koordinator seit jeher hat. Eine wirklich laufende Fahrt geht nicht verloren: deren Beginn liegt im Store und wird von nach_neustart_fortsetzen() aufgenommen. Nachgewiesen: zwei Neustarts hintereinander bei trip_status = on und leerem Zwischenstand, null "Fahrt gestartet"-Zeilen und fahrt_start_ts bleibt null. Vorher entstand unter genau diesen Bedingungen jedes Mal eine. _verbrauch_screenen() liest die Literstaende jetzt ebenfalls mit wert_bei() statt naechster_wert() - dieselbe Doppelbewertung gegenueber historienimport.py wie beim Kilometerstand, eine Ebene tiefer. naechster_wert() bleibt bei Breiten-/Laengengrad: eine Position ist kein Zaehler. Auf Anweisung des Eigentuemers ausserdem die zwoelf Fahrten mit distance_km == 0 geloescht (ueber den Dienst fahrt_loeschen, nach einem backup_jetzt) und "Open items" in AGENTS.md aufgeraeumt: vier Karteileichen des MQTT-Wegs entfernt, Cloudflare-Zugang und iPhone-Signatur als erledigt gebucht, Befund 07 als Nutzereingabe geschlossen, QR-Scanner auf den halben Umfang gekuerzt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -91,6 +91,23 @@ async def zuendung_geaendert(k: Koordinator, neu: str | None, alt: str | None) -
|
||||
if neu not in ("on", "off"):
|
||||
return
|
||||
|
||||
# Kein Vorzustand heißt: die Entität taucht gerade erst auf - beim
|
||||
# Hochfahren von Home Assistant oder nach einem Neuladen der Integration.
|
||||
# Das ist kein Wechsel der Zündung, sondern eine Registrierung.
|
||||
#
|
||||
# Ohne diese Prüfung las der Beobachter das als "Zündung ging gerade an"
|
||||
# und legte eine Fahrt an, deren Beginn schlicht der Zeitpunkt des
|
||||
# Neustarts war. Steht das Trip-Signal ohnehin auf "an", entstand so bei
|
||||
# JEDEM Neustart eine Phantomfahrt - daher der Eintrag vom 30.08.2026,
|
||||
# 19:43 bis 08:37 des Folgetags, 12,9 Stunden, 0 km.
|
||||
#
|
||||
# Eine wirklich laufende Fahrt geht dabei nicht verloren: deren Beginn
|
||||
# liegt im Store und wird von nach_neustart_fortsetzen() aufgenommen.
|
||||
# _kilometerstand_geaendert() im Koordinator prüft aus demselben Grund
|
||||
# schon immer auf einen Vorzustand.
|
||||
if alt is None:
|
||||
return
|
||||
|
||||
# Eine noch wartende Ende-Bestätigung aus einer vorherigen Änderung
|
||||
# abbrechen - das ist der Mechanismus hinter der Pausenregel.
|
||||
k.warte_ende_ab_abbrechen()
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"domain": "audi_dashboard",
|
||||
"name": "Audi Dashboard",
|
||||
"version": "2026.8.31.6",
|
||||
"version": "2026.9.1.1",
|
||||
"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"],
|
||||
|
||||
@@ -281,8 +281,13 @@ async def _verbrauch_screenen(
|
||||
if not verlauf:
|
||||
return
|
||||
|
||||
# wert_bei() aus demselben Grund wie beim Kilometerstand (siehe Modulkopf):
|
||||
# der Tankstand zu Fahrtbeginn ist der zuletzt DAVOR gemeldete, nicht der
|
||||
# zeitlich nächstgelegene - der läge womöglich schon in der Fahrt und hätte
|
||||
# einen Teil des Verbrauchs vorweggenommen. historienimport.py liest ihn
|
||||
# seit jeher so.
|
||||
verbrauch = verbrauch_aus_literstaenden(
|
||||
naechster_wert(start, verlauf), naechster_wert(ende, verlauf), fahrt.get("distance_km")
|
||||
wert_bei(verlauf, start), wert_bei(verlauf, ende), fahrt.get("distance_km")
|
||||
)
|
||||
if verbrauch is not None:
|
||||
await k.ablage.fahrt_aktualisieren(fahrt["trip_id"], {"verbrauch_l_100km": verbrauch})
|
||||
|
||||
Reference in New Issue
Block a user