Statische Liste
Manuell gepflegte Liste mit frei konfigurierbaren Datenpunkt-Links. Jeder Eintrag bindet seinen eigenen Datenpunkt und wird je nach Wert als Schalter, Regler, Wert oder Sensor-Badge dargestellt.
Datenpunkt
Kein Haupt-Datenpunkt — jeder Listeneintrag (entries[]) trägt seine eigene id. Booleans werden als Schalter, Zahlen mit Level-/Dimmer-Rolle als Regler, alles andere als Wert dargestellt; displayType (shutter · stepper · buttons · select · momentary · switch · slider · value · time · datepicker · input · auto) erzwingt die Darstellung pro Eintrag.
Darstellung Schalter
displayType: 'switch' macht die Zeile zum Schalter — dieselben Möglichkeiten wie das Schalter-Widget, nur pro Listenzeile. Gilt auch für die dynamische Liste und für das Badges-Layout, in dem die ganze Zeile schaltet.
| Feld | Standard | |
|---|---|---|
switchStyle | slide | slide (Schiebeschalter) · checkbox (Kontrollkästchen) · icon (klickbares Icon) · image (klickbares Bild) |
trueIcon / falseIcon | Power | Icon je Zustand (bei icon und image) |
onImage / offImage | — | Bild je Zustand (bei image); ohne Bild greift das Icon |
switchIconSize | 22 | Größe von Icon/Bild in px. Leer = wie iconSize (das Icon vor dem Namen) |
onValue / offValue | — | Schreibwerte, z. B. 0/255, ON/OFF. Leer = wie der Datenpunkt (true/false bzw. 1/0) |
statusDp | — | Separater Status-Datenpunkt für Geräte, die Schalten und Rückmeldung trennen (Tasmota: cmnd.POWER schaltet, stat.POWER meldet) |
stateMode | boolean | boolean (an bei true, Zahl ungleich 0, ON) · condition (Vergleich) |
stateOperator / stateValue | > / 0 | Vergleich bei stateMode: condition |
trueLabel / falseLabel | — | Texte statt des Schiebeschalters (Pille); bei explizitem slide oder checkbox stehen sie neben dem Bedienelement |
confirm / confirmText | false | Sicherheitsabfrage vor dem Schalten |
Ist onValue gesetzt und kein statusDp konfiguriert, gilt die Zeile als an, wenn der Wert genau dem AN-Wert entspricht. Geschrieben wird immer auf den Datenpunkt der Zeile — ein statusDp meldet nur. Die Gruppen-Aktion (Master-Schalter) verwendet dieselben Werte.
Darstellung Schieberegler
displayType: 'slider' macht die Zeile zum Regler — dieselben Möglichkeiten wie das Schieberegler-Widget, nur pro Listenzeile. Gilt auch für die dynamische Liste; im Badges-Layout wird stattdessen der reine Wert angezeigt.
| Feld | Standard | |
|---|---|---|
sliderMin / sliderMax | 0 / 100 | Skala, z. B. 0/255 für einen Dimmer oder -20/40 für einen Sollwert |
sliderStep | 1 | Schrittweite; bestimmt auch die Nachkommastellen des angezeigten Werts |
sliderBarStyle | false | false (Regler) · true (gefüllter Balken wie im Widget) |
sliderBarSize | 100 | Balkenhöhe in % (nur bei sliderBarStyle) |
sliderThickness | 4 / 6 | Dicke der Reglerspur in px (Zeile / Card-Layout) |
sliderWidth | 80 | Breite des Reglers in px (Zeilen-Layouts; Card-Layout: volle Breite) |
sliderColor | var(--accent) | Farbe von Füllung und Regler-Knopf |
sliderShowValue | true | Wert neben dem Regler anzeigen |
sliderShowUnit | true | Einheit an den Wert hängen (Einheit des Eintrags, ohne Angabe %) |
sliderShowMinMax | false | Skalenenden links und rechts vom Regler |
sliderShowScale | false | Skala mit den Schrittwerten unter dem Regler; ersetzt sliderShowMinMax |
sliderScaleLabelEvery | — | nur jeden n-ten Schritt beschriften; leer = so viele, wie die Breite hergibt |
sliderScaleTicks | true | Skalenstriche zeichnen |
sliderCommitOnRelease | false | Erst beim Loslassen schreiben statt bei jeder Bewegung |
sliderReadOnly | false | Fortschrittsanzeige — Regler wird gezeichnet, ist aber nicht bedienbar |
Geschrieben wird auf die Schrittweite gerundet und auf die Skala begrenzt. Ein Datenpunkt ohne Schreibrecht zeigt nur den Wert; sliderReadOnly behält dagegen bewusst die Reglergrafik.
sliderShowScale beschriftet immer Min und Max. In der Zeile ist der Regler standardmäßig 80 px breit — dort bleiben meist nur diese beiden stehen; mehr Zahlen brauchen sliderWidth oder ein Card-Layout.
Nicht übernommen: die senkrechte Ausrichtung des Widgets (eine Listenzeile ist ein waagerechter Streifen) sowie Aktions-Buttons und Status-Badges — die gehören zum Widget-Rahmen, nicht zum Wert.
Darstellung Rollladen
displayType: 'shutter' macht die Zeile zur Rollladen-Steuerung — dieselben Möglichkeiten wie das Rollladen-Widget, nur pro Listenzeile. Gilt auch für die dynamische Liste. Auto-Erkennung im Editor findet die Befehls-DPs bzw. den LEVEL-Datenpunkt aus der Nachbarschaft.
| Feld | Standard | |
|---|---|---|
shutterMode | commands | commands (eigene Auf-/Stop-/Ab-DPs) · position (Haupt-DP der Zeile, z. B. LEVEL) |
shutterUpDp / shutterStopDp / shutterDownDp | — | Befehls-Datenpunkte (commands) |
shutterWriteValue | true | Wert, der auf einen Befehls-DP geschrieben wird |
shutterOpenValue / shutterCloseValue | 100 / 0 | Werte für Auf/Ab im Positions-Modus |
shutterActualDp | — | Nur lesender Ist-Positions-DP (HmIP-BROLL & Co.); gilt für die Anzeige |
shutterInvert | false | Gerät zählt umgekehrt (0 = offen) |
shutterShowValue / shutterShowClosedPercent | false | Position anzeigen, wahlweise als Geschlossen-Prozent |
shutterShowSlider / shutterSliderWidth | false / 64 | Positions-Regler in der Zeile, Breite in px (Card-Layout: volle Breite) |
shutterSendOnRelease | true | Position erst beim Loslassen schreiben |
shutterLivePreview | false | Angezeigter Wert folgt dem Regler statt dem Datenpunkt |
shutterTiltDp / shutterTiltActualDp | — | Lamellen-Datenpunkt und optionaler Ist-DP; blendet die Lamellen-Taste ein |
shutterTiltMin / shutterTiltMax / shutterTiltInvert | 0 / 100 / false | Geräteskala der Lamellen (0…1, −90…90 …) |
shutterTiltLabel | Lamellen | Beschriftung der Lamellen-Steuerung |
shutterShowTiltValue | false | Lamellenwert in der Zeile anzeigen |
shutterTiltLivePreview / shutterTiltSendOnRelease | true / true | Vorschau folgt dem Regler; Schreiben erst beim Loslassen |
shutterActivityDp / shutterActivityMovingValues | — / true,1 | „Fährt"-Datenpunkt; färbt Position und Tasten während der Fahrt |
shutterDirectionDp | — | Richtung (1 = auf, 2 = ab); hebt die passende Taste hervor |
shutterLockDp / shutterLockValues | — / true,1 | Verriegelung; zeigt ein Schloss vor der Steuerung |
Die Lamellen-Steuerung öffnet sich als Popover (Vorschau, Regler, Schnellwerte) — in einer Zeile ist für einen senkrechten Regler kein Platz. Nicht übernommen: Tastengrößen und der Platzierungs-Block des Widgets, die zum Widget-Rahmen gehören.
Darstellung Tasten
displayType: 'buttons' legt feste Werte als Tasten in die Zeile — dieselben Möglichkeiten wie das Auswahlfeld-Widget, nur pro Listenzeile. Gilt auch für die dynamische Liste.
| Feld | Standard | |
|---|---|---|
presets[] | — | Wert, Text, Farbe, Darstellung (text · icon · image · html), Icon/Bild, Größe |
presetsSource | Liste | json nimmt die Tasten stattdessen aus einem Datenpunkt mit JSON |
presetsDp | — | Datenpunkt mit dem JSON (nur bei presetsSource: 'json') |
presetsValueKey / presetsLabelKey / presetsColorKey / presetsIconKey / presetsImageKey | erkannt | Feldnamen im JSON |
presetSelect | false | Auswahlliste (Dropdown) statt einer Reihe von Tasten |
Darstellung Auswahlfeld
displayType: 'select' legt die Auswahlliste des Auswahlfeld-Widgets in die Zeile. Die Werte sind dieselben wie bei den Tasten (presets[] samt JSON-Quelle) — ein Umschalten zwischen beiden Darstellungen behält sie. Im Badges-Layout wird stattdessen der Text des passenden Eintrags angezeigt. Gilt auch für die dynamische Liste.
| Feld | Standard | |
|---|---|---|
presets[] u. a. | — | Werte, Texte, Farben, Icons/Bilder und die JSON-Quelle wie bei den Tasten |
selectShowSelect | true | Auswahlliste anzeigen; false zeigt nur den aktuellen Eintrag |
selectShowValue | ohne Auswahlliste | aktuellen Eintrag zusätzlich neben der Auswahlliste anzeigen |
selectEntryDisplay | text | Darstellung des aktuellen Eintrags: text · icon-text · icon |
selectWidth | automatisch | feste Breite der Auswahlliste in px |
Darstellung Wertzuordnung
displayType: 'states' bildet den Wert auf Text, Icon oder Bild ab — die Anzeige-Seite des Zustandsbild-Widgets, nur pro Listenzeile und mit beliebig vielen Zuständen.
| Feld | |
|---|---|
states[].value | Vergleichswert |
states[].op | Vergleich; ohne Angabe Gleichheit. Mit >=, < … wird die Zeile zum Bereich — die erste passende gewinnt |
states[].label | Text statt des Werts |
states[].color | Farbe der Pille |
states[].render | text (Standard) · icon · image · html |
states[].icon / states[].image / states[].size | Icon bzw. Bild und dessen Größe in px |
Die Tabelle ist dieselbe wie die Werte-Zuordnung der zweiten Zeile und wirkt an beiden Stellen gleich.
Darstellung Fenster-/Türkontakt
displayType: 'contact' bildet den Wert auf geschlossen · gekippt · offen ab — dieselbe Wertezuordnung wie das Fenster-/Türkontakt-Widget, nur pro Listenzeile. Gilt auch für die dynamische Liste und für das Badges-Layout.
| Feld | Standard | |
|---|---|---|
contactPreset | hmip | Wertevorlage; custom schaltet die drei Wertelisten frei |
contactValuesClosed / contactValuesTilted / contactValuesOpen | Vorlage | eigene Werte je Zustand, kommagetrennt (nur bei custom) |
contactAppearance | — | Text, Farbe und Icon je Zustand: { closed: { label, color, icon }, tilted: …, open: … } — Standard „Geschlossen" / „Gekippt" / „Offen". So wird die Zeile für etwas anderes als ein Fenster beschriftet, z. B. { closed: { label: "zu" }, open: { label: "heizt" } } |
contactLockDp | — | Verriegelungs-Datenpunkt; zeigt ein Schloss-Symbol vor dem Zustand |
contactLockValues | true,1 | Werte, die „abgeschlossen" bedeuten (kommagetrennt) |
Darstellung Eingabefeld
displayType: 'input' macht die Zeile zum Eingabefeld — dieselben Möglichkeiten wie das Eingabefeld-Widget, nur pro Listenzeile. Im Badges-Layout wird stattdessen der reine Wert angezeigt. Gilt auch für die dynamische Liste.
Das Häkchen Negativ darstellen (× −1) kehrt das Vorzeichen um (gespeichert als negatives valueFactor) und lässt sich mit jeder Umrechnung kombinieren.
| Feld | Standard | |
|---|---|---|
inputPlaceholder | — | Platzhalter im leeren Feld |
inputWidth | 110 | Feldbreite in px (Card-Layout der dynamischen Liste: volle Breite) |
inputMode | text | text · number |
inputMin / inputMax | — | Wertebereich im Zahlmodus; geschrieben wird auf ihn begrenzt |
inputStep | 1 | Schrittweite im Zahlmodus |
inputMultiline | false | Mehrzeiliges Textfeld (schaltet den Zahlmodus ab); Enter = Zeilenumbruch, Strg/Cmd+Enter sendet |
inputHeight | 48 | Höhe des mehrzeiligen Felds in px |
inputSubmitMode | submit | submit (Enter / Feld verlassen / Senden-Button) · live (jeder Tastenschlag) |
inputShowSubmit | true | Senden-Button anzeigen (nur bei submit) |
inputClearAfterSubmit | false | Befehlsfeld: nach dem Senden leeren, Datenpunkt-Wert nie anzeigen |
confirm / confirmText | false | Sicherheitsabfrage vor dem Senden (nur bei submit) |
inputTextAlign | left | left · center · right |
inputReadOnly | false | Schreibschutz — Wert wird angezeigt, aber nicht geschrieben |
inputShowUnit | false | Einheit des Eintrags rechts neben dem Feld anzeigen |
Ein schreibgeschützter Datenpunkt ist immer schreibgeschützt, unabhängig von inputReadOnly.
Darstellung Datum/Zeit
displayType: 'time' zeigt einen Zeit-Datenpunkt als Uhrzeit und/oder Datum. Zeitstempel (Sekunden/Millisekunden), ISO-Zeitangaben und HH:mm werden automatisch erkannt; nicht lesbare Werte zeigen –. Gilt auch für die dynamische Liste.
| Feld | Standard | |
|---|---|---|
timeFormat | time | relative (vor 5 Min) · time (14:32) · time-sec · date (01.08.2026) · date-long (Samstag, 1. August 2026) · datetime · datetime-sec · custom |
timePattern | — | Token-Muster bei custom, z. B. EEEE, dd.MM. HH:mm |
Tokens: HH mm ss · hh · dd MM yyyy yy · EEEE (Wochentag) · EE · MMMM (Monat) · ww (KW)
Darstellung Datumswähler
displayType: 'datepicker' macht die Zeile zum Datums-/Zeitwähler — dieselben Möglichkeiten wie das Datumswähler-Widget, nur pro Listenzeile. Der gewählte Wert wird im Ausgabeformat in den Datenpunkt geschrieben. Im Badges-Layout ist kein Platz für die Felder — dort steht der gesetzte Wert als Text. Gilt auch für die dynamische Liste.
| Feld | Standard | |
|---|---|---|
dateInputFormat | picker | picker (Datums-/Zeitwähler) · custom (Feld laut dateInputPattern) |
dateInputPattern | wie dateOutputPattern | Muster bei dateInputFormat: custom, z. B. MM.yyyy |
dateTimeOnly | false | nur Uhrzeit, ohne Datum |
dateShowTime | false | zusätzliches Uhrzeit-Feld zum Datum |
dateOutputFormat | timestamp_ms | timestamp_ms · timestamp_s · iso · date · datetime_local · de_date · de_datetime · time_hhmm · time_hhmmss · custom |
dateOutputPattern | dd.MM.yyyy | Muster bei dateOutputFormat: custom |
Muster-Tokens: dd MM yyyy yy HH hh mm ss. Welches Auswahlfeld das Eingabe-Muster rendert (Kalender, Monatswähler, Uhrzeit, Textfeld mit eigener Auswahlliste) steht beim Datumswähler.
Nur Anzeige eines Zeit-Datenpunkts, ohne Schreiben: displayType: 'time'.
Zweite Zeile (zusätzliche Datenpunkte)
Dialog Datenpunkte verwalten → Detail-Editor → Abschnitt Zweite Zeile. Jeder Eintrag kann weitere Datenpunkte (entries[].subDps[]) in einer zweiten Zeile unter dem Haupt-Datenpunkt zeigen — Batterie, Signalstärke, Sollwert, Laufzeit. Nur Anzeige: kein Schalter, kein Regler, kein Schreiben.
Die Zeile hat drei Plätze — links, mitte, rechts. Mehrere Datenpunkte am selben Platz stehen in Konfigurationsreihenfolge nebeneinander.
Zwei Wege zum Hinzufügen, die Auswahl ist nicht auf das Gerät der Zeile beschränkt:
| Schaltfläche | |
|---|---|
| + DP des Geräts (n) … | Datenpunkte desselben Geräts als Kurzauswahl |
| + Beliebiger DP … | Objektbaum — jeder Datenpunkt aus ioBroker, auch von einem anderen Gerät oder Adapter |
Die ID lässt sich außerdem direkt ins Feld tippen.
| Feld | Standard | |
|---|---|---|
id | — | Datenpunkt-ID |
source | value | value · lastChange · lastUpdate — Zeitstempel statt Wert |
align | left | left · center · right |
label | — | Text vor dem Wert; leer = nur Wert |
icon | — | Lucide-Icon / Iconify-ID vor dem Text |
unit | aus dem Objekt | Einheit hinter dem Wert (entfällt bei Zeit-Formatierung) |
decimals / numberFormat | global | Dezimalstellen und Tausendertrennung |
fontSize | 9 | px |
color | --text-secondary | Textfarbe |
valueTransform / valueFactor / valueOffset / valueTimeFormat / valueTimePattern | Liste | eigene Wert-Umrechnung pro Zusatz-Datenpunkt |
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.
Zeitstempel statt Wert
Schaltfläche + Letzte Änderung, oder am vorhandenen Datenpunkt Anzeigen umstellen. Der Zeitstempel ersetzt den Wert an diesem Platz — die zusätzliche Zeile unter dem Wert schaltet dagegen Letzte Änderung am Eintrag.
| Option | |
|---|---|
source | lastChange = letzte Wertänderung (lc) · lastUpdate = letzter Schreibvorgang (ts) |
id leer | Datenpunkt der Zeile — kein zweiter DP nötig |
valueTimeFormat | Standard relative (vor 5 Min); sonst time · date · datetime · custom … |
Einheit, Dezimalstellen und Werte-Zuordnung entfallen. Der Tooltip zeigt den genauen Zeitpunkt.
Layouts default · card · compact zeigen die zweite Zeile. Das Badges-Layout (minimal) nicht — dort ist eine Zeile eine Pille. Die dynamische Liste kennt dieselben Felder, zusätzlich als Vorlage für alle Einträge.
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.
Wert-Umrechnung / Zeit
Der Button neben dem Datenpunkt-Feld (Dialog Datenpunkte verwalten → Abschnitt Datenpunkt) rechnet den Wert nur für die Anzeige um und/oder formatiert ihn als Uhrzeit/Datum — wie bei der Wert-Anzeige. Der Datenpunkt bleibt unverändert. Gilt auch für die dynamische Liste.
| Feld | Standard | |
|---|---|---|
valueTransform | — | Preset-Id, custom oder none (schaltet die globale Umrechnung für diesen Eintrag ab) |
valueFactor / valueOffset | 1 / 0 | Anzeige = Wert × Faktor + Offset |
valueTimeFormat | — | relative · time · time-sec · date · date-long · datetime · datetime-sec · custom |
valueTimePattern | — | Token-Muster bei custom, z. B. EEEE, dd.MM. HH:mm |
Presets: Sekunden → Minuten/Stunden · ms → s · Wh → kWh · W → kW · Bytes → KB/MB/GB · 0..1 → % · °C → °F.
Wirkt auf den angezeigten Werttext, die Farbschwellen und die Statistikzeile — nicht auf Schalter, Regler, +/− und Eingabefeld, die ihren Wert zurückschreiben. Bei aktiver Zeit-Formatierung entfällt die Einheit. Ohne eigene Einstellung gilt die globale Umrechnung der Liste (Widget bearbeiten → Werte & Farben).
Layouts
Default
Volle Zeilen mit Label, optionalem Raum/ID und Wert rechts — für Standardlisten.
Card
Kacheln im Raster (auto-fill, min. 90px) mit Label oben und Wert zentriert.
Compact
Zweispaltiges, dichtes Gitter — für viele Einträge auf wenig Platz.
Minimal
Inline-Pills mit Label und Wert, umbrechend — für kompakte Status-Anzeigen.
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 | |
|---|---|
| Einträge | Datenpunkte hinzufügen, per Drag & Drop sortieren, löschen; rechts der Detail-Editor (ID, Icon, Bezeichnung, Format, Darstellung, Farben, Schwellen). Ab 8 Einträgen mit Filterfeld |
| Klick auf Zeile | Detail-Popup beim Klick auf eine Zeile (siehe unten) |
| Namen | Namensmuster und Namens-Filter |
Das Icon vor dem Namen wird je Datenpunkt im Abschnitt Beschriftung gesetzt (entries[].icon, Lucide / Iconify-ID), die Größe daneben in px (entries[].iconSize, Standard 11, im Default-Layout 13). Die Größe gilt für jede Darstellung; das Icon eines Schalters hat mit entries[].switchIconSize eine eigene.
Der Detail-Editor rechts ist in Abschnitte gegliedert: Datenpunkt · Beschriftung · Darstellung (mit dem gewählten Typ als Kennzeichen, darin alle typabhängigen Felder) · Zweite Zeile · Bedingungen · Farbschwellen · Verhalten (letzte Änderung, Klick auf Zeile).
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. Die Popup-Größe kommt weiterhin aus der Listen-Einstellung |
Popup-Titel und Titelzeile lassen sich zusätzlich pro Datenpunkt setzen — in jedem Modus außer Aus:
| Feld | Standard | |
|---|---|---|
entries[].popupTitle | Listen-Titel, sonst Zeilenname | Überschrift des Popups nur für diese Zeile |
entries[].popupHideTitle | wie Liste | true = Titelzeile aus · false = an, auch wenn die Liste sie ausblendet |
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.
Trennlinien (Abschnitte)
Dialog Datenpunkte verwalten → Button Trennlinie unter der Liste. Eine Trennlinie ist ein eigener Eintrag: sie wird wie ein Datenpunkt hinzugefügt, per Drag & Drop an die gewünschte Stelle gezogen und mit demselben ✕ gelöscht. Sie rendert eine Linie über die volle Breite, wahlweise mit Überschrift, und eröffnet damit einen Abschnitt. Wirkt in allen Layouts außer custom.
Auswählen öffnet rechts den Editor:
| Feld | Standard | |
|---|---|---|
divider | — | true kennzeichnet die Zeile als Trennlinie (die id ist dann synthetisch, z. B. divider:1) |
dividerLabel | — | Überschrift; leer = nur Linie |
dividerAlign | left | left · center · right |
dividerFontSize | 10 | px |
dividerColor | --text-secondary | Textfarbe |
dividerLine | true | false = nur Überschrift, ohne Linie |
Verhalten:
| Sortierung | wirkt innerhalb eines Abschnitts — die Abschnitte selbst bleiben stehen |
| Wert-Filter / Suche | bleibt von einem Abschnitt keine Zeile übrig, entfällt seine Trennlinie |
| Position | eine Linie ohne Überschrift ganz oben sowie eine Trennlinie ohne Zeilen dahinter werden unterdrückt |
| Zählung, Summe, Gruppen-Aktion | ignorieren Trennlinien vollständig |
Unabhängig davon ist showDividers — die dünne Linie zwischen je zwei Zeilen.
Die dynamische Liste hat das bewusst nicht: dort kommen die Zeilen aus einem Filter und werden neu sortiert, eine Trennlinie an fester Stelle wäre nach der nächsten Sortierung falsch. Zum Gruppieren dient dort groupByRoom.
Namen
Dialog Datenpunkte verwalten → Tab Namen. Ein Muster für alle Zeilen; leer = zusammengesetzter Name des Datenpunkts.
| Platzhalter | ergibt |
|---|---|
<Raum> | Raum des Datenpunkts |
<Gerät> | Geräteteil des Namens |
<DPName> | letztes Segment der ID |
<Name> | vollständiger Name |
<ID> | vollständige Datenpunkt-ID |
{{parent}} · {{parent2}} · {{dp}} · {{name}} | ID-Bausteine der Zeile, wie in der zweiten Zeile |
[[id]] | Wert dieses Datenpunkts, live |
Steht der Anzeigename in einem eigenen Datenpunkt, kombiniert man beides:
| Muster | Ergebnis |
|---|---|
[[{{parent}}.DeviceName]] | Wert des Nachbar-Datenpunkts DeviceName je Zeile |
Steckdose [[{{parent}}.DeviceName]] | mit festem Text davor |
[[shared.0.Ort]] <DPName> | absolute ID — derselbe Wert in jeder Zeile |
Ein [[…]] ohne Wert fällt auf den normalen Namen zurück. nameFilters (Button Namens-Filter) schneidet die <…>-Platzhalter zurecht, mit Vorschau; Regeln auf Ergebnis laufen auf dem fertigen Label — also erst nachdem [[…]] seinen Wert hat.
| Option | Standard | |
|---|---|---|
namePattern | — | Namensmuster |
nameFilters | — | Regelliste für die Platzhalter-Texte |
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 |
showId | false | Datenpunkt-ID unter dem Label (nur default) |
showRoom | false | zugeordnete Räume unter dem Label (nur default) |
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 | — | globale 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. Pro Datenpunkt überschreibbar (Datenpunkte verwalten → Farbschwellen) |
Filter
Frontend-Filter als Chip im Header; backendValueFilter steuert nur die Editor-Vorschau. Neben den drei eingebauten Modi bietet das Menü die eigenen Filter (siehe Eigene 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. Jeder Filter erscheint als eigener Eintrag im Filter-Menü; jede Regel prüft den Haupt-Datenpunkt, die weiteren Datenpunkte der zweiten Zeile oder beide. Das Wertefeld ist Freitext mit Auswahlliste der aktuell vorhandenen Werte; der Dialog zeigt live, wie viele Einträge ein Filter trifft.
filterPresets[] | Standard | |
|---|---|---|
id | — | wird in valueFilter / backendValueFilter referenziert |
label | — | Text im Filter-Menü |
icon | — | Iconify-ID / Lucide-Name im Menü |
logic | AND | AND (alle Regeln) · OR (eine genügt) |
rules[] | — | siehe unten |
rules[] | Standard | |
|---|---|---|
source | main | main · sub (weitere DPs) · both · name (angezeigter Zeilenname) |
subKey | — | leer = alle weiteren DPs; sonst Bezeichnung oder DP-Endung (BATTERY) |
operator | — | == != > >= < <= contains enthält nicht true false active inactive empty notEmpty |
value | — | Vergleichswert (entfällt bei active/inactive/true/false/empty/notEmpty) |
every | false | bei mehreren geprüften Werten müssen alle passen |
Der Zeilenname ist der angezeigte — ein [[…]] im Namensmuster ist bereits durch seinen Wert ersetzt, wenn eine Regel ihn sieht. Damit lassen sich Zeilen auch ausschließen, was das Suchfeld nicht kann: Name · enthält nicht · Offline blendet jede Zeile aus, in deren Namen „Offline" steht.
enthält nicht ist eine verneinende Regel und gilt für alle geprüften Werte: trifft einer zu, fällt die Zeile weg. Der Schalter „alle müssen passen" hat darauf keine Wirkung.
Sortierung
Panel Filter & Sortierung → Sortierung. Eine Kette von Kriterien: das erste entscheidet, die folgenden nur bei Gleichstand. Der Dialog zeigt live die daraus entstehende Reihenfolge.
sortRules[] | Standard | |
|---|---|---|
source | value | value (Wert) · name (angezeigter Zeilenname) · sub (Datenpunkt der 2. Zeile) |
subKey | — | bei sub: Bezeichnung oder DP-Endung (BATTERY); leer = erster weiterer DP der Zeile |
order | asc | asc · desc |
mode | auto | auto · number · text · active · lastChange · lastUpdate |
empty | last | last · first — wohin Zeilen ohne Wert kommen |
mode | |
|---|---|
auto | Zahlen numerisch, Text alphabetisch (Zahlen darin numerisch) |
number | Text wird zur Zahl; was keine ist, gilt als ohne Wert |
text | rein alphabetisch — 10 steht damit vor 9 |
active | aktive (an / > 0) zuerst, desc dreht es |
lastChange | nicht der Wert, sondern wann er sich zuletzt geändert hat (lc) |
lastUpdate | wann der Adapter zuletzt geschrieben hat (ts) — auch ohne Wertänderung |
lastChange / lastUpdate vergleichen den Zeitstempel statt des Werts. Welcher Datenpunkt gemeint ist, sagt weiterhin source: bei sub der in subKey gewählte Datenpunkt der zweiten Zeile, sonst der Datenpunkt der Zeile selbst. asc = älteste zuerst, desc = neueste zuerst. Zeilen, die noch nie gemeldet haben, gelten als ohne Wert und folgen empty.
Der Schlüssel in subKey ist die Bezeichnung des Datenpunkts oder das letzte Segment seiner ID — dieselbe Konvention wie bei den eigenen Filtern. Ein Vorlagen-Eintrag {{parent}}.BATTERY wird also als BATTERY angesprochen und in jeder Zeile gegen ihr eigenes Gerät aufgelöst.
Zeilen ohne Wert kommen in beiden Richtungen ans Ende (empty: last) — sonst startet jede Liste „schlechtester Akku zuerst" mit den Geräten, die gar keinen Akku haben.
Ohne Kriterium gilt die manuelle Reihenfolge aus dem Dialog Datenpunkte verwalten.
Sind Trennlinien gesetzt, wirkt die Sortierung innerhalb eines Abschnitts — die Abschnitte selbst bleiben in der konfigurierten Reihenfolge stehen.
Bestehende Dashboards
Die älteren Optionen sortBy / sortOrder / sortBy2 / sortOrder2 (none · label · value · sub:<Bezeichnung>) wirken unverändert weiter. Der Dialog zeigt sie als Kette an; die erste Änderung darin ersetzt sie durch sortRules[].
Summe
Summiert die numerischen Werte der sichtbaren Einträge unter dem Titel.
| Option | Standard | |
|---|---|---|
showSum | false | Summenzeile anzeigen |
sumLabel | Σ | Prefix der Summenzeile |
sumAlign | left | left · center · right |
sumFontSize | 10 | px |
Sammelschalter
Master-Steuerung im Header für alle Einträge.
| Option | Standard | |
|---|---|---|
groupSwitch | false | Sammelschalter anzeigen |
groupActionType | switch | switch · dimmer · shutter · momentary |
groupSwitchStyle | slide | slide · checkbox (nur switch) |
groupDimmerOnValue | 100 | Schreibwert bei „alle an" (Dimmer) |
groupExcludeIds | — | von der Gruppenaktion ausgenommene Einträge |
Zähler veröffentlichen
| Option | Standard | |
|---|---|---|
publishCount | false | gefilterte Anzahl nach aura.0.lists.<id>.count schreiben |