Konfigurationsquellen¶
Die App kann Konfigurationen aus drei Quellen beziehen und lokal zwischenspeichern.
Die eigentliche Auswahl erfolgt auf der Einstellungsseite im Reiter Widget-Konfiguration.
Überblick¶
| Quelle | Typischer Einsatz | Dialogfluss |
|---|---|---|
| direkte Dashboard-URL | ein einzelnes Dashboard | URL eingeben, laden |
index.json |
mehrere Profile pro Installation | URL eingeben, Profil wählen, laden |
| lokale Datei | Offline- oder Testkonfigurationen | Datei wählen, laden |
Direkte Dashboard-URL¶
Wenn die URL direkt eine DashboardConfig liefert:
- die App validiert die URL
- die JSON wird geladen
- die Konfiguration wird validiert
- die Roh-JSON wird im Cache gespeichert
- die URL wird in
AppPreferencesgespeichert - die Profil-ID wird geleert
index.json¶
Eine index.json ist ein Profilverzeichnis für mehrere Dashboard-Dateien.
DashboardIndexConfig¶
| Feld | Typ | Default | Bedeutung |
|---|---|---|---|
schemaVersion |
Int |
1 |
Versionsmarker |
title |
String |
"Konfigurationsprofile" |
Dialogtitel |
profiles |
List<DashboardIndexProfileConfig> |
[] |
alle Profile |
DashboardIndexProfileConfig¶
| Feld | Typ | Bedeutung |
|---|---|---|
id |
String |
eindeutige Profil-ID |
title |
String |
sichtbarer Name |
description |
String? |
optionaler Beschreibungstext |
configUrl |
String |
URL zur eigentlichen Dashboard-Datei |
Relative URLs¶
configUrl darf:
- absolut sein
- relativ zur
index.jsonsein
Die App verwendet intern URI(indexUrl).resolve(configUrl).
Auswahlverhalten¶
Wenn eine index.json erkannt wird:
- die URL wird gespeichert
- die Profile werden im Auswahl-Dialog angezeigt
- falls bereits ein Profil gespeichert ist und noch existiert, ist es vorselektiert
- nach Bestätigung wird die konkrete Dashboard-Datei geladen
- die gewählte Profil-ID wird gespeichert
Lokale Datei¶
Beim Öffnen aus dem Gerätespeicher:
- die Datei wird über
ContentResolvergelesen - die JSON wird validiert
- die Datei wird in den internen Config-Cache geschrieben
- gespeicherte URL und Profil-ID werden gelöscht
Cache und Persistenz¶
ConfigCache¶
- Dateiname:
dashboard_config.json - Speicherort:
filesDirder App - Inhalt: die zuletzt erfolgreich geladene Dashboard-JSON
AppPreferences¶
Speichert:
config_urlselected_profile_idreload_config_before_refreshwidget_refresh_intervalloading_indicator_modeignore_invalid_ssl_certificatestheme_mode- die Custom-Theme-Farben (
theme_primary,theme_secondary,theme_tertiary,theme_background,theme_surface,theme_group_highlight,theme_error)
Startverhalten¶
Beim Bootstrapping prüft das ViewModel in dieser Reihenfolge:
- gespeicherte URL lesen
- gespeicherte Profil-ID lesen
- Cache lesen
- falls Cache vorhanden: Cache anwenden und Status laden
- sonst gespeicherte URL laden
- bei
index.jsonohne bekannte Profil-ID: Profildialog anzeigen - bei Fehlern: Einstellungsseite anzeigen
Verwandte Einstellungen¶
Neben den eigentlichen Konfigurationsquellen gibt es auf der Einstellungsseite noch zwei weitere Bereiche:
Farben: Theme-Modus und Custom-Farbpalette, inklusive Import einer Farb-Template-DateiDebug: optionales Neuladen der Konfiguration vor jedem Datenabruf
Vollständiges Beispiel für index.json¶
{
"schemaVersion": 1,
"title": "Smart-Home-Profile",
"profiles": [
{
"id": "apartment",
"title": "Wohnung",
"description": "Alltag in der Wohnung",
"configUrl": "https://example.org/configs/apartment-dashboard.json"
},
{
"id": "vacation",
"title": "Urlaubsmodus",
"description": "Reduziertes Dashboard für Abwesenheit",
"configUrl": "vacation-dashboard.json"
}
]
}
Empfehlungen¶
- für mehrere Haushaltsmodi oder Nutzerrollen
index.jsonverwenden - für produktive Installationen eine stabile HTTPS-URL nutzen
- für schnelle Experimente lokale Dateien verwenden
- grosse Dashboards in mehrere Profile aufteilen, statt alles in eine Datei zu drücken