5ccbfec92d
Vier Themen aus einer Sitzung. 1. Die Fahrt endet wieder bei uns statt im Dongle (Abschnitt BW). Der Ignition-OFF-Timeout des FMM003 (900 s) und sein Schlaf-Timeout (ebenfalls 900 s) starten beide beim Zuendungs-Aus und fallen in derselben Sekunde - am 02.09. zweimal beobachtet, einmal ging das Trip-Ende verloren, einmal kam es eine Sekunde vor dem Schlaf an. Ausloeser ist jetzt die Zuendung, die Wartezeit laeuft in Home Assistant. ZUENDUNG_NACHLAUF_S = 180 wird in beiden Wegen abgezogen (ueber das Trip-Signal 1080 s, weil dessen Ende selbst an der verzoegerten Zuendung haengt). 2. Schieberegler, neu in beiden Codebasen. Schrittweite 5 Minuten; der Daumen war im Tagmodus weiss auf weiss und traegt jetzt einen Ring aus --line-strong - ein Token, das genau dort sichtbar ist, wo es gebraucht wird. 3. Knopf "Fahrt beenden" in der Zuletzt-Kachel (Abschnitt BX). Schliesst auf das letzte Lebenszeichen, nicht auf "jetzt", und kennzeichnet das Ende als vorlaeufig. Ein spaet eintreffendes Zuendungs-Aus zieht es nach - innerhalb von sechs Stunden, nur nach vorn, und nur bei einer vorlaeufigen Fahrt. ts_end wandert bewusst NICHT in edited_fields, sonst blockierte der Schutz fuer Handeingaben genau diese Korrektur. 4. Das OTA-Buendel kann auf dem Mac gar nicht entstehen (Abschnitt BV): npm run ota ist eine Windows-PowerShell-Datei, ios-signieren.sh baut ein frisches dist/ und fasst das Buendel nie an. Ausgeliefert war deshalb eine Oberflaeche ohne den Versionshinweis unter richtiger Nummer. Verifiziert: Backend 27/27 (5 Signalwechsel, 14 Zuendungspause, 8 Fahrtende), companion-app tsc sauber und 179/179, Panel als Modul geparst, audi_ha_test auf 2026.9.3.7 sauber gestartet. Live am laufenden Panel und ohne Rueckstand belegt: Wartezeit samt Abbruch, die 180-s-Rechnung, der Regler im Tagmodus und der Knopf von der laufenden Fahrt bis zum verworfenen Kurzvorgang - Fahrten vorher 16, nachher 16. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
336 lines
6.6 KiB
YAML
336 lines
6.6 KiB
YAML
# Felder und Eingabehilfen für Entwicklerwerkzeuge -> Aktionen.
|
|
# Namen und Beschreibungen stehen in strings.json bzw. translations/, nicht
|
|
# hier - so steht jeder Text genau einmal.
|
|
#
|
|
# Beide Oberflächen rufen diese Dienste über die WebSocket- bzw. REST-API auf
|
|
# und brauchen diese Datei nicht. Sie ist dafür da, dass die Dienste in Home
|
|
# Assistant selbst bedienbar und nachvollziehbar sind - zum Nachschauen, zum
|
|
# Ausprobieren und für eigene Automationen des Nutzers.
|
|
|
|
jetzt_aktualisieren:
|
|
screening_jetzt:
|
|
backup_jetzt:
|
|
update_pruefen:
|
|
update_installieren:
|
|
|
|
profil_schreiben:
|
|
fields:
|
|
profil_json:
|
|
required: true
|
|
selector:
|
|
object:
|
|
|
|
entitaeten_schreiben:
|
|
fields:
|
|
zuordnung_json:
|
|
required: true
|
|
selector:
|
|
object:
|
|
|
|
fahrt_manuell_anlegen:
|
|
fields:
|
|
ts_start:
|
|
required: true
|
|
example: "2026-08-23T07:30:00+02:00"
|
|
selector:
|
|
text:
|
|
ts_end:
|
|
required: true
|
|
example: "2026-08-23T08:05:00+02:00"
|
|
selector:
|
|
text:
|
|
art:
|
|
selector:
|
|
select:
|
|
options: ["privat", "arbeitsweg"]
|
|
start_ort:
|
|
selector:
|
|
text:
|
|
ziel_ort:
|
|
selector:
|
|
text:
|
|
odo_start:
|
|
selector:
|
|
number: { min: 0, max: 2000000, step: 0.1, mode: box, unit_of_measurement: km }
|
|
odo_end:
|
|
selector:
|
|
number: { min: 0, max: 2000000, step: 0.1, mode: box, unit_of_measurement: km }
|
|
distanz:
|
|
selector:
|
|
number: { min: 0, max: 10000, step: 0.1, mode: box, unit_of_measurement: km }
|
|
|
|
fahrt_aktualisieren:
|
|
fields:
|
|
trip_id:
|
|
required: true
|
|
example: t-4f2a91c30b7e
|
|
selector:
|
|
text:
|
|
ts_start:
|
|
selector:
|
|
text:
|
|
ts_end:
|
|
selector:
|
|
text:
|
|
art:
|
|
selector:
|
|
select:
|
|
options: ["privat", "arbeitsweg"]
|
|
start_ort:
|
|
selector:
|
|
text:
|
|
ziel_ort:
|
|
selector:
|
|
text:
|
|
odo_start:
|
|
selector:
|
|
number: { min: 0, max: 2000000, step: 0.1, mode: box, unit_of_measurement: km }
|
|
odo_end:
|
|
selector:
|
|
number: { min: 0, max: 2000000, step: 0.1, mode: box, unit_of_measurement: km }
|
|
distanz:
|
|
selector:
|
|
number: { min: 0, max: 10000, step: 0.1, mode: box, unit_of_measurement: km }
|
|
|
|
fahrt_loeschen:
|
|
fields:
|
|
trip_id:
|
|
required: true
|
|
selector:
|
|
text:
|
|
|
|
beleg_hochladen:
|
|
fields:
|
|
pdf_base64:
|
|
required: true
|
|
selector:
|
|
text:
|
|
multiline: true
|
|
dateiname:
|
|
selector:
|
|
text:
|
|
tank_id:
|
|
selector:
|
|
text:
|
|
|
|
tankvorgang_manuell:
|
|
fields:
|
|
ts:
|
|
selector:
|
|
text:
|
|
liter:
|
|
selector:
|
|
number: { min: 0, max: 200, step: 0.01, mode: box, unit_of_measurement: L }
|
|
kosten:
|
|
selector:
|
|
number: { min: 0, max: 2000, step: 0.01, mode: box, unit_of_measurement: EUR }
|
|
km:
|
|
selector:
|
|
number: { min: 0, max: 2000000, step: 0.1, mode: box, unit_of_measurement: km }
|
|
ersparnis:
|
|
selector:
|
|
number: { min: 0, max: 500, step: 0.01, mode: box, unit_of_measurement: EUR }
|
|
station:
|
|
selector:
|
|
text:
|
|
distanz:
|
|
selector:
|
|
number: { min: 0, max: 10000, step: 0.1, mode: box, unit_of_measurement: km }
|
|
kraftstoff:
|
|
selector:
|
|
text:
|
|
receipt_key:
|
|
selector:
|
|
text:
|
|
receipt_file:
|
|
selector:
|
|
text:
|
|
|
|
tankvorgang_aktualisieren:
|
|
fields:
|
|
tank_id:
|
|
required: true
|
|
selector:
|
|
text:
|
|
ts:
|
|
selector:
|
|
text:
|
|
liter:
|
|
selector:
|
|
number: { min: 0, max: 200, step: 0.01, mode: box, unit_of_measurement: L }
|
|
kosten:
|
|
selector:
|
|
number: { min: 0, max: 2000, step: 0.01, mode: box, unit_of_measurement: EUR }
|
|
km:
|
|
selector:
|
|
number: { min: 0, max: 2000000, step: 0.1, mode: box, unit_of_measurement: km }
|
|
ersparnis:
|
|
selector:
|
|
number: { min: 0, max: 500, step: 0.01, mode: box, unit_of_measurement: EUR }
|
|
station:
|
|
selector:
|
|
text:
|
|
distanz:
|
|
selector:
|
|
number: { min: 0, max: 10000, step: 0.1, mode: box, unit_of_measurement: km }
|
|
kraftstoff:
|
|
selector:
|
|
text:
|
|
receipt_key:
|
|
selector:
|
|
text:
|
|
receipt_file:
|
|
selector:
|
|
text:
|
|
|
|
tankvorgang_loeschen:
|
|
fields:
|
|
tank_id:
|
|
required: true
|
|
selector:
|
|
text:
|
|
|
|
bild_hochladen:
|
|
fields:
|
|
dateiname:
|
|
required: true
|
|
example: seitenansicht.webp
|
|
selector:
|
|
text:
|
|
daten_base64:
|
|
required: true
|
|
selector:
|
|
text:
|
|
multiline: true
|
|
|
|
bild_loeschen:
|
|
fields:
|
|
dateiname:
|
|
required: true
|
|
selector:
|
|
text:
|
|
|
|
reifen_wechseln:
|
|
fields:
|
|
satz:
|
|
required: true
|
|
selector:
|
|
select:
|
|
options: ["sommer", "winter"]
|
|
|
|
reifen_km_setzen:
|
|
fields:
|
|
satz:
|
|
required: true
|
|
selector:
|
|
select:
|
|
options: ["sommer", "winter"]
|
|
km:
|
|
required: true
|
|
selector:
|
|
number: { min: 0, max: 2000000, step: 0.1, mode: box, unit_of_measurement: km }
|
|
|
|
reifen_archivieren:
|
|
fields:
|
|
satz:
|
|
required: true
|
|
selector:
|
|
select:
|
|
options: ["sommer", "winter"]
|
|
|
|
reifen_archiv_aktualisieren:
|
|
fields:
|
|
id:
|
|
required: true
|
|
selector:
|
|
text:
|
|
ersetzt_am:
|
|
selector:
|
|
text:
|
|
km:
|
|
selector:
|
|
number: { min: 0, max: 2000000, step: 0.1, mode: box, unit_of_measurement: km }
|
|
marke:
|
|
selector:
|
|
text:
|
|
modell:
|
|
selector:
|
|
text:
|
|
dot:
|
|
selector:
|
|
text:
|
|
mass:
|
|
selector:
|
|
text:
|
|
druck_vorne:
|
|
selector:
|
|
text:
|
|
druck_hinten:
|
|
selector:
|
|
text:
|
|
kommentar:
|
|
selector:
|
|
text:
|
|
|
|
reifen_archiv_loeschen:
|
|
fields:
|
|
id:
|
|
required: true
|
|
selector:
|
|
text:
|
|
|
|
batterieverlauf_loeschen:
|
|
fields:
|
|
datum:
|
|
required: true
|
|
selector:
|
|
text:
|
|
|
|
backup_wiederherstellen:
|
|
fields:
|
|
profil_json:
|
|
selector:
|
|
object:
|
|
fahrten_json:
|
|
selector:
|
|
object:
|
|
tankvorgaenge_json:
|
|
selector:
|
|
object:
|
|
entitaeten_json:
|
|
selector:
|
|
object:
|
|
|
|
historie_importieren:
|
|
fields:
|
|
start:
|
|
required: true
|
|
example: "2026-01-01T00:00:00"
|
|
selector:
|
|
text:
|
|
ende:
|
|
required: true
|
|
example: "2026-08-23T00:00:00"
|
|
selector:
|
|
text:
|
|
|
|
csv_importieren:
|
|
fields:
|
|
art:
|
|
required: true
|
|
example: "fahrten"
|
|
selector:
|
|
select:
|
|
options:
|
|
- "fahrten"
|
|
- "tanken"
|
|
- "service"
|
|
inhalt:
|
|
required: true
|
|
selector:
|
|
text:
|
|
multiline: true
|
|
|
|
fahrt_jetzt_beenden:
|
|
fields: {}
|