INSTALL.md an Setup-Menü und FMM003 anpassen
Ersetzt die veralteten Installationsschritte (manuelles Eintragen von WLAN_SENSOR/TommiG1-Entity-IDs in einstellungen.py) durch eine Anleitung für das neue Setup-Menü in der App und die aktuellen FMM003-Feldnamen (ZUENDUNG_SENSOR, STANDORT_TRACKER, BATTERIE_SENSOR). AGENTS.md entsprechend nachgeführt. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+59
-34
@@ -22,8 +22,13 @@ zeigt. `panel_custom` selbst ist Home Assistants eigener, seit Jahren
|
||||
stabiler Mechanismus, nicht eigener Code, entsprechend gering ist das
|
||||
Risiko dort.
|
||||
|
||||
**Voraussetzung:** HACS ist bereits installiert (ergibt sich aus der
|
||||
laufenden Integration `TommiG1/HA_VAG-EU-Data-Act`).
|
||||
**Voraussetzung:** HACS ist bereits installiert (wird für pyscript selbst
|
||||
gebraucht, siehe Schritt 1). Für die Fahrterkennung und die Fahrzeugdaten
|
||||
wird zusätzlich ein Teltonika FMM003 (bzw. dessen Integration in Home
|
||||
Assistant, z. B. über flespi) vorausgesetzt — Details siehe
|
||||
`COMPANION_APP_ARCHITECTURE.md` im Projektstamm. Ohne FMM003 läuft die App
|
||||
trotzdem: alle davon abhängigen Werte zeigen einfach „unbekannt" statt
|
||||
eines Werts.
|
||||
|
||||
Zeitaufwand: ca. 30–40 Minuten, größtenteils Warten auf Neustarts.
|
||||
|
||||
@@ -82,36 +87,52 @@ ergänzen statt einen zweiten Block anzulegen.
|
||||
Der `panel_custom:`-Block kann schon jetzt mit rein; er wird erst mit dem
|
||||
Frontend-Baustein wirksam und stört bis dahin nicht.
|
||||
|
||||
## Schritt 4 — die Entity-IDs eintragen
|
||||
## Schritt 4 — die Sensoren zuordnen
|
||||
|
||||
Das ist die einzige Stelle, die inhaltlich angepasst werden muss — Datei
|
||||
`pyscript/modules/einstellungen.py`.
|
||||
Anders als früher wird dafür **nicht** mehr `pyscript/modules/
|
||||
einstellungen.py` von Hand bearbeitet — das übernimmt ein grafisches
|
||||
Setup-Menü direkt in der App: **Mein Audi → Einstellungen → Fahrzeug
|
||||
einrichten → Einrichten → „Setup — Sensoren zuordnen"** (letzter Punkt,
|
||||
erscheint erst nach Klick auf „Einrichten"). Dafür muss die App bereits
|
||||
laufen, siehe Schritt 9 zuerst.
|
||||
|
||||
**Zwingend fürs Backend** (ohne diese drei läuft die Kernlogik nicht):
|
||||
Das Setup-Menü listet jede Sensor-Rolle, die die App kennt (Zündung/
|
||||
Fahrterkennung, Kilometerstand, Tankfüllstand, Standort, Batteriespannung,
|
||||
Türen/Fenster/Schlösser, Ölwechsel/Inspektion, …), schlägt je Rolle
|
||||
passende vorhandene HA-Entitäten vor (Schalter „Nur passende Sensoren
|
||||
anzeigen" grenzt auf die erwartete Domäne/Einheit ein) und schreibt die
|
||||
Auswahl direkt in eine Override-Datei — `einstellungen.py` selbst bleibt
|
||||
unverändert.
|
||||
|
||||
1. In Home Assistant: **Entwicklerwerkzeuge → Zustände**
|
||||
2. Dort suchen und die genauen Entity-IDs notieren für:
|
||||
- den Kilometerstand-Sensor (aus `TommiG1/HA_VAG-EU-Data-Act`) → `KM_SENSOR`
|
||||
- den Tankfüllstand-Sensor (dieselbe Integration) → `TANK_SENSOR`
|
||||
- den WLAN-Verbindungssensor des iPhones → `WLAN_SENSOR` — dafür vorher
|
||||
in der iOS-Companion-App unter **Einstellungen → Companion App →
|
||||
Sensoren** den Sensor für das verbundene WLAN aktivieren, falls er dort
|
||||
noch grau ist
|
||||
**Zwingend, damit die Fahrterkennung läuft:**
|
||||
- **Zündung/ACC-Status** (`ZUENDUNG_SENSOR`) — ein `binary_sensor`, `on`
|
||||
= Fahrt läuft. Kommt vom Teltonika FMM003 (z. B.
|
||||
`binary_sensor.<gerätename>_engine_ignition_or_acc_status`).
|
||||
|
||||
**Optional fürs Frontend** (nur für die Übersicht/Zustand-Seite, ohne sie
|
||||
zeigt die Oberfläche „unbekannt" statt eines Werts — kein Absturz):
|
||||
**Alles Weitere ist optional** — ohne zugeordneten Sensor zeigt die
|
||||
Oberfläche „unbekannt"/em-dash statt eines Werts, kein Absturz:
|
||||
- Kilometerstand (`KM_SENSOR`), Tankfüllstand (`TANK_SENSOR`), Reichweite
|
||||
(`RANGE_SENSOR`) — bis zu einer neuen Datenquelle unbelegt, siehe
|
||||
`AGENTS.md` (die frühere `TommiG1/HA_VAG-EU-Data-Act`-Integration liefert
|
||||
diese nicht mehr)
|
||||
- Standort (`STANDORT_TRACKER`, ein `device_tracker`) und Batteriespannung
|
||||
(`BATTERIE_SENSOR`) — vom FMM003, z. B. `device_tracker.<gerätename>`
|
||||
bzw. `sensor.<gerätename>_external_power_voltage` (**nicht**
|
||||
`..._battery_voltage` — das ist die interne Pufferzelle des Trackers,
|
||||
nicht die Fahrzeugbatterie)
|
||||
- Türen/Fenster/Schlösser, Ölwechsel/Inspektion — je nach Fahrzeug/
|
||||
Integration vorhanden oder nicht
|
||||
|
||||
3. Ebenfalls in Entwicklerwerkzeuge → Zustände suchen:
|
||||
- Reichweite → `RANGE_SENSOR`
|
||||
- Türstatus (falls als ein Sammel-Sensor vorhanden) → `DOORS_SENSOR`
|
||||
- Fensterstatus → `WINDOWS_SENSOR`
|
||||
- Verriegelung (Domäne `lock.`) → `LOCK_ENTITY`
|
||||
- Batteriespannung, falls überhaupt vorhanden → `BATTERY_VOLTAGE_SENSOR`
|
||||
Wer lieber direkt in Entwicklerwerkzeuge → Zustände nach Entity-IDs sucht,
|
||||
kann das weiterhin tun — die Suche im Setup-Menü filtert exakt auf
|
||||
denselben Datenbestand (`HASS.states`), nur mit Vorschlägen und Filter.
|
||||
|
||||
4. Datei `pyscript/modules/einstellungen.py` öffnen (Samba: direkt im
|
||||
Explorer, Studio Code Server: im Editor) und alle gefundenen Werte
|
||||
eintragen. Was ihr nicht findet, einfach auf dem Platzhalter stehen
|
||||
lassen — siehe Kommentar in der Datei dazu.
|
||||
**Einschränkung bei drei Feldern** (Zündung, Kilometerstand,
|
||||
Tankfüllstand): sie sind intern fest mit einem Auslöser verdrahtet
|
||||
(`@state_trigger`), der einmalig beim Laden des Backends gesetzt wird.
|
||||
Eine Änderung im Setup-Menü wird gespeichert, wirkt für die Fahrterkennung
|
||||
selbst aber erst nach einem Neustart von Home Assistant — das Setup-Menü
|
||||
zeigt dafür einen Hinweis an.
|
||||
|
||||
## Schritt 5 — Long-Lived Access Token erzeugen
|
||||
|
||||
@@ -152,10 +173,14 @@ eingebauten Weg, auf die Recorder-Historie zuzugreifen, deshalb läuft das
|
||||
`pyscript.audi_dashboard_tankvorgang_manuell` sollten dort erscheinen
|
||||
|
||||
Wenn das alles stimmt, läuft das Backend. Die Fahrterkennung selbst lässt
|
||||
sich am einfachsten testen, indem das WLAN am Handy kurz ausgeschaltet und
|
||||
wieder eingeschaltet wird (Pausenregel greift) bzw. länger als die
|
||||
eingestellte Pausenzeit ausgeschaltet bleibt (Fahrt wird angelegt) — danach
|
||||
in `audi_dashboard/fahrten.jsonl` nachsehen, ob eine Zeile entstanden ist.
|
||||
sich am einfachsten testen, indem der Zündungs-Sensor (`ZUENDUNG_SENSOR`,
|
||||
nach dem Zuordnen in Schritt 4) kurz auf `on` und wieder auf `off` gesetzt
|
||||
wird (Pausenregel greift, kurzer Ausflug wird als eine Fahrt gewertet) bzw.
|
||||
länger als die eingestellte Pausenzeit auf `off` bleibt (Fahrt wird
|
||||
angelegt) — am Fahrzeug reicht dafür kurz die Zündung, ohne Fahrzeug
|
||||
funktioniert es auch manuell über **Entwicklerwerkzeuge → Zustände** (den
|
||||
Sensor suchen, Zustand testweise auf `on`/`off` setzen). Danach in
|
||||
`audi_dashboard/fahrten.jsonl` nachsehen, ob eine Zeile entstanden ist.
|
||||
|
||||
## Schritt 8 — was jetzt noch fehlt, bevor es vollständig nutzbar ist
|
||||
|
||||
@@ -186,7 +211,7 @@ Der `panel_custom`-Eintrag aus Schritt 3 zeigt auf
|
||||
2. Die Übersicht sollte erscheinen: Fahrzeugbild (als Platzhalter, siehe
|
||||
unten), Typenschild, Kilometerstand, Reichweite. Falls Kilometerstand
|
||||
oder Reichweite „unbekannt"/leer bleiben, obwohl Schritt 7 erfolgreich
|
||||
war: die optionalen Entity-IDs aus Schritt 4 nachtragen.
|
||||
war: die optionalen Sensoren aus Schritt 4 im Setup-Menü zuordnen.
|
||||
3. Falls die Seite leer bleibt oder gar nicht in der Sidebar erscheint: im
|
||||
Browser die Entwicklerkonsole öffnen (F12) und nach Fehlern mit
|
||||
„audi-dashboard" oder „pyscript" suchen — siehe Troubleshooting.
|
||||
@@ -265,10 +290,10 @@ Update-Durchlauf bei euch.
|
||||
|---|---|
|
||||
| `ModuleNotFoundError: No module named 'einstellungen'` (oder `profil`, `fahrtabschluss_logik`) | Ordner falsch kopiert — `modules/`-Unterordner muss unter `pyscript/modules/` liegen, nicht direkt unter `pyscript/` |
|
||||
| pyscript lädt gar nicht, keine Fehler, keine Services | `allow_all_imports: true` fehlt oder Einrückung in der `configuration.yaml` ist falsch (YAML ist einrückungsempfindlich) |
|
||||
| Fahrt wird nie angelegt | `WLAN_SENSOR` in `einstellungen.py` zeigt auf die falsche Entity, oder `fahrzeug.wlan_name` im Profil passt nicht exakt zum Sensorwert (Groß-/Kleinschreibung zählt) |
|
||||
| Fahrt wird nie angelegt | `ZUENDUNG_SENSOR` ist im Setup-Menü nicht oder falsch zugeordnet, oder er ist nach einer Änderung im Setup-Menü noch nicht durch einen HA-Neustart aktiv geworden (siehe Schritt 4) |
|
||||
| Screening findet nie einen Kilometerstand | `ha_token.txt` fehlt, ist leer, oder der Token wurde widerrufen — in den Protokollen nach `HTTPError` oder `401` suchen |
|
||||
| Reifenzähler zeigt dauerhaft „unbekannt" | `KM_SENSOR` in `einstellungen.py` liefert keinen Wert, oder es kam seit der Installation noch keine Änderung des Kilometerstands an (reifenzaehler.py reagiert nur auf Sensor-Änderungen) |
|
||||
| Reifenzähler zeigt dauerhaft „unbekannt" | `KM_SENSOR` ist im Setup-Menü nicht zugeordnet, oder es kam seit der Installation noch keine Änderung des Kilometerstands an (reifenzaehler.py reagiert nur auf Sensor-Änderungen) |
|
||||
| „Mein Audi" fehlt in der Sidebar | `panel_custom:`-Block fehlt oder ist falsch eingerückt in `configuration.yaml`; nach Änderungen daran hilft nur ein vollständiger Neustart, kein „YAML neu laden" |
|
||||
| Sidebar-Eintrag da, Seite bleibt leer | Browser-Konsole (F12) prüfen: 404 bei `/local/audi-dashboard-panel.js` → Datei liegt nicht unter `/config/www/`; JS-Fehler beim Laden → Datei unvollständig kopiert, Dateigröße mit dem Original vergleichen |
|
||||
| Übersicht erscheint, aber alle Werte „unbekannt" | Normal, solange `KM_SENSOR`/`TANK_SENSOR`/... in `einstellungen.py` noch Platzhalter sind (Schritt 4) — kein Frontend-Fehler |
|
||||
| Übersicht erscheint, aber alle Werte „unbekannt" | Normal, solange `KM_SENSOR`/`TANK_SENSOR`/... im Setup-Menü noch nicht zugeordnet sind (Schritt 4) — kein Frontend-Fehler |
|
||||
| Karten bleiben leer auf Fahrt-/Tankdetailseite | Gerät hat keinen Internetzugang zusätzlich zu Tailscale — Leaflet lädt von einem CDN (siehe Schritt 9) |
|
||||
|
||||
Reference in New Issue
Block a user