Übersetzt aus der englischen UIX-Dokumentation von Lint-Free-Technology/uix unter CC BY 4.0. Geprüfter Quellstand 9.1.0-beta.2. Stabile Basis 9.0.0, Home Assistant ab 2026.11.0.
UIX-Kontexte
Verfügbarkeit
UIX-Kontexte und der Kontext für Entitätsnamen sind seit 9.0.0-beta.3 verfügbar.
UIX-Kontexte legen ein strukturiertes Verhalten für einen UIX-Host und alle Elemente darunter fest. So können Elemente auf ihren Platz in der Oberfläche reagieren, ohne jeweils eigene Auswahlregeln zu benötigen.
Einen Kontext definieren
Theme-Bindungen verwenden uix-<thing>-context-yaml für ein beliebiges UIX-Ziel. Der Wert ist eine YAML-Liste mit Bindungen. anchor legt den Geltungsbereich fest. Verwende dafür dieselbe Host-/Element-Selektorsyntax wie beim UIX-Styling. Die erste passende Bindung gilt.
Ein Element, das bereits uix: unterstützt, kann seinen Kontext direkt über uix.context definieren. Die direkte Konfiguration hat auf demselben Host Vorrang vor einer passenden Theme-Bindung.
Ein Kontext gilt auch unterhalb seines Hosts. Der Kontext einer Ansicht erreicht daher ihre Karten und Zeilen. Eine Karte oder Zeile kann für ihren eigenen Teilbaum einen spezifischeren Kontext definieren.
Kontext für Entitätsnamen
entity_name bestimmt die Bestandteile automatisch erzeugter Entitätsnamen. Ein vom Benutzer gesetzter Anzeigename bleibt erhalten.
Beispiel für das Energie-Dashboard
my-uix-theme:
uix-theme: my-uix-theme
uix-root-context-yaml: |
- anchor: "&ha-panel-energy"
entity_name:
rules:
- when:
request: [parent_device, device]
use: [entity]Das Beispiel ersetzt auf dem Energie-Dashboard die Bestandteile für übergeordnetes Gerät und Gerät durch den Entitätsnamen.
Beispiel für eine Ansicht
Eine Ansicht kann mit dem vorhandenen Ziel view wiederholte Gerätenamen in ihren Karten ausblenden. Eine Anfrage nach Geräte- und Entitätsnamen liefert dann nur den Entitätsnamen.
my-uix-theme:
uix-theme: my-uix-theme
uix-view-context-yaml: |
- anchor: "&hui-view"
entity_name:
rules:
- when:
request: [device, entity]
use: [entity]Eine Karte kann über uix.context eine spezifischere Ausnahme definieren, wenn eine Entität ihren Gerätenamen benötigt.
Beispiel für eine Karte
Mit dem vorhandenen Ziel card kann eine Karte wiederholte Gerätenamen in ihren Zeilen ausblenden. Eine Anfrage nach Geräte- und Entitätsnamen liefert dann nur den Entitätsnamen. Hier passen nur Entitätskarten mit der UIX-Klasse type-entities.
uix-card-context-yaml: |
- anchor: "&.type-entities"
entity_name:
rules:
- when:
- request: default
- request: [device, entity]
use: [entity]Direktes Beispiel für eine Karte
Einer Karte lässt sich ein Kontext direkt hinzufügen.
uix:
context:
entity_name:
rules:
- when:
- request: default
- request:
- device
- entity
use:
- entityRegeln
when.request ist entweder default oder die exakte Liste angefragter Namensbestandteile. when kann mehrere Anfragen als Liste bündeln, wenn sie dasselbe Ergebnis verwenden. use akzeptiert dieselbe Kurzform als Liste. Zulässig sind floor, area, parent_device, device und entity.
entity_name:
rules:
- when:
- request: default
- request: [device, entity]
use: [entity]Das Beispiel verwendet den Entitätsnamen sowohl für eine Standardanfrage als auch für eine Anfrage nach Geräte- und Entitätsnamen.
entity_name:
rules:
- when:
request: [parent_device, device]
use:
- type: device
- type: text
text: "-"
- type: entityHome Assistant trennt Namensbestandteile normalerweise durch Leerzeichen. Das Beispiel ergibt daher Device - Entity. Für eine genaue Kontrolle der Zeichensetzung lässt sich die Objektform mit einem expliziten Trennzeichen verwenden.
entity_name:
rules:
- when:
request: [parent_device, device]
use:
items:
- type: device
- type: text
text: " — "
- type: entity
options:
separator: ""Direkte Konfiguration
Ein Element, das bereits uix: unterstützt, kann einen Kontext für Entitätsnamen direkt definieren.
uix:
context:
entity_name:
rules:
- when:
request: default
use: [entity]Fehlersuche
Wähle im Browser-Inspektor ein betroffenes Element aus und führe uix_context($0) in der Konsole aus. Die Ausgabe zeigt die geerbten Kontexte und bietet mit format() eine Funktion zum Prüfen einer konkreten Namensanfrage.
uix_context($0).format("sensor.sun_next_dusk", [
{ type: "device" },
{ type: "entity" },
]);Setze beim Einrichten debug: true im Kontext. Das Protokoll zeigt dann den angewendeten Kontext und den ersten Treffer für jede Regel für Entitätsnamen.
uix:
context:
debug: true
entity_name:
rules:
- when:
request: default
use: [entity]