Dynamische Liste
Listet Datenpunkte automatisch anhand von Filtern (Rolle, ID-Muster, Raum, Funktion, Typ, Adapter) auf und synchronisiert sie periodisch. Jeder gefundene Eintrag wird je nach Wert als Schalter, Regler, Wert oder Sensor-Badge dargestellt.
Datenpunkt
Kein Haupt-Datenpunkt — die Einträge (entries[]) werden über die Filter ermittelt und beim Sync ergänzt. Booleans werden als Schalter, Zahlen mit Level-/Dimmer-Rolle als Regler, value.*/level-Rollen immer als Wert dargestellt.
Die Darstellung lässt sich erzwingen (displayType) — listenweit im Dialog → Tab Darstellung und pro Eintrag im Detail-Editor (siehe Darstellung der Datenpunkte) — inklusive switch für einen Schalter mit eigenen Schreibwerten, Status-Datenpunkt und Icon-/Bild-Stil, slider für einen Regler mit dem vollen Optionssatz des Schieberegler-Widgets (Skala, Schrittweite, Farbe, Balken-Optik, Fortschrittsanzeige) und value für den reinen Wert — beide unabhängig von Rolle und Datenpunkt-Name, time für Zeit-Datenpunkte (Uhrzeit / Datum / beides / eigenes Muster, siehe Statische Liste), datepicker für einen Datumswähler, select für ein Auswahlfeld und input für ein Eingabefeld in der Zeile.
Pro Eintrag (Dialog Datenpunkte verwalten → Abschnitt Datenpunkt) lässt sich der Wert außerdem nur für die Anzeige umrechnen und/oder als Uhrzeit/Datum formatieren, siehe Wert-Umrechnung / Zeit. Ohne eigene Einstellung gilt die globale Umrechnung der Liste.
Layouts
Default
Volle Zeilen mit Label, optionalem Raum/ID und Wert rechts — für Standardlisten.
Card
Kacheln im Raster (Breite via cardMinWidth) mit großem zentriertem Wert.
Compact
Zweispaltiges, dichtes Gitter — für viele Einträge auf wenig Platz.
Minimal
Inline-Pills mit Label und Wert — für kompakte Status-Anzeigen.
Count
Nur die Anzahl der (gefilterten) Einträge groß zentriert mit Icon und Titel.
Einstellungen
Im Editor unter Widget bearbeiten. Die Datenpunkte selbst liegen dahinter im eigenen Dialog Datenpunkte verwalten; im Panel bleiben nur die Optionen der Liste als Ganzes, in aufklappbaren Abschnitten.

Datenpunkte verwalten
Links alle Einträge, rechts die vollständige Konfiguration des ausgewählten. Der Dialog ist verschiebbar, größenveränderbar und merkt sich seine Größe.

| Tab | |
|---|---|
| Suchen & Filter | Datenpunkt-Suche, Ausschlüsse, Trefferliste, Übernehmen — dazu Sync-Intervall und „Nur relevante DPs" |
| Icon | Icon vor dem Namen für alle Zeilen (siehe unten) |
| Darstellung | Darstellung aller Zeilen samt typabhängiger Felder (siehe unten) |
| Einträge | Gefundene Datenpunkte; rechts der Detail-Editor (Bezeichnung, Einheit, Darstellung, Farben) |
| Bedingungen | Regeln für alle Zeilen (siehe unten) |
| Zweite Zeile | Vorlage für zusätzliche Datenpunkte in allen Zeilen (siehe unten) |
| Klick auf Zeile | Detail-Popup beim Klick auf eine Zeile (siehe unten) |
| Namen | Namensmuster und Namens-Filter — Platzhalter wie bei der statischen Liste, inklusive [[{{parent}}.DeviceName]] für Namen aus einem eigenen Datenpunkt |
Der Detail-Editor rechts ist in Abschnitte gegliedert: Datenpunkt · Beschriftung (Icon, Bezeichnung, Einheit, Nachkommastellen, Tausendertrennung) · Darstellung (mit dem gewählten Typ als Kennzeichen, darin alle typabhängigen Felder) · Zweite Zeile · Bedingungen · Farbschwellen · Verhalten (letzte Änderung, Klick auf Zeile).
Nachkommastellen, Tausendertrennung und Farbschwellen gelten pro Zeile und schlagen die Vorgabe der Liste aus dem Optionen-Panel — wie in der statischen Liste.
Icon vor dem Namen
Die Datenpunkte kommen aus einem Filter und ändern sich beim Sync, deshalb wird das Icon einmal für die ganze Liste gesetzt: Dialog → Tab Icon (Lucide / Iconify-ID, Größe in px, Standard 13, dazu die Farbe).
| Quelle | |
|---|---|
entryIcon · entryIconSize · entryIconColor | Dialog → Tab Icon: gilt für alle Zeilen |
entries[].icon · entries[].iconSize | Detail-Editor → Abschnitt Beschriftung: nur diese Zeile — die Farbe gibt es nur listenweit. Die Größe gilt auch für das listenweite Icon, das die Zeile blass im Auswahl-Button zeigt |
entries[].switchIconSize | Größe des Schalter-Icons, unabhängig vom Icon vor dem Namen |
icon · iconSize · iconColor einer Bedingung | solange die Regel greift — gewinnt gegen beide |
Der Tab zeigt eine Vorschau der ersten Zeilen und wie viele Datenpunkte ein eigenes Icon haben; Eigene Icons entfernen setzt sie zurück, damit die Vorgabe überall gilt.
Darstellung der Datenpunkte
Wie beim Icon: die Datenpunkte kommen aus einem Filter und ändern sich beim Sync, deshalb wird die Darstellung einmal für die ganze Liste gesetzt — Dialog → Tab Darstellung, mit denselben Feldern wie im Detail-Editor (Typ plus alle typabhängigen Einstellungen).
| Quelle | |
|---|---|
entryDisplay | Dialog → Tab Darstellung: gilt für alle Zeilen ohne eigene Darstellung |
entries[].displayType | Detail-Editor → Abschnitt Darstellung: nur diese Zeile |
Die Vorgabe wird pro Zeile ganz oder gar nicht übernommen: Eine Zeile mit eigener Darstellung ist vollständig selbst konfiguriert (eigener Schalter-Stil, eigene Werte-Zuordnung …) und ignoriert die Vorgabe. Zeilen ohne eigene Darstellung übernehmen Typ und dessen Einstellungen; ihr Detail-Editor zeigt statt Auto die Schaltfläche Wie Liste (…).
Auto (keine Vorgabe) entfernt die listenweite Darstellung wieder — jede Zeile wird dann wie zuvor automatisch aus Wert und Rolle abgeleitet. Der Tab zeigt eine Vorschau der ersten Zeilen mit ihrer Darstellung; Eigene Darstellungen entfernen setzt die Ausnahmen zurück.
Zeilenspezifische Datenpunkte
Befehls- und Status-Datenpunkte einer Darstellung (Rollladen up/stop/down, Status-DP eines Schalters) zeigen auf einen festen Datenpunkt und gelten dann für jede Zeile. Sie gehören pro Eintrag gesetzt; der Tab weist darauf hin, sobald einer eingetragen ist.
Zweite Zeile (zusätzliche Datenpunkte)
Zusätzliche Datenpunkte unter dem Wert einer Zeile — Batterie, Signalstärke, Sollwert. Nur Anzeige, kein Schreiben. Felder, Plätze (links/mitte/rechts) und Formatierung wie bei der statischen Liste. Layouts default · card · compact, nicht minimal.
Zwei Quellen, pro Eintrag gesetzte Datenpunkte gewinnen:
| Quelle | |
|---|---|
subDpTemplate | Dialog → Tab Zweite Zeile: gilt für alle Einträge |
entries[].subDps | Detail-Editor → Abschnitt Zweite Zeile: ersetzt die Vorlage für diese Zeile |
In der Vorlage darf die Datenpunkt-ID Platzhalter enthalten, aufgelöst gegen den Datenpunkt der jeweiligen Zeile:
| Platzhalter | |
|---|---|
{{parent}} | ID ohne letztes Segment, z. B. {{parent}}.BATTERY |
{{parent2}}, {{parent3}}, … | je eine Ebene höher, z. B. {{parent2}}.0.OPERATING_VOLTAGE |
{{dp}} | vollständige ID der Zeile |
{{name}} | letztes Segment der ID |
Ein Platz mit leerer ID und source: lastChange zeigt, wann sich der Datenpunkt dieser Zeile zuletzt geändert hat — siehe Zeitstempel statt Wert.
{{parent2}} ist der Weg zu einem anderen Kanal desselben Geräts: bei HomeMatic liegt der Messwert in ….000A….1.ACTUAL_TEMPERATURE, Batterie und UNREACH dagegen im Wartungskanal ….000A….0.*. Oberhalb von adapter.instanz gibt es keine Ebene mehr.
Ohne Platzhalter gilt derselbe Datenpunkt für jede Zeile (Außentemperatur, Strompreis). Ein Beispiel-Eintrag im Tab liefert die Auswahl der Geschwister-Datenpunkte und die Vorschau der aufgelösten IDs. Über Beliebiger DP gewählte Datenpunkte desselben Geräts werden automatisch zum Muster — ein Klick auf die Batterie im Wartungskanal speichert {{parent2}}.0.OPERATING_VOLTAGE. Datenpunkte eines anderen Geräts bleiben absolut.
Zusätzlich pro Datenpunkt der zweiten Zeile:
| Feld | |
|---|---|
Werte-Zuordnung (states) | Tabelle Wert → Text, optional mit Icon und Farbe — z. B. true → ONLINE. Ersetzt den Werttext; die Einheit entfällt dann |
Bedingungen (conditions) | dieselben Regeln wie je Zeile, nur für diesen einen Wert |
Die Werte-Zuordnung ist dieselbe Tabelle wie beim Darstellungstyp Zustände und wirkt an beiden Stellen gleich.
| Option | Standard | |
|---|---|---|
subDpTemplate | — | Vorlage für alle Einträge |
subDpTemplateHideMissing | true | Zeilen ohne den aufgelösten Datenpunkt bleiben leer statt – zu zeigen |
Bedingungen je Zeile
Regeln, die auf einen Wert reagieren und Farbe, Icon oder Text einer Zeile ändern. Zwei Orte, gleiche Regeln:
| Ort | Gilt für |
|---|---|
Dialog Datenpunkte verwalten → Tab Bedingungen (rowConditions) | alle Zeilen |
Detail-Editor → Abschnitt Bedingungen (entries[].conditions) | nur diese Zeile |
Die listenweiten Regeln laufen zuerst, die des Eintrags danach — pro Eigenschaft gewinnt die letzte. Ausblenden ist absorbierend.
| Feld | |
|---|---|
target | row (Standard) · name · value · icon — worauf die Regel wirkt |
clauses / logic | wie bei den Widget-Bedingungen, inkl. Vergleich gegen einen zweiten Datenpunkt |
color · bg · iconColor | Textfarbe · Zeilenhintergrund (nur row) · Icon-Farbe |
icon | anderes Icon, solange die Regel greift |
iconSize | Icon-Größe in px, solange die Regel greift; leer lässt die eingestellte Größe |
fontSize | Textgröße in px, solange die Regel greift; leer lässt die eingestellte Größe |
text | ersetzt den angezeigten Text; die Einheit entfällt dabei |
bold · italic | Schriftschnitt |
effect | pulse · blink — lässt das Element pulsieren bzw. blinken |
hide | Element ausblenden |
Eine Regel auf row gibt Textgröße, Textfarbe, Fett/Kursiv sowie Icon, Icon-Farbe und Icon-Größe an Name, Wert und Icon weiter; Hintergrund und Ausblenden bleiben bei der Zeile. Eine Regel auf einen einzelnen Teil gewinnt gegen sie.
Auf value wirken Textgröße, Textfarbe und Schriftschnitt in jeder Darstellung: auch auf die Schalter-Beschriftung, die Zustands- und Kontakt-Pille, die Rollen-Anzeige eines Sensors, den Wert von Schieberegler und Stepper sowie die Datums- und Text-Felder. Ohne Werttext — Umschalter ohne Beschriftung, Rollladen-Tasten, Wert-Tasten, Taster — gibt es nichts zu formatieren.
Datenpunkt einer Bedingung
| Schreibweise | bedeutet |
|---|---|
{dp} (leer) | Wert der Zeile selbst |
hm-rpc.0.Gerät.UNREACH | genau dieser Datenpunkt, in jeder Zeile derselbe |
{{parent}}.UNREACH | Nachbar-Datenpunkt der jeweiligen Zeile |
{{dp}} · {{name}} | vollständige ID bzw. letztes Segment der Zeile |
Die doppelten Klammern sind dieselben Platzhalter wie in der zweiten Zeile. Zeilen, deren Datenpunkt einen Platzhalter nicht beantworten kann (kein Elternstrang), überspringen die Regel — statt gegen den wörtlichen Text zu vergleichen.
Beispiel
{{parent}}.UNREACH ist wahr → target: icon, Icon CloudOff, Icon-Farbe rot. Eine Regel, jede Zeile prüft ihr eigenes Gerät.
Datenpunkt-Suche
Dialog Datenpunkte verwalten → Tab Suchen & Filter. Mehrere Werte je Feld kommagetrennt; ID-Muster akzeptiert Text (Teilstring) oder /regex/.
Neben Raum und Funktion steht jede selbst angelegte enum-Kategorie zur Auswahl (z. B. enum.floors für Stockwerke). Enthält ein Eintrag Räume statt Datenpunkte, werden diese mit aufgelöst — ein Stockwerk findet also die Datenpunkte seiner Räume. Hängen die Mitglieder direkt an der Kategorie (enum.etage ohne Ebene darunter), ist die Kategorie selbst der Auswahleintrag. Gibt es außer enum.rooms und enum.functions nichts, bleibt das Feld leer und sagt das auch.
| Option | Standard | |
|---|---|---|
filterRoles | — | Rollen (exakt, ODER-Verknüpfung) |
filterIdPattern | — | ID-Muster (Text oder /regex/) |
filterRooms | — | Räume |
filterFuncs | — | Funktionen |
filterEnums | — | eigene Kategorien: volle enum-IDs (enum.floors.og), ODER innerhalb einer Kategorie, UND über Kategorien |
filterTypes | — | Typen (boolean, number, …) |
filterAdapters | — | Adapter-Instanzen (hm-rpc.0, …) |
excludeIdPatterns | — | auszuschließende ID-Muster |
excludeIds | — | einzeln ausgeschlossene IDs |
filterRelevant | true | nur Widget-relevante Rollen/Typen übernehmen |
syncIntervalMin | 5 | Sync-Intervall in Minuten |
Klick auf Zeile
Dialog Datenpunkte verwalten → Tab Klick auf Zeile. Ein Klick auf eine Listenzeile öffnet ein Detail-Popup zu genau diesem Datenpunkt. Klicks auf Schalter, Regler oder Buttons in der Zeile schalten weiterhin direkt.
| Option | Standard | |
|---|---|---|
rowClickAction | Aus | auto · { "kind": "none" } (aus) · vollständige Klick-Aktion |
rowPopupTitle | Zeilenname | Titel des Popups |
rowPopupWidth / rowPopupHeight | auto | px |
rowPopupAutoCloseSec | View/Global | Sekunden, 0 = aus |
Standard ohne eigene Einstellung: Aus — Zeilen reagieren nicht auf Klicks. Eigene Aktion startet mit Popup: Alle Datenpunkte des Geräts, Umfang Gleicher Strang (Elternobjekt), Nur relevante Datenpunkte an — entspricht { "kind": "popup-dps", "scope": "parent", "relevantOnly": true }. Automatisch (Popup nach Rolle) muss aktiv gewählt werden.
Automatik nach Rolle des Datenpunkts:
| Rolle | Popup |
|---|---|
level.dimmer · level.* · *dimmer* · *brightness* | Dimmer |
switch · switch.* · sensor.* · indicator.* · button | Schalter |
level.blind · *shutter* · *cover* · *awning* | Rollladen |
level.temperature · heating* | Thermostat |
media.* (außer media.volume) | Schalter |
| sonst | Standard: Datenpunkt (Wert, Steuerung, ID, letzte Änderung) |
Zugewiesene Widget-Typ-Standards gelten auch hier — wer dem Typ switch eine eigene View zuweist, bekommt sie auch in der Liste.
Pro Datenpunkt lässt sich das im Detail-Editor überschreiben (entries[].clickAction):
| Modus | |
|---|---|
| Wie Liste | Übernimmt die Listen-Einstellung — der Normalfall |
| Automatisch | Erzwingt die Ableitung aus der Rolle, auch wenn die Liste auf Aus oder eine eigene Aktion steht |
| Aus | Diese Zeile reagiert nicht auf Klicks |
| Eigene Aktion | Vollständige Klick-Aktion nur für diese Zeile — eine Zeile öffnet ein Widget-Popup, die nächste springt in einen anderen Tab. Popup-Titel und -Größe kommen weiterhin aus der Listen-Einstellung |
Navigations-Aktionen (Sprung: Tab · Externe URL · Widget) springen direkt, statt ein Popup zu öffnen.
Badges-Layout
Ein Badge ist die ganze Zeile. Bei Automatisch schalten schaltbare Badges weiterhin, das Popup übernimmt nur Badges ohne eigenen Schalter (Sensoren, schreibgeschützte und numerische Werte). Eine ausdrücklich gesetzte Aktion gewinnt dagegen auch bei schaltbaren Badges.
Anzeige
| Option | Standard | |
|---|---|---|
showTitle | true | Titel anzeigen |
showIcon | true | Icon anzeigen |
icon | List | Lucide-Icon |
iconSize | 20 | px |
titleAlign | left | left · center · right |
showCount | true | Anzahl hinter dem Titel |
maxRows | 0 | Höchstzahl angezeigter Zeilen; 0 = alle. Macht die Höhe planbar, weil die Zeilen sonst erst zur Laufzeit entstehen |
showMore | true | Abgeschnittene Zeilen als „+N weitere“ ausweisen |
entryIcon | — | Icon vor dem Namen — gilt für alle Zeilen |
entryIconSize | 13 | px |
entryIconColor | --text-secondary | Farbe des Zeilen-Icons (im Layout minimal sonst die Badge-Farbe) |
entryDisplay | — | Darstellung aller Zeilen ohne eigene — Typ plus dessen Einstellungen |
showId | false | Datenpunkt-ID unter dem Label |
showRoom | false | Räume unter dem Label |
showEntryLastChange | false | Zeitstempel der letzten Änderung je Eintrag |
decimals | global | Nachkommastellen numerischer Werte |
cardMinWidth | 90 | min. Kachelbreite in px (nur card) |
showDividers | true | Trennlinien zwischen Einträgen |
wrapText | false | lange Labels/Werte umbrechen statt abschneiden |
labelMinPercent | 50 | min. Breite des Labels in % (nur bei wrapText) |
Werte & Farben
| Option | Standard | |
|---|---|---|
trueText / falseText | — | globale AN/AUS-Texte (Eintrag überschreibt) |
activeColor | --accent-green | Textfarbe bei AN |
inactiveColor | --text-secondary | Textfarbe bei AUS |
activeBg / inactiveBg | — | Hintergrund des Eintrags je Zustand |
valueTransform / valueFactor / valueOffset | — | globale Wert-Umrechnung (Eintrag überschreibt) |
valueTimeFormat / valueTimePattern | — | globale Zeit-Formatierung (Eintrag überschreibt) |
colorThresholds | — | Farbskala aus [Schwelle, Farbe], z. B. [[17,"#ef4444"],[100,"#22c55e"]] — der Wert nimmt die Farbe der ersten Schwelle, unter der er liegt, oberhalb der letzten bleibt deren Farbe. Reihenfolge beliebig |
Anzeige-Filter
Frontend-Filter als Chip im Header (nicht zu verwechseln mit der Datenpunkt-Suche oben); backendValueFilter steuert nur die Editor-Vorschau. Neben den drei eingebauten Modi bietet das Menü die eigenen Filter und ein Freitextfeld.
| Option | Standard | |
|---|---|---|
valueFilter | all | all · active · inactive · ID eines eigenen Filters |
filterActiveLabel | Nur aktive | Chip-Text |
filterInactiveLabel | Nur inaktive | Chip-Text |
hideBuiltinFilters | false | Nur aktive/Nur inaktive aus dem Menü nehmen |
hideFilterSearch | false | Freitextfeld im Menü ausblenden |
filterSearchPlaceholder | Suchen … | Platzhalter des Freitextfelds |
hideFilterButton | false | Filter-Chip ausblenden |
backendValueFilter | all | Vorschau-Filter im Editor |
Freitext trifft Name, Datenpunkt-ID, Wert und alle Werte der zweiten Zeile.
Eigene Filter
Panel Filter & Sortierung → Eigene Filter. Aufbau und Optionen (filterPresets[], rules[]) wie bei der statischen Liste — inklusive source: name und enthält nicht, mit denen sich Zeilen anhand ihres Namens ausschließen lassen. Regeln mit source: sub prüfen die Datenpunkte der zweiten Zeile — auch die per Vorlage aufgelösten, subKey trifft dann die Bezeichnung oder die DP-Endung ({{parent}}.BATTERY → BATTERY).
Sortierung
Panel Filter & Sortierung → Sortierung. Kriterien-Kette und Optionen (sortRules[]) wie bei der statischen Liste — inklusive empty für Zeilen ohne Wert. Der Dialog zeigt live die entstehende Reihenfolge.
mode: lastChange / lastUpdate sortieren nach dem Zeitstempel statt nach dem Wert — bei source: sub nach dem der zweiten Zeile. asc = älteste zuerst, desc = neueste zuerst.
Ein Kriterium mit source: sub liest die Datenpunkte der zweiten Zeile — auch die per Vorlage aufgelösten. subKey trifft dann die Bezeichnung oder die DP-Endung ({{parent}}.BATTERY → BATTERY), leer = erster weiterer DP der Zeile.
Die älteren Optionen sortBy / sortOrder / sortBy2 / sortOrder2 wirken unverändert weiter; die erste Änderung im Dialog ersetzt sie durch sortRules[].
Summe
| Option | Standard | |
|---|---|---|
showSum | false | Summe der sichtbaren numerischen Werte |
sumLabel | Σ | Prefix der Summenzeile |
sumAlign | left | left · center · right |
sumFontSize | 10 | px |
Sammelschalter
| Option | Standard | |
|---|---|---|
groupSwitch | false | Sammelschalter im Header |
groupActionType | switch | switch · dimmer · shutter · momentary |
groupSwitchStyle | slide | slide · checkbox (nur switch) |
groupDimmerOnValue | 100 | Schreibwert bei „alle an" (Dimmer) |
groupExcludeIds | — | ausgenommene Einträge |
Zähler veröffentlichen
| Option | Standard | |
|---|---|---|
publishCount | false | gefilterte Anzahl nach aura.0.lists.<id>.count schreiben |