Statistik-Icon-Groesse, Batteriediagramm-Ueberarbeitung, Temperatur-Kopplung mit 300s-Fenster, letzte gueltige Spannung als Fallback

- Statistik-Tab-Icon per zentrierter Stauchung an die Fuellflaeche der
  anderen Tab-Icons angeglichen (Panel + companion-app), auf Nutzerwunsch
  anschliessend 10% groesser.
- Batteriediagramm neu gezeichnet: dynamische viewBox (1 Einheit = 1 Pixel,
  kein preserveAspectRatio-Verzerren mehr), ein Punkt je Ruhespannungsmessung
  statt Datumsbeschriftung, Tageshoechstwert nur noch im Tooltip. Generator-
  spannungen (> AGM_RUHE_MAX_V = 13,0 V, vom Nutzer festgelegt) bleiben aus
  dem Diagramm aussen vor; der SOC-Kurve-Eckwert "100% / voll" bleibt bei den
  ursprünglich recherchierten 12,8 V. companion-app auf dieselbe lineare
  SOC-Interpolation umgestellt (vorher eine abweichende Stufenkurve).
- Außentemperatur wird jetzt auch beim Batterieverlauf-Import nachgetragen
  (vorher nur live) - Kopplung an die naechstgelegene Messung innerhalb
  NEBENWERT_MAX_ABSTAND_S (verlauf.py), vom Nutzer nach Live-Daten-Analyse
  auf 300s festgelegt. Merge-Logik in ablage.py ergaenzt: ein erneuter Import
  kann eine zuvor fehlende Temperatur jetzt tatsaechlich nachtragen, auch
  wenn sich der Tagesminimalwert selbst nicht aendert.
- "Mein Audi"/Zustand zeigt bei unplausibler Live-Messung (z. B. Dongle
  offline) die zuletzt gemessene Spannung statt "unbekannt".

Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
2026-08-27 23:23:12 +02:00
co-authored by Claude Sonnet 5
parent 80d73e8afd
commit 172db54e7a
12 changed files with 626 additions and 85 deletions
+13 -1
View File
@@ -349,7 +349,17 @@ class Ablage:
ihn beim ersten Wert des Tages an, erweitert sonst nur min/max samt
dem Zeitstempel der jeweils neuen Extremmessung. min_temp_c wird nur
mitgeschrieben, wenn diese Messung auch den Minimalwert setzt - sie
gilt für genau diesen Zeitpunkt, nicht für den Tag insgesamt."""
gilt für genau diesen Zeitpunkt, nicht für den Tag insgesamt.
Sonderfall, ohne den ein erneuter Import nichts nachliefern könnte:
meldet ein späterer Aufruf exakt denselben (bereits gespeicherten)
Minimalwert erneut, aber mit einer jetzt verfügbaren Temperatur, wo
vorher keine lag - z. B. weil NEBENWERT_MAX_ABSTAND_S seither
aufgeweitet wurde und die damals zu weit entfernte Temperaturmessung
jetzt innerhalb der Grenze liegt -, wird min_temp_c nachträglich
gefüllt. `spannung < eintrag["min"]` allein hätte das nie erlaubt:
derselbe Wert ist nie *kleiner* als sich selbst, also griff die
Aktualisierung nur beim allerersten Mal."""
async with self._sperre:
verlauf = await self.batterieverlauf_lesen()
for eintrag in verlauf:
@@ -359,6 +369,8 @@ class Ablage:
eintrag["min"] = spannung
eintrag["min_ts"] = ts
eintrag["min_temp_c"] = aussentemp
elif spannung == eintrag["min"] and eintrag.get("min_temp_c") is None and aussentemp is not None:
eintrag["min_temp_c"] = aussentemp
if spannung > eintrag["max"]:
eintrag["max"] = spannung
eintrag["max_ts"] = ts