Werte bearbeiten
diff --git a/custom_components/audi_dashboard/frontend/audi-dashboard.css b/custom_components/audi_dashboard/frontend/audi-dashboard.css
index 803546c..ff2c1f8 100644
--- a/custom_components/audi_dashboard/frontend/audi-dashboard.css
+++ b/custom_components/audi_dashboard/frontend/audi-dashboard.css
@@ -461,7 +461,12 @@ button.sicherheitszeile:active { background: var(--tile-2); }
}
.leaf .k { font-size: 14px; color: var(--fg); display: flex; flex-direction: column; gap: 3px; line-height: 1.35; }
.leaf .k small { font-size: 12.5px; color: var(--fg3); }
-.leaf .v { font-size: 13px; color: var(--fg2); text-align: right; display: flex; flex-direction: column; gap: 3px; flex: 0 0 auto; }
+/* Feste Mindestbreite, damit Strecke und Verbrauch ueber alle Zeilen hinweg
+ in einer Spalte stehen. Ohne sie waechst der Kasten mit dem Inhalt: gemessen
+ 86px bei "11,4 l/100 km" gegen 37px bei einer Zeile ohne Werte, und die
+ Zahlen standen entsprechend versetzt. 92px traegt die laengste Form
+ ("11,4 l/100 km") ohne Umbruch. */
+.leaf .v { font-size: 13px; color: var(--fg2); text-align: right; display: flex; flex-direction: column; gap: 3px; flex: 0 0 auto; min-width: 92px; }
.leaf .v small { font-size: 12.5px; color: var(--fg3); }
/* .teaser (die "Zuletzt"-Kachel auf der Übersicht, teaser()): genau zwei
Zeilen mit sehr unterschiedlich breiten Werten ("offen" vs. "51,59 l") -
diff --git a/custom_components/audi_dashboard/historienimport.py b/custom_components/audi_dashboard/historienimport.py
index 1faddd3..297b414 100644
--- a/custom_components/audi_dashboard/historienimport.py
+++ b/custom_components/audi_dashboard/historienimport.py
@@ -57,6 +57,7 @@ from .verlauf import (
verbrauch_aus_literstaenden,
verlauf_lesen,
Verlaufspunkt,
+ wert_ab,
wert_bei,
wert_in_naehe,
zahl,
@@ -256,7 +257,9 @@ async def _fahrten_importieren(k: Koordinator, verlaeufe: dict) -> dict:
"end_lon": wert_bei(lon_verlauf, f_ende),
"route": route_aus_verlauf(lat_verlauf, lon_verlauf, f_start, f_ende),
"verbrauch_l_100km": verbrauch_aus_literstaenden(
- wert_bei(tank_liter_verlauf, f_start), wert_bei(tank_liter_verlauf, f_ende), distanz
+ # Erster Stand AB Fahrtbeginn, siehe wert_ab() - beide Wege
+ # muessen dieselbe Fahrt gleich bewerten.
+ wert_ab(tank_liter_verlauf, f_start), wert_bei(tank_liter_verlauf, f_ende), distanz
),
"status": "vollständig" if distanz is not None else "offen",
})
diff --git a/custom_components/audi_dashboard/manifest.json b/custom_components/audi_dashboard/manifest.json
index 0bcc0e0..2cbefaf 100644
--- a/custom_components/audi_dashboard/manifest.json
+++ b/custom_components/audi_dashboard/manifest.json
@@ -1,7 +1,7 @@
{
"domain": "audi_dashboard",
"name": "Audi Dashboard",
- "version": "2026.9.1.23",
+ "version": "2026.9.1.24",
"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"],
diff --git a/custom_components/audi_dashboard/screening.py b/custom_components/audi_dashboard/screening.py
index d62508b..135e840 100644
--- a/custom_components/audi_dashboard/screening.py
+++ b/custom_components/audi_dashboard/screening.py
@@ -41,6 +41,7 @@ from .verlauf import (
route_aus_verlauf,
verbrauch_aus_literstaenden,
verlauf_lesen,
+ wert_ab,
wert_bei,
)
@@ -338,13 +339,12 @@ 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.
+ # Anders als beim Kilometerstand: fuer den Tankstand gilt der erste Wert AB
+ # dem Fahrtbeginn, nicht der letzte davor. Ein Fuellstand ist keine
+ # Zaehlung, er driftet im Stand - siehe wert_ab() in verlauf.py fuer die
+ # Messung, die das gezeigt hat. Das Ende bleibt bei wert_bei().
verbrauch = verbrauch_aus_literstaenden(
- wert_bei(verlauf, start), wert_bei(verlauf, ende), fahrt.get("distance_km")
+ wert_ab(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})
diff --git a/custom_components/audi_dashboard/verlauf.py b/custom_components/audi_dashboard/verlauf.py
index 4e61947..2b608b2 100644
--- a/custom_components/audi_dashboard/verlauf.py
+++ b/custom_components/audi_dashboard/verlauf.py
@@ -244,6 +244,37 @@ def wert_bei(
return davor
+def wert_ab(
+ verlauf: list[Verlaufspunkt], zeitpunkt: datetime.datetime
+) -> float | None:
+ """Der erste ab `zeitpunkt` gemeldete Zahlenwert, sonst der letzte davor.
+
+ Gegenstueck zu wert_bei(). Fuer einen ZAEHLER ist -zuletzt davor- richtig
+ (der Kilometerstand aendert sich im Stand nicht), fuer einen gemessenen
+ FUELLSTAND nicht: der driftet.
+
+ Am 01.09.2026 an der Fahrt Eichstaett - Adelschlag nachgemessen. Der
+ Tankstand stand am Ende der vorigen Fahrt (13:52) auf 36,4 l, beim ersten
+ Datensatz der neuen Fahrt (16:20:49) auf 36,2 l - in der Standzeit dazwischen
+ ist niemand gefahren. Diese 0,2 l Setzung wurden der neuen Fahrt zugerechnet:
+ 0,8 l statt 0,6 l auf 6,9 km, also **11,4 statt 8,7 l/100 km**.
+
+ Das Fahrtende bleibt bei wert_bei(): dort ist die Fahrt vorbei, und der
+ letzte waehrend der Fahrt gemeldete Stand ist der richtige - der naechste
+ kaeme erst Stunden spaeter und traege dieselbe Setzung wieder herein."""
+ danach = None
+ for ts, wert in verlauf:
+ gezahlt = zahl(wert)
+ if gezahlt is None:
+ continue
+ if ts >= zeitpunkt:
+ danach = gezahlt
+ break
+ if danach is not None:
+ return danach
+ return wert_bei(verlauf, zeitpunkt)
+
+
def route_aus_verlauf(
lat_verlauf: list[Verlaufspunkt],
lon_verlauf: list[Verlaufspunkt],