Batteriespannungs-Messwertliste, Wisch-Löschen, Reifensatz-Archiv, CI-Icons
Fünf vom Nutzer angeforderte Erweiterungen in einer Runde:
- Batteriespannungs-Kachel bekommt eine Messwertliste (Datum, Uhrzeit,
Spannung, optional Außentemperatur über den neuen AUSSENTEMP_SENSOR),
erreichbar über ein neues list-s-Symbol in der Diagramm-Kachel. Werte
über AGM_RUHE_MAX_V (12,8 V) sind keine Ruhespannung, sondern
Lichtmaschinenspannung - die Zeile markiert das jetzt mit
"Generatorspannung" statt es unkommentiert als Messwert auszugeben.
- Jede Zeile der neuen Liste wischbar zum Löschen (neuer Dienst
batterieverlauf_loeschen), über dieselbe Wisch-Mechanik wie Fahrten/
Tankvorgänge in beiden Oberflächen.
- Batteriespannungs-Diagramm im Panel war auf großen Bildschirmen (≥860px,
Spaltenlayout) stark in die Breite gezogen (preserveAspectRatio="none"
bei fester Höhe) - gedeckelt wie die dort bereits vorhandenen Popups.
- Statistik-Tab-Symbol in beiden Oberflächen durch das Audi-CI-Symbol
polls-s ersetzt.
- Neue Möglichkeit, einen Reifensatz zu archivieren ("Neue Räder
anlegen"): der aktuelle Stand (km, Marke, Modell, DOT, Maße, Solldruck,
Kommentar) wandert in ein Archiv, der laufende Satz beginnt bei 0 km neu.
Archiv als aufklappbare Übersicht mit voller Bearbeitungsmöglichkeit,
über drei neue, bewusst nicht über profilSchreiben laufende Dienste
(reifen_archivieren/-aktualisieren/-loeschen) - aus demselben Grund wie
reifen_wechseln: kein im Browser gehaltener Stand darf einen
zwischenzeitlich fortgeschriebenen km-Wert überschreiben.
Live im Testcontainer geprüft (erstmals über :18123 statt :8123 erreichbar)
und dabei zwei echte Layout-Fehler gefunden, die kein Compile-/Testlauf
sehen konnte: die Archiv-Eingabefelder waren durch ein fälschlich
verwendetes .mitEinheit (feste 96px-Breite, eigentlich für Zahl+Einheit
gedacht) abgeschnitten ("Continenta" statt "Continental"), und die
Kilometerzahl in der eingeklappten Archiv-Zeile war klein an das Datum
gequetscht statt wie der Satzname lesbar. Beides behoben, live erneut
bestätigt.
Backend: py_compile clean, services.yaml ergänzt. Panel: node --check
clean. companion-app: tsc/Testsuite (146/146)/Build/OTA-Bündel alle grün.
Manifest 2026.8.25.2 → .8, jeder Neustart im Testcontainer sauber.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -27,6 +27,12 @@ langen Fahrt), tauchen dort nicht in der Statistik auf.
|
||||
|
||||
Ohne zugeordneten BATTERIE_SENSOR passiert hier bewusst nichts, statt
|
||||
Platzhalter-Nullwerte aufzuzeichnen.
|
||||
|
||||
Optional wird bei jeder neuen Tagesminimum-Messung auch die aktuelle
|
||||
Außentemperatur (AUSSENTEMP_SENSOR, CAN ambient air temperature) mit
|
||||
aufgezeichnet - für die Messwertliste (Datum, Uhrzeit, Außentemperatur), nicht
|
||||
für die Ladezustandsauswertung selbst. Ohne zugeordneten Temperatursensor
|
||||
bleibt das Feld None, genau wie beim Batteriesensor.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
@@ -55,10 +61,33 @@ async def pruefen(k: Koordinator) -> None:
|
||||
except (TypeError, ValueError):
|
||||
return
|
||||
|
||||
aussentemp = None
|
||||
temp_wert = zustand_oder_none(k.hass, k.zuordnung.werte.AUSSENTEMP_SENSOR)
|
||||
if temp_wert is not None:
|
||||
try:
|
||||
aussentemp = float(temp_wert)
|
||||
except (TypeError, ValueError):
|
||||
pass
|
||||
|
||||
jetzt = datetime.datetime.now(datetime.UTC)
|
||||
heute = datetime.date.today().isoformat()
|
||||
await k.ablage.batterieverlauf_tageswert_aktualisieren(
|
||||
heute, jetzt.isoformat(), spannung
|
||||
heute, jetzt.isoformat(), spannung, aussentemp
|
||||
)
|
||||
await k.batterieverlauf_veroeffentlichen()
|
||||
_LOGGER.debug("Batteriespannung erfasst (%s: %s V)", heute, spannung)
|
||||
|
||||
|
||||
async def eintrag_loeschen(k: Koordinator, datum: str | None) -> None:
|
||||
"""Löscht einen Tageseintrag aus der Messwertliste (Wischen zum Löschen).
|
||||
|
||||
Entfernt nur diesen einen Tag - min/max anderer Tage bleiben unberührt,
|
||||
das Diagramm zeichnet beim nächsten Aufruf einfach ohne diesen Punkt."""
|
||||
if not datum:
|
||||
_LOGGER.warning("batterieverlauf_loeschen ohne datum aufgerufen")
|
||||
return
|
||||
if await k.ablage.batterieverlauf_eintrag_loeschen(datum):
|
||||
await k.batterieverlauf_veroeffentlichen()
|
||||
_LOGGER.info("Batteriespannungs-Tageseintrag %s gelöscht", datum)
|
||||
else:
|
||||
_LOGGER.warning("Batteriespannungs-Tageseintrag %s nicht gefunden", datum)
|
||||
|
||||
Reference in New Issue
Block a user