"""Technische Konfiguration — die einzige Stelle, die vor der Installation angepasst werden muss (siehe INSTALL.md Schritt 4). Alles andere (WLAN-Name des Fahrzeugs, Pausenzeit, Reifendaten, ...) ist Teil des Fahrzeugprofils (data/fahrzeugprofil.json) und über die Oberfläche änderbar. Diese Entity-IDs sind es bewusst nicht: @state_trigger und die Fahrzeugstatus-Abfrage brauchen sie als festen Wert, bevor überhaupt ein Profil gelesen werden kann. In Home Assistant unter Entwicklerwerkzeuge -> Zustände nachschlagen. Werte lassen sich außerdem über das Setup-Menü in der Oberfläche zuordnen (siehe entitaeten.py) - Änderungen von dort werden zur Laufzeit auf diese Variablen angewendet (überschreiben also die hier hinterlegten Standardwerte), ohne diese Datei anzufassen. **Im Auslieferstand sind alle Felder hier leer.** Das ist Absicht, kein unfertiger Zustand: welche Entity-IDs richtig sind, hängt an der jeweiligen Instanz und ihren Integrationen. Die Zuordnung passiert nach der Installation im Setup-Menü der App (Einstellungen -> Fahrzeug einrichten -> Setup), das sie nach data/entitaeten.json schreibt; diese Datei bleibt dabei unangetastet. Ein leeres Feld ist der sichere Zustand: die betroffene Kachel zeigt "unbekannt" statt eines falschen Werts (siehe zustand_oder_none() in frontend_veroeffentlichung.py), und die trigger-gebundenen Felder (ZUENDUNG_SENSOR, KM_SENSOR, TANK_SENSOR) registrieren gar keinen Trigger, statt einen gegen eine nicht existierende Entität zu registrieren. Eine gesetzte, aber falsche Entity-ID ist deshalb schlechter als eine leere. Zwei typische Quellen auf dieser Instanz: der Teltonika FMM003 (GPS-Tracker mit CAN-Anbindung, über flespi angebunden - Standort, Zündungsstatus, Bordnetzspannung, CAN-Werte wie Kilometerstand und Tankfüllstand) und eine EU-Data-Act-Integration des Herstellers (Kilometerstand, Tankfüllstand, Türen/Fenster/Schlösser, Reifendrücke, Ölwechsel-/Inspektionstermine). Welche davon welche Rolle bedient, entscheidet das Setup-Menü - nicht diese Datei. """ # Fahrterkennung (§7.1): Start/Ende einer Fahrt wird über den Zündungs-/ACC- # Status des FMM003 erkannt (on = Fahrt läuft), nicht mehr über die WLAN- # Verbindung des iPhones zum Fahrzeug (siehe fahrterkennung.py). # # Leer im Auslieferstand, wie alle Felder hier. Bis 2026-08-23 stand hier die # Entity-ID einer längst abgeräumten Testinstanz # ("binary_sensor.testzone_fmm003_..."). Auf einer frischen Installation # zeigte sie ins Leere - und richtete dabei mehr an, als nur nutzlos zu sein: # fahrterkennung.py registriert seinen @state_trigger nur, WENN dieses Feld # belegt ist ("if einstellungen.ZUENDUNG_SENSOR:", ausdrücklich als Schutz # gegen eine leere Entity-ID gebaut). Ein gesetzter, aber nicht existierender # Wert hebelt genau diesen Schutz aus. Dasselbe galt für BATTERIE_SENSOR # weiter unten. Zuordnung gehört ins Setup-Menü, nicht in den Auslieferstand. ZUENDUNG_SENSOR = "" # Kilometerstand - für Fahrtabschluss-Screening, Reifenzähler und # Ölwechsel-Prognose. # # Beim FMM003 hier NICHT den selbst berechneten Gesamtkilometerstand # (*_total_calculated_mileage) zuordnen: der beruht auf GPS-Streckenrechnung # statt auf dem Tacho und damit auf einer anderen Zählbasis als der echte # Fahrzeug-Kilometerstand. Wer ihn einträgt, verfälscht alle drei genannten # Auswertungen mit einem inkonsistenten Basiswert. Der vom CAN gelesene Wert # (*_total_vehicle_mileage_read_from_can) bzw. der Kilometerstand der # EU-Data-Act-Integration ist der richtige. KM_SENSOR = "" # Tankfüllstand (Prozent) - keine Quelle mehr vorhanden (der FMM003 ist kein # Tankgeber). TANK_SENSOR = "" # Reichweite (§5.1 Übersicht) - keine Quelle mehr vorhanden. RANGE_SENSOR = "" # 12V-Batteriespannung (Mein Audi -> Zustand). Beim FMM003 ist das # external_power_voltage - die vom Gerät gemessene Bordnetzspannung des # Fahrzeugs -, NICHT battery_voltage (das ist die interne Pufferbatterie des # Trackers selbst und hat mit der Fahrzeugbatterie nichts zu tun). # Leer im Auslieferstand, siehe ZUENDUNG_SENSOR oben. BATTERIE_SENSOR = "" # Knopf für eine sofortige Neuabfrage beim Fahrzeug - kam aus der # TommiG1-Integration, keine Entsprechung beim FMM003 vorhanden. REFRESH_BUTTON = "" # Türen (§4.1) - keine Quelle mehr vorhanden. TUER_SENSOREN = [] # Fenster (§4.1) - keine Quelle mehr vorhanden. FENSTER_SENSOREN = [] # Heckklappe und Motorhaube - keine Quelle mehr vorhanden. HECKKLAPPE_SENSOR = "" HAUBE_SENSOR = "" # Vom Fahrzeug selbst gemeldete Service-Fälligkeit (ergänzt die App-eigene, # aus dem Servicebuch berechnete Prognose) - keine Quelle mehr vorhanden. NAECHSTER_OELWECHSEL_SENSOR = "" OELWECHSEL_STRECKE_SENSOR = "" NAECHSTE_INSPEKTION_SENSOR = "" INSPEKTION_STRECKE_SENSOR = "" # Live-GPS-Position des Fahrzeugs (Übersicht -> Standort-Kachel). Breiten-/ # Längengrad als zwei eigene sensor-Entities (flespi liefert Koordinaten so, # nicht als Attribute einer device_tracker-Entity - siehe _standort() in # frontend_veroeffentlichung.py). STANDORT_LAT_SENSOR = "" STANDORT_LON_SENSOR = "" # Update-Funktion (Einstellungen -> "Update suchen", siehe # updateverwaltung.py): Git-Repository, in das dieses Projekt gepflegt wird - # z. B. ein privates GitHub-Repo, genau wie für die HACS-Integration bereits # verwendet. Leer lassen, solange es keins gibt - "Update suchen" meldet dann # nur "keine Update-Quelle eingerichtet", ohne etwas zu tun. UPDATE_REPO_URL = "" UPDATE_BRANCH = "main"