Skip to content

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:

  1. die App validiert die URL
  2. die JSON wird geladen
  3. die Konfiguration wird validiert
  4. die Roh-JSON wird im Cache gespeichert
  5. die URL wird in AppPreferences gespeichert
  6. 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.json sein

Die App verwendet intern URI(indexUrl).resolve(configUrl).

Auswahlverhalten

Wenn eine index.json erkannt wird:

  1. die URL wird gespeichert
  2. die Profile werden im Auswahl-Dialog angezeigt
  3. falls bereits ein Profil gespeichert ist und noch existiert, ist es vorselektiert
  4. nach Bestätigung wird die konkrete Dashboard-Datei geladen
  5. die gewählte Profil-ID wird gespeichert

Lokale Datei

Beim Öffnen aus dem Gerätespeicher:

  1. die Datei wird über ContentResolver gelesen
  2. die JSON wird validiert
  3. die Datei wird in den internen Config-Cache geschrieben
  4. gespeicherte URL und Profil-ID werden gelöscht

Cache und Persistenz

ConfigCache

  • Dateiname: dashboard_config.json
  • Speicherort: filesDir der App
  • Inhalt: die zuletzt erfolgreich geladene Dashboard-JSON

AppPreferences

Speichert:

  • config_url
  • selected_profile_id
  • reload_config_before_refresh
  • widget_refresh_interval
  • loading_indicator_mode
  • ignore_invalid_ssl_certificates
  • theme_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:

  1. gespeicherte URL lesen
  2. gespeicherte Profil-ID lesen
  3. Cache lesen
  4. falls Cache vorhanden: Cache anwenden und Status laden
  5. sonst gespeicherte URL laden
  6. bei index.json ohne bekannte Profil-ID: Profildialog anzeigen
  7. 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-Datei
  • Debug: 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.json verwenden
  • 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

Siehe auch