bfb7dec1e9
- Neuer optionaler Sensor TANK_DISTANZ_SENSOR ersetzt die eigene Kilometerstand-Subtraktion fuer die Tankvorgang-Strecke, wo zugeordnet (Live-Erkennung, manuelle Erfassung, historischer Import) - "Fahrzeugprofil" und "Daten ausgeben" zu einer Kachel zusammengelegt: "Datensatz sichern" (4 Exporte wie bisher) / "Datensatz laden" (neu: echter CSV-Import fuer Fahrten/Tankvorgaenge/Wartungsplan) - Import gleicht per ID ab (Fahrten/Tankvorgaenge) bzw. Datum+Art (Wartungsplan, hat keine eigene ID) und aktualisiert nur die in der CSV enthaltenen Spalten - alles andere am Datensatz bleibt unangetastet - Nebenbei gefunden und behoben: belege.tankvorgang_aktualisieren() ueberschrieb bisher immer alle Felder, auch mit None, wenn irgendeins geaendert wurde - fuer den CSV-Import gefaehrlich, jetzt nur noch tatsaechlich uebergebene Felder - Ebenfalls gefunden und behoben: Panel las das Import-Ergebnis per HASS.states direkt nach dem Dienstaufruf - ein Wettlauf mit dem state_changed-Push. Nutzt jetzt denselben HASS.callWS(get_states)-Weg wie der bestehende historie_importieren-Ablauf. companion-app-Portierung von "Datensatz sichern/laden" steht noch aus. Version 2026.8.28.3, live im Testcontainer verifiziert (alle drei CSV-Datensatztypen: anlegen + aktualisieren per ID/Datum+Art getestet, Testdaten danach geloescht). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
333 lines
6.6 KiB
YAML
333 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
|