sphings-dev.de

Leasing KM 2.0: Gemessen ab Vertragsbeginn, mit eigener Karte und Kostenrechnung

Die erste Version von leasing-km-home-assistant rechnete jeden Wert vom rohen Tachostand aus. Das stimmt nur, wenn das Auto am ersten Vertragstag null Kilometer auf der Uhr hatte. Bei einem Gebrauchtwagen oder einer Vertragsübernahme war die Messung von der ersten Aktualisierung an falsch. Version 2.0.0 ist ein Umbau um genau diese Korrektur.

Gemessen ab Vertragsbeginn

Die Integration kennt jetzt einen Kilometerstand bei Vertragsbeginn. Alle Werte werden aus Tachostand − dieser Stand abgeleitet, nie aus dem rohen Tachostand. Bestehende Verträge werden mit 0 migriert, damit sich zunächst keine Zahl ändert; den echten Stand trägt man unter „Neu konfigurieren“ ein. Bis dahin misst die Integration wie in Version 1 gegen den rohen Tachostand.

Die Karte ist Teil der Integration

Die Lovelace-Karte lag früher in einem eigenen Repository (sphings79/leasing_km_card, inzwischen archiviert). Jetzt liefert die Integration die Karte selbst aus und registriert die Ressource: „Leasing KM Card“ steht direkt nach der Einrichtung im Kartenauswahldialog. Wer das alte Repository benutzt hat, entfernt es aus HACS und löscht den Ressourceneintrag; die Dashboards laufen weiter, der Kartentyp ist unverändert. Dashboards im YAML-Modus brauchen einmalig den Eintrag /leasing_km/leasing-km-card.js als Modul-Ressource, denn dort verwaltet Home Assistant die Ressourcenliste nicht.

Die Karte wurde auf Lit und TypeScript umgebaut. Sie nutzt nur CSS-Variablen von Home Assistant und funktioniert deshalb auch mit hellen Themes, und sie zeichnet nur neu, wenn sich ein angezeigter Wert wirklich geändert hat, statt bei jeder Zustandsänderung im System. Optionen sind device_id, title, clamp_percent (deckelt die Prozentanzeige bei 100 % statt der echten Überschreitung), show_contract_year, show_forecast und show_costs.

Die Leasing-KM-Karte: eine Anzeige mit 65,2 Prozent verbrauchter Fahrleistung gegenüber 70,4 Prozent abgelaufener Laufzeit, Kacheln für Abweichungen, Vertragsjahr, Prognose und Abrechnung
Schematische Darstellung der Karte.

Weitere Neuerungen

  • Vertragsjahre laufen ab dem Vertragsbeginn, nicht ab Januar, samt gefahrenen Kilometern und Abweichung im laufenden Jahr. Das letzte Teiljahr wird am Vertragsende abgeschnitten, sodass die Jahre immer die gesamte Laufzeit ergeben. Der Stand zum Jahresbeginn kommt aus dem Recorder; ohne ihn bleiben diese beiden Sensoren unbekannt, alles andere funktioniert weiter.
  • Die Prognosebasis ist wählbar: Durchschnitt der ganzen Laufzeit, die letzten 30 oder die letzten 90 Tage.
  • Überschreitungen sind sichtbar: mileage_used darf über 100 % gehen, remaining_total negativ werden.
  • Eine Erinnerung bei manuell gepflegtem Tachostand: Nach 7, 14 oder 30 Tagen ohne Änderung erscheint ein Reparaturhinweis mit einem Eingabefeld, dessen Wert direkt in den input_number geschrieben wird.
  • Elf Sprachen; die Karte lädt nur den Katalog der eigenen Sprache.
  • Kilometer-Entitäten tragen die Geräteklasse distance und übernehmen die Einheit der Tacho-Entität, ein Vertrag in Meilen funktioniert also direkt.

Was beim Update bricht

Die Entitäts-IDs sind jetzt sprachunabhängig. Version 1 hatte sie auf Deutsch benannt, aus sensor.…_km_absolviert wurde sensor.…_mileage_used. Beim Update werden sie umbenannt, und ein Reparaturhinweis listet jede Änderung auf, damit sich Dashboards, Automationen und Skripte anpassen lassen. Selbst umbenannte IDs bleiben unangetastet. Der Options-Flow entfällt, alles wird über „Neu konfigurieren“ bearbeitet.

Version 2.1: der Vertrag in Geld

Die optionale Kostenberechnung ist zurück, jetzt als zweiter Setup-Schritt hinter dem Schalter „Kosten berechnen“. Man gibt Nachzahlung für Mehrkilometer, Erstattung für Minderkilometer, je eine Toleranz und eine Obergrenze für die Erstattung ein. Heraus kommen die erwartete Nachzahlung oder Erstattung zum Vertragsende, die Kosten, wenn man ab heute der Soll-Linie folgt, die Kilometer bis zum Ende der Toleranz und ein Flag, ob die Prognose sie überschreitet. Ein negativer Betrag ist eine Erstattung; die Währung kommt aus den Home-Assistant-Einstellungen. Die Karte zeigt das in einem eigenen Abschnitt. Ein Vertrag ohne Kostenrechnung bleibt unverändert.

Ob das Überschreiten der Toleranz alle Kilometer oder nur die darüber kostet, hängt vom Vertrag ab, und der Unterschied ist groß. Bei 2.501 km über dem Kontingent, 2.500 km Toleranz und 0,09 pro km ergibt „ab dem ersten Kilometer“ 225,09, „nur darüber“ 0,09. Deshalb ist es eine Einstellung, getrennt für Mehr- und Minderkilometer. Die Voreinstellung folgt dem üblichen deutschen Vertrag: Mehrkilometer ab dem ersten, Erstattung nur oberhalb der Toleranz und begrenzt durch die Erstattungsgrenze. Sätze werden so eingegeben, wie Verträge sie nennen, in Hundertstel pro Kilometer: 9 bedeutet 0,09.

Die Zahlen sind so gut wie die Vertragsdaten und das lineare Modell dahinter. Sie sind keine Rechnung, und es zählt nur, was der Leasinggeber bei der Rückgabe abliest.

Zwei Nachbesserungen

Version 2.1.1 war reine Dokumentation: Die Illustrationen zeigten noch den Stand vor der Kostenrechnung. Die Integration war unverändert. Version 2.1.2 behebt einen Migrationsfehler, der als „multiple config entries with the same unique ID“ auftrat. Version 1 vergab gar keine Unique-ID, derselbe Vertrag ließ sich also zweimal anlegen. Version 2 leitet sie aus der Tacho-Entität und dem Vertragsbeginn ab, wodurch zwei Duplikate dieselbe ID bekamen. Jetzt erhält nur das erste Duplikat die ID; das zweite bleibt ohne und voll funktionsfähig, und eine Log-Warnung nennt beide. Wer den Fehler schon sieht, aktualisiert und löscht den nicht benötigten Eintrag unter Geräte & Dienste → Leasing KM Calculator über das Drei-Punkte-Menü. Dessen Entitäten tragen das Suffix _2; behalten wird der Eintrag ohne, dann bleiben die Dashboards intakt.

Die Integration steht unter MIT-Lizenz und ist ein Community-Projekt ohne Verbindung zu Leasinggebern oder Herstellern.

Tags

Zum Projekt

Unterstützen

Diese Tools entstehen in meiner Freizeit und bleiben kostenlos, offen und cloud-frei. Wenn dir eins davon einen Nachmittag gespart hat, freue ich mich über einen Kaffee oder ein Stück Pizza.

Kaffee oder Pizza

Weitere Beiträge