e1d570992e
Drei zusammengehörige Teile in einem Repository: - homeassistant/ Das fertige, im Einsatz befindliche Home-Assistant-Panel (panel_custom Custom Element + pyscript-Backend). Echte Fahrzeug- und Personendaten (fahrzeugprofil.json, fahrten.jsonl, tankvorgaenge.jsonl, Tankbelege) bleiben per .gitignore außen vor; die anonymisierte Vorlage fahrzeugprofil.example.json ist mit dabei. - design-system/ Eigenständige React-Komponentenbibliothek (@audi-dash/ui), die die visuelle Sprache des Panels nachbildet - ohne Audi-Markenzeichen und ohne die lizenzierte Hausschrift. Dient als Grundlage für Claude Design. War bis hierher ein eigenes Repository und ist in dieses eingeschmolzen worden. - companion-app/ Datenschicht der neuen App DataMetric360 (iOS/Android via Capacitor, zusätzlich als Iframe im HA-Dashboard). Noch ohne Oberfläche: REST- und WebSocket-Zugriff auf Home Assistant plus Warteschlange für Änderungen ohne Netz. Ersetzt das eingespritzte hass-Objekt, das nur innerhalb des HA-Frontends existiert. Dazu die Projektdokumentation: SPECIFICATION.md (Ist-Stand des Panels), COMPANION_APP_ARCHITECTURE.md (Architekturentscheidungen der neuen App), AUDIT_2026-08-10.md, DESIGN_BRIEF_DATAMETRIC360.md und der ursprüngliche Bauauftrag. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
68 lines
3.0 KiB
PowerShell
68 lines
3.0 KiB
PowerShell
<#
|
|
.SYNOPSIS
|
|
Spielt Code-Updates (pyscript + Frontend) in eine laufende Home-Assistant-
|
|
Installation ein, ohne Neustart und ohne Cache-Probleme im Browser.
|
|
|
|
.BESCHREIBUNG
|
|
Kopiert nur Code, nie Daten:
|
|
- pyscript/* -> <Ziel>/pyscript/ (pyscript lädt das automatisch neu,
|
|
siehe Kopfkommentar dort - an
|
|
einer Testinstanz bestätigt: eine
|
|
geänderte Datei war innerhalb von
|
|
Millisekunden aktiv, ganz ohne
|
|
Neustart)
|
|
- www/*.js, www/*.css, www/bilder/* -> <Ziel>/www/
|
|
- www/audi-dashboard-version.json wird IMMER neu geschrieben, mit der
|
|
aktuellen Uhrzeit als Versionsnummer - der Lade-Stub
|
|
(audi-dashboard-panel.js) liest diese Datei bei jedem Seitenaufruf
|
|
ohne Cache und lädt den eigentlichen Code darüber immer frisch nach
|
|
(siehe Kopfkommentar in www/audi-dashboard-panel.js).
|
|
|
|
Absichtlich NICHT kopiert: data/ - das würde ein bereits laufendes
|
|
Fahrzeugprofil, die Fahrten- und Tankvorgänge-Archive überschreiben. Die
|
|
data/-Dateien sind nur die Erstbefüllung für die einmalige Installation
|
|
(siehe INSTALL.md Schritt 2).
|
|
|
|
.PARAMETER Ziel
|
|
Pfad zum config-Verzeichnis von Home Assistant, z. B. ein per Samba
|
|
eingebundenes Laufwerk (\\<HA-IP>\config) oder ein lokal gemounteter Pfad.
|
|
|
|
.BEISPIEL
|
|
.\update.ps1 -Ziel "\\homeassistant.local\config"
|
|
#>
|
|
param(
|
|
[Parameter(Mandatory = $true)]
|
|
[string]$Ziel
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
$hier = $PSScriptRoot
|
|
|
|
if (-not (Test-Path $Ziel)) {
|
|
throw "Ziel nicht erreichbar: $Ziel — Samba-Share verbunden? Pfad korrekt?"
|
|
}
|
|
|
|
Write-Host "Kopiere pyscript/ ..." -ForegroundColor Cyan
|
|
robocopy "$hier\pyscript" "$Ziel\pyscript" /MIR /NFL /NDL /NJH /NJS | Out-Null
|
|
|
|
Write-Host "Kopiere www/ (ohne bilder/, die separat behandelt werden) ..." -ForegroundColor Cyan
|
|
New-Item -ItemType Directory -Force -Path "$Ziel\www" | Out-Null
|
|
Copy-Item "$hier\www\audi-dashboard-app.js" "$Ziel\www\audi-dashboard-app.js" -Force
|
|
Copy-Item "$hier\www\audi-dashboard-panel.js" "$Ziel\www\audi-dashboard-panel.js" -Force
|
|
Copy-Item "$hier\www\audi-dashboard.css" "$Ziel\www\audi-dashboard.css" -Force
|
|
|
|
if (Test-Path "$hier\www\bilder") {
|
|
Write-Host "Kopiere www/bilder/ ..." -ForegroundColor Cyan
|
|
New-Item -ItemType Directory -Force -Path "$Ziel\www\bilder" | Out-Null
|
|
Copy-Item "$hier\www\bilder\*" "$Ziel\www\bilder\" -Force -Recurse
|
|
}
|
|
|
|
$version = [DateTimeOffset]::UtcNow.ToUnixTimeSeconds()
|
|
"{ ""version"": $version }" | Out-File -FilePath "$Ziel\www\audi-dashboard-version.json" -Encoding utf8 -NoNewline
|
|
|
|
Write-Host ""
|
|
Write-Host "Fertig. Version $version." -ForegroundColor Green
|
|
Write-Host "pyscript-Änderungen sind bereits aktiv (Auto-Reload, kein Neustart nötig)."
|
|
Write-Host "Frontend-Änderungen: im Browser einmal ganz normal neu laden (F5) reicht -"
|
|
Write-Host "kein Hard-Refresh, kein HA-Neustart."
|