Zugaenge: die Dienste-Token aus App und Panel bedienbar (2026.9.3.8)
Die Token liegen seit jeher in entry.options, geschrieben vom Options-Flow unter Einstellungen -> Geraete & Dienste -> Konfigurieren. Der Weg bleibt und ist der Rueckfall, wenn die App den Server nicht erreicht - genau der Fall, in dem ein abgelaufener Token auffaellt. Erreichbar ist er aber nur ueber HAs eigene Weboberflaeche; die iOS-App zeigt keine Konfigurationsdialoge. Die neue Kachel ist die Bedienflaeche dafuer, kein zweiter Speicherort. Der Wert kommt nie zurueck: veroeffentlicht werden nur "gesetzt/nicht gesetzt" und die letzten vier Zeichen (unter zwoelf Zeichen Laenge gar nichts). Auch das Protokoll bekommt ihn nicht, und das Panel leert das Eingabefeld sofort nach dem Absenden. Bewusst NICHT im Fahrzeugprofil: sicherung.py sichert fahrzeugprofil.json, und "Backup exportieren" laedt es als Datei auf das Geraet - ein Token dort wanderte in jede Sicherung und jede weitergegebene Datei. Ein Dienst statt zwei: zugang_setzen(dienst, token), leerer Text loescht. In der App nicht ueber die Warteschlange - ein Stunden spaeter nachgereichter Token ueberschriebe womoeglich einen inzwischen eingetragenen neuen. CONF_FLESPI_TOKEN ist neu und noch ohne Leser; der Flespi-Weg zum Auslesen der Geraetekonfiguration ist damit vorbereitet, aber nicht gebaut. Verifiziert: py_compile auf sechs Backend-Dateien, Panel als Modul geparst, companion-app tsc sauber und 179/179, audi_ha_test auf 2026.9.3.8 sauber gestartet. Live am laufenden Panel der ganze Kreis, Container hinterher wie vorgefunden: Wegwerf-Token gesetzt -> "gesetzt . ...0000", der Wert selbst taucht in den veroeffentlichten Attributen nirgends auf (darauf geprueft), ueber die Sicherheitsabfrage geloescht -> wieder "nicht gesetzt", der Gitea-Token unberuehrt. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
# AGENTS.md — Project state, review findings, open items, and working rules
|
||||
|
||||
**Last updated: 2026-09-03** („Fahrt beenden“ auf Knopfdruck mit vorlaeufigem Ende, Schieberegler in
|
||||
**Last updated: 2026-09-03** (Zugaenge: die Dienste-Token aus App und Panel bedienbar, der Wert kommt nie
|
||||
zurueck, `2026.9.3.8`, Abschnitt BY. Davor: „Fahrt beenden“ auf Knopfdruck mit vorlaeufigem Ende, Schieberegler in
|
||||
5-Minuten-Schritten und im Tagmodus sichtbar, `2026.9.3.7`, Abschnitt BX.
|
||||
Davor: Die Fahrt endet wieder bei uns statt im Dongle - Zuendung als Ausloeser,
|
||||
eigene Wartezeit, Nachlauf des Geraets abgezogen, Schieberegler, `2026.9.3.5`, Abschnitt BW.
|
||||
@@ -8942,3 +8943,62 @@ treffen sich bequem, und minutengenau ist hier ohnehin Scheingenauigkeit.
|
||||
Der Daumen war im **Tagmodus** kaum zu sehen: weiss auf weisser Kachel, nur ein Schatten. Er hat
|
||||
jetzt `border: 1px solid var(--line-strong)` — ein Token, zwei Themen: im Tagmodus zeichnet es ihn
|
||||
ab, im Nachtmodus ist es auf Weiss unsichtbar, wo es nicht gebraucht wird.
|
||||
|
||||
---
|
||||
|
||||
## BY. Zugänge: die Dienste-Token aus der App bedienbar (2026.9.3.8)
|
||||
|
||||
### Warum es das braucht, obwohl es den Options-Flow schon gibt
|
||||
|
||||
`CONF_GITEA_TOKEN` liegt seit Abschnitt J in `entry.options`, geschrieben vom Options-Flow unter
|
||||
Einstellungen → Geräte & Dienste → Audi Dashboard → Konfigurieren. Der Weg bleibt — er ist der
|
||||
**Rückfall**, wenn die App den Server gerade nicht erreicht, also genau der Fall, in dem ein
|
||||
abgelaufener Token auffällt.
|
||||
|
||||
Er ist aber nur über Home Assistants eigene Weboberfläche erreichbar. Die iOS-App zeigt keine
|
||||
HA-Konfigurationsdialoge; läuft unterwegs ein Token ab, müsste man einen Browser öffnen. Die neue
|
||||
Kachel ist die Bedienfläche dafür — **kein zweiter Speicherort**, sondern derselbe `entry.options`.
|
||||
|
||||
### Der Wert kommt nie zurück
|
||||
|
||||
`zugaenge.stand()` gibt ausschliesslich `gesetzt`/`nicht gesetzt` und die **letzten vier Zeichen**
|
||||
heraus; unter zwölf Zeichen Länge gar nichts, weil vier Zeichen eines kurzen Tokens schon ein
|
||||
nennenswerter Teil davon wären. Ein Token, der einmal drin ist, verlässt die Integration nicht
|
||||
wieder — weder über die veröffentlichte Entität noch über einen Dienst. Auch das Protokoll bekommt
|
||||
ihn nicht: `_LOGGER.info` nennt Dienst und Vorgang, nicht den Wert.
|
||||
|
||||
Das Panel leert das Eingabefeld unmittelbar nach dem Absenden, damit der Wert nicht im DOM
|
||||
stehenbleibt.
|
||||
|
||||
### Warum die Token nicht ins Fahrzeugprofil dürfen
|
||||
|
||||
Das war der Punkt, an dem die naheliegende Lösung falsch gewesen wäre. `sicherung.py` sichert fünf
|
||||
Dateien, darunter `fahrzeugprofil.json`, und „Backup exportieren" lädt Profil, Fahrten und
|
||||
Tankvorgänge als **eine Datei** auf das Gerät. Läge ein Token im Profil, wanderte er in jede
|
||||
Sicherung und in jede exportierte Datei, die man vielleicht weitergibt. Er bleibt deshalb dort, wo
|
||||
Home Assistant Geheimnisse ohnehin hält.
|
||||
|
||||
### Ein Dienst, nicht zwei
|
||||
|
||||
`zugang_setzen(dienst, token)` — **leerer Text löscht**. Ein eigener Lösch-Dienst wäre ein zweiter
|
||||
Weg zu derselben Wirkung. In der App läuft der Aufruf bewusst **nicht** über die Warteschlange: ein
|
||||
Token, der Stunden später aus dem Funkloch nachgereicht wird, überschriebe womöglich einen
|
||||
inzwischen eingetragenen neuen.
|
||||
|
||||
`DIENSTE` in `zugaenge.py` führt beide Token mit Zweck und einem Merkmal `erforderlich` — heute
|
||||
beide `False`. Ein Token, den die App zum Starten bräuchte, wäre hier ohnehin fehl am Platz: er
|
||||
müsste eingetragen sein, bevor jemand diese Oberfläche überhaupt öffnen kann. `CONF_FLESPI_TOKEN`
|
||||
ist neu und noch ohne Leser; der Flespi-Weg (Abschnitt AZ: `GET /gw/devices/{id}/settings/all`) ist
|
||||
damit vorbereitet, aber nicht gebaut.
|
||||
|
||||
### Verifiziert
|
||||
|
||||
`py_compile` auf sechs Backend-Dateien, Panel als Modul geparst, companion-app `tsc` sauber und
|
||||
179/179, `audi_ha_test` auf `2026.9.3.8` sauber gestartet.
|
||||
|
||||
**Live am laufenden Panel, ganzer Kreis, Container hinterher wie vorgefunden:** die Kachel zeigt
|
||||
Gitea als `gesetzt · …bad2` in Grün und flespi als `nicht gesetzt` in Grau; aufgeklappt ein
|
||||
Passwortfeld mit passendem Platzhalter und die Knöpfe Speichern/Löschen. Einen Wegwerf-Token
|
||||
gesetzt → `gesetzt · …0000`, und **der Wert selbst taucht in den veröffentlichten Attributen
|
||||
nirgends auf** (auf genau diese Zeichenkette geprüft, nicht nur angesehen). Danach über die
|
||||
Sicherheitsabfrage „Token löschen?" entfernt → wieder `nicht gesetzt`, der Gitea-Token unberührt.
|
||||
|
||||
Reference in New Issue
Block a user