4d4890034a
Der Regler "Fahrt beenden" ist jetzt eine Zahl fuer zwei Dinge: unsere eigene
Wartezeit bis zum Fahrtende und der Schlaf-Timeout des FMM003 (103). So lange
bleibt der Dongle wach und wartet darauf, dass es gleich weitergeht; danach
schlaeft er. Die 180 s Ignition OFF Delay laufen davor und bleiben unsichtbar -
sie werden nur von der Fahrtdauer abgezogen. Der Regler geht deshalb von 1 bis
60 in Einerschritten; das Geraet kennt kein Timeout 0.
flespi.py liest und schreibt die Geraete-Konfiguration. Drei Annahmen sind an
der echten API gefallen und stehen als Messung im Modulkopf: der Wert liegt in
current (nicht value), die Einstellung heisst sleep_mode mit dem Wert eine Ebene
tiefer unter mode, und ein PUT braucht {"properties": ..., "address": ...}.
Die eigene Auftrags-Warteschlange ist wieder entfallen. Sie war fuer "das Geraet
schlaeft" gebaut - das gilt aber nur fuer das Geraet, nicht fuer die
Schnittstelle: die vollstaendige Konfiguration kam herein, waehrend das Fahrzeug
seit dem Vortag stand. flespi puffert selbst (pending + address=connection), ein
zweites Auftragsbuch waere eine zweite Warteschlange fuer dieselbe Aufgabe.
Gegengelesen wird nach jedem Schreiben; als Erfolg zaehlt current ODER pending -
letzteres ist bei stehendem Fahrzeug der Normalfall.
Live gegen den echten Account belegt: Token sieht genau ein Geraet, 127
Einstellungen bei parkendem Fahrzeug gelesen, Regler 15 geschrieben und als
pending bestaetigt (Nachbarfelder unveraendert), zweiter Neustart ohne erneute
Anfrage.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
351 lines
6.8 KiB
YAML
351 lines
6.8 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: {}
|
|
|
|
zugang_setzen:
|
|
fields:
|
|
dienst:
|
|
required: true
|
|
example: gitea
|
|
selector:
|
|
text:
|
|
token:
|
|
required: false
|
|
selector:
|
|
text:
|
|
|
|
dongle_lesen:
|
|
fields: {}
|