d8b12da36d
Das Backend liegt jetzt als custom_components/audi_dashboard/ vor - eine normale Home-Assistant-Integration mit Config-Flow, einer sensor-Plattform und 18 Diensten. Damit ist die App über HACS installierbar; bis das Repo auf GitHub gespiegelt ist (HACS spricht ausschließlich mit GitHub), installiert homeassistant/installationspaket/install.ps1 denselben Ordner ohne HACS. Fünf Installationsschritte entfallen ersatzlos: der pyscript:-Block, der panel_custom:-Block, das Kopieren der Oberfläche nach www/, das langlebige Zugriffstoken (der Verlauf wird direkt über die recorder-API gelesen) und "pip install pypdf" (steht in manifest.json). Das Fahrzeugprofil legt die Integration beim ersten Start aus ihrer Vorlage an. Drei alte Schwächen sind dabei mit erledigt: - Die Nutzlast landet nicht mehr in der Recorder-Datenbank (_unrecorded_attributes - das kann nur eine echte Entität). - Eine laufende Fahrt überlebt einen Neustart (Store statt Arbeitsspeicher); fiel sie während eines Ausfalls ins Ende, schließt nach_neustart_fortsetzen() sie beim letzten aufgezeichneten Zeitpunkt. - Sensor-Zuordnungen wirken sofort - die Zustandsbeobachter werden neu gebunden, der Neustart-Hinweis und der Neustart-Dienst sind weg. Namensvertrag geändert, beide Oberflächen mitgezogen: pyscript.audi_dashboard_x -> sensor.audi_dashboard_x, pyscript.audi_dashboard_y -> audi_dashboard.y. Eine Companion-App vom alten Stand findet nach dem Umstieg nichts mehr und muss neu gebaut werden; das Panel liegt in der Integration und kann nicht driften. Der selbstgebaute Updater entfällt - HACS ist die Update-Mechanik, die Home Assistant kennt. Die Versionierung schrumpft auf eine Quelle: manifest.json. Geprüft am laufenden Testcontainer (Container byteweise identisch mit dem Repo): alle 18 Dienste, Panel, Config-Entry neu laden, Historienimport, echter Shell-Beleg in-process, Neuinstallation im Wegwerf-Container blank mit automatisch nachinstalliertem pypdf. Companion-App: tsc sauber, 112/112 Tests, beide Rauchtests gegen das laufende Backend grün. Belegparser 8/8. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
146 lines
4.8 KiB
YAML
146 lines
4.8 KiB
YAML
# Wegwerf-Testinstanz fuer DataMetric360.
|
|
# Bildet zwei Datenquellen nach: den FMM003-Zuendungssensor (Fahrterkennung,
|
|
# im Auslieferstand nicht zugeordnet) sowie die Entitaeten der
|
|
# abgeloesten HACS-Integration TommiG1/HA_VAG-EU-Data-Act (Kilometerstand,
|
|
# Tankfuellstand, Tueren/Fenster - alle im Auslieferstand leer,
|
|
# aber ueber das Setup-Menue weiterhin manuell zuordenbar). Ueber die
|
|
# input_*-Helfer sind die Werte zur Laufzeit aenderbar (Fahrterkennung,
|
|
# Reifenzaehler, Tankerkennung beobachten die zugeordneten Entitaeten).
|
|
|
|
default_config:
|
|
|
|
# Die App laeuft unter einer anderen Adresse als Home Assistant. Ohne diese
|
|
# Freigabe lehnt der Browser jede Anfrage ab, noch bevor sie den Server
|
|
# erreicht (CORS). Gilt genauso im Echtbetrieb - siehe
|
|
# ../homeassistant/REVERSE_PROXY.md.
|
|
http:
|
|
cors_allowed_origins:
|
|
- http://localhost:4173 # Vorschau des Produktionsbuendels
|
|
- http://localhost:5173 # Entwicklungsserver
|
|
- capacitor://localhost # native Huelle iOS
|
|
- ionic://localhost # native Huelle Android
|
|
|
|
# Frueher standen hier ein pyscript:- und ein panel_custom:-Block. Beide sind
|
|
# mit dem Umbau zur eigenen Integration entfallen: sie meldet ihr Panel selbst
|
|
# an und braucht dafuer kein YAML.
|
|
|
|
input_number:
|
|
test_kilometerstand:
|
|
name: Test Kilometerstand
|
|
min: 0
|
|
max: 999999
|
|
step: 1
|
|
initial: 48250
|
|
mode: box
|
|
test_tankfuellstand:
|
|
name: Test Tankfuellstand
|
|
min: 0
|
|
max: 100
|
|
step: 1
|
|
initial: 62
|
|
mode: box
|
|
test_reichweite:
|
|
name: Test Reichweite
|
|
min: 0
|
|
max: 1200
|
|
step: 1
|
|
initial: 385
|
|
mode: box
|
|
|
|
input_boolean:
|
|
test_zuendung:
|
|
name: Test Zuendung/ACC
|
|
test_tuer_vl:
|
|
name: Test Tuer vorne links
|
|
test_fenster_vl:
|
|
name: Test Fenster vorne links
|
|
|
|
template:
|
|
- binary_sensor:
|
|
- name: "Testzone FMM003 Engine Ignition Or Acc Status"
|
|
unique_id: test_fmm003_zuendung
|
|
state: "{{ is_state('input_boolean.test_zuendung', 'on') }}"
|
|
- sensor:
|
|
- name: "Audi RS 4 Avant Mileage"
|
|
unique_id: test_audi_mileage
|
|
state: "{{ states('input_number.test_kilometerstand') | int(0) }}"
|
|
unit_of_measurement: km
|
|
state_class: total_increasing
|
|
- name: "Audi RS 4 Avant Fuel Level"
|
|
unique_id: test_audi_fuel
|
|
state: "{{ states('input_number.test_tankfuellstand') | int(0) }}"
|
|
unit_of_measurement: "%"
|
|
- name: "Audi RS 4 Avant Range Primary"
|
|
unique_id: test_audi_range
|
|
state: "{{ states('input_number.test_reichweite') | int(0) }}"
|
|
unit_of_measurement: km
|
|
- name: "Audi RS 4 Avant Oil Change Due"
|
|
unique_id: test_audi_oil_due
|
|
state: "2027-03-14T00:00:00+00:00"
|
|
device_class: timestamp
|
|
- name: "Audi RS 4 Avant Oil Change Distance"
|
|
unique_id: test_audi_oil_dist
|
|
state: "-11750"
|
|
unit_of_measurement: km
|
|
- name: "Audi RS 4 Avant Inspection Due"
|
|
unique_id: test_audi_insp_due
|
|
state: "2027-03-14T00:00:00+00:00"
|
|
device_class: timestamp
|
|
- name: "Audi RS 4 Avant Inspection Distance"
|
|
unique_id: test_audi_insp_dist
|
|
state: "-11750"
|
|
unit_of_measurement: km
|
|
- binary_sensor:
|
|
- name: "Audi RS 4 Avant Front Left Door"
|
|
unique_id: test_audi_door_fl
|
|
state: "{{ is_state('input_boolean.test_tuer_vl', 'on') }}"
|
|
device_class: door
|
|
- name: "Audi RS 4 Avant Front Right Door"
|
|
unique_id: test_audi_door_fr
|
|
state: "off"
|
|
device_class: door
|
|
- name: "Audi RS 4 Avant Rear Left Door"
|
|
unique_id: test_audi_door_rl
|
|
state: "off"
|
|
device_class: door
|
|
- name: "Audi RS 4 Avant Rear Right Door"
|
|
unique_id: test_audi_door_rr
|
|
state: "off"
|
|
device_class: door
|
|
- name: "Audi RS 4 Avant Front Left Window"
|
|
unique_id: test_audi_win_fl
|
|
state: "{{ is_state('input_boolean.test_fenster_vl', 'on') }}"
|
|
device_class: window
|
|
- name: "Audi RS 4 Avant Front Right Window"
|
|
unique_id: test_audi_win_fr
|
|
state: "off"
|
|
device_class: window
|
|
- name: "Audi RS 4 Avant Rear Left Window"
|
|
unique_id: test_audi_win_rl
|
|
state: "off"
|
|
device_class: window
|
|
- name: "Audi RS 4 Avant Rear Right Window"
|
|
unique_id: test_audi_win_rr
|
|
state: "off"
|
|
device_class: window
|
|
- name: "Audi RS 4 Avant Tailgate"
|
|
unique_id: test_audi_tailgate
|
|
state: "off"
|
|
device_class: door
|
|
- name: "Audi RS 4 Avant Tailgate Lock"
|
|
unique_id: test_audi_tailgate_lock
|
|
state: "off"
|
|
device_class: lock
|
|
- name: "Audi RS 4 Avant Hood"
|
|
unique_id: test_audi_hood
|
|
state: "off"
|
|
device_class: door
|
|
- name: "Audi RS 4 Avant Hood Lock"
|
|
unique_id: test_audi_hood_lock
|
|
state: "off"
|
|
device_class: lock
|
|
|
|
input_button:
|
|
test_refresh:
|
|
name: Test Refresh Now
|