Skip to content

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. Eine id mit JSON-Pfad (0_userdata.0.akku?devices[0].soc, Button {} neben dem Datenpunkt-Feld) zeigt ein Feld aus einem JSON-Datenpunkt — nur lesend. Booleans werden als Schalter, Zahlen mit Level-/Dimmer-Rolle als Regler, alles andere als Wert dargestellt — ein Zahlen-Datenpunkt (common.type: number) bleibt auch bei 0/1 eine Zahl, außer er hat die Rolle switch/button; 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.

FeldStandard
switchStyleslideslide (Schiebeschalter) · checkbox (Kontrollkästchen) · icon (klickbares Icon) · image (klickbares Bild)
trueIcon / falseIconPowerIcon je Zustand (bei icon und image)
onImage / offImage—Bild je Zustand (bei image); ohne Bild greift das Icon
switchIconSize22Größ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)
stateModebooleanboolean (an bei true, Zahl ungleich 0, ON) · condition (Vergleich)
stateOperator / stateValue> / 0Vergleich bei stateMode: condition
trueLabel / falseLabel—Texte statt des Schiebeschalters (Pille); bei explizitem slide oder checkbox stehen sie neben dem Bedienelement
confirm / confirmTextfalseSicherheitsabfrage 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.

FeldStandard
sliderMin / sliderMax0 / 100Skala, z. B. 0/255 für einen Dimmer oder -20/40 für einen Sollwert
sliderStep1Schrittweite; bestimmt auch die Nachkommastellen des angezeigten Werts
sliderBarStylefalsefalse (Regler) · true (gefüllter Balken wie im Widget)
sliderBarSize100Balkenhöhe in % (nur bei sliderBarStyle)
sliderThickness4 / 6Dicke der Reglerspur in px (Zeile / Card-Layout)
sliderWidth80Breite des Reglers in px (Zeilen-Layouts; Card-Layout: volle Breite)
sliderColorvar(--accent)Farbe von Füllung und Regler-Knopf
sliderShowValuetrueWert neben dem Regler anzeigen
sliderShowUnittrueEinheit an den Wert hängen (Einheit des Eintrags, ohne Angabe %)
sliderShowMinMaxfalseSkalenenden links und rechts vom Regler
sliderShowScalefalseSkala mit den Schrittwerten unter dem Regler; ersetzt sliderShowMinMax
sliderScaleLabelEvery—nur jeden n-ten Schritt beschriften; leer = so viele, wie die Breite hergibt
sliderScaleTickstrueSkalenstriche zeichnen
sliderCommitOnReleasefalseErst beim Loslassen schreiben statt bei jeder Bewegung
sliderReadOnlyfalseFortschrittsanzeige — 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.

FeldStandard
shutterModecommandscommands (eigene Auf-/Stop-/Ab-DPs) · position (Haupt-DP der Zeile, z. B. LEVEL)
shutterUpDp / shutterStopDp / shutterDownDp—Befehls-Datenpunkte (commands)
shutterWriteValuetrueWert, der auf einen Befehls-DP geschrieben wird
shutterOpenValue / shutterCloseValue100 / 0Werte für Auf/Ab im Positions-Modus
shutterActualDp—Nur lesender Ist-Positions-DP (HmIP-BROLL & Co.); gilt für die Anzeige
shutterInvertfalseGerät zählt umgekehrt (0 = offen)
shutterShowValue / shutterShowClosedPercentfalsePosition anzeigen, wahlweise als Geschlossen-Prozent
shutterShowSlider / shutterSliderWidthfalse / 64Positions-Regler in der Zeile, Breite in px (Card-Layout: volle Breite)
shutterSendOnReleasetruePosition erst beim Loslassen schreiben
shutterLivePreviewfalseAngezeigter Wert folgt dem Regler statt dem Datenpunkt
shutterTiltDp / shutterTiltActualDp—Lamellen-Datenpunkt und optionaler Ist-DP; blendet die Lamellen-Taste ein
shutterTiltMin / shutterTiltMax / shutterTiltInvert0 / 100 / falseGeräteskala der Lamellen (0…1, −90…90 …)
shutterTiltLabelLamellenBeschriftung der Lamellen-Steuerung
shutterShowTiltValuefalseLamellenwert in der Zeile anzeigen
shutterTiltLivePreview / shutterTiltSendOnReleasetrue / trueVorschau 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,1Verriegelung; 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 Stepper ​

displayType: 'stepper' — −/+ Tasten um den Wert. Gilt auch für die dynamische Liste.

FeldEditorStandard
stepMin / stepMaxMin/Max—Grenzen
stepStepSchritt1Schrittweite
stepTimeFormatFormatZahlmm:ss · hh:mm · hh:mm:ss — Anzeige als Dauer, liest Zeit-Strings (05:00, 1:05:03)
stepUnitEinheits (hh:mm: min)Einheit von Min/Max/Schritt und von Zahlen im DP: s · min · h
stepWriteSchreibtnumbernumber (Zahl) · string (Zahl als Text) · time (Zeit-String im gewählten Format)

Gerechnet wird immer mit einer Zahl in stepUnit; nur Lesen, Anzeige und Schreiben rechnen um. mm:ss zählt über eine Stunde weiter (90:00), hh:mm:ss zeigt 01:30:00.

Varianten ​

FallFormatEinheitSchreibtDP enthält → nach +
normaler Zahlen-DP (Standard)Zahl—Zahl5 → 6
String-DP, der eine Zahl willZahl—Zahl als Text"5" → "6"
Adapter will MM:SSmm:ssMinutenZeit-String"05:00" → "10:00" (Schritt 5)
Sekunden als Zahl, Anzeige als Dauermm:ssSekundenZahl300 (Anzeige 05:00) → 360
Stunden:Minuten als Texthh:mmMinutenZeit-String"01:30" → "01:45" (Schritt 15)
zeigt MM:SS, nimmt Minuten als Zahlmm:ssMinutenZahl"05:00" → 10

Beispiel Sprinkle Control ​

sprinklecontrol.0.sprinkle.<kreis>.runningTime zeigt die Laufzeit als 05:00, nimmt aber nur Minuten als Zahl an — ein geschriebenes "05:00" ignoriert der Adapter.

FeldWert
Formatmm:ss
EinheitMinuten
Schritt / Min / Max5 / 0 / 60
SchreibtZahl
DP runningTimeAnzeigeBedeutung
00:0000:00Kreis aus — + schreibt 5 und startet ihn
505:00gerade gestartet (vom Adapter bestätigt)
10:0010:00Zeit bei laufendem Kreis geändert
0 (geschrieben)00:00Kreis stoppt

Ein Kreis als Liste:

ZeileDPDarstellung
StatussprinklerStateWertzuordnung: 0 Aus · 1 Warten · 2 Läuft · 3 Pause · 4 Boost · 5 Aus (Boost) · 6 Zisterne leer · 7 externe Pause
LaufzeitrunningTimeStepper wie oben
RestzeitcountdownWert
AutomatikautoOnSchalter
BodenfeuchteactualSoilMoistureWert

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.

FeldStandard
presets[]—Wert, Text, Farbe, Darstellung (text · icon · image · html), Icon/Bild, Größe
presetsSourceListejson nimmt die Tasten stattdessen aus einem Datenpunkt mit JSON
presetsDp—Datenpunkt mit dem JSON (nur bei presetsSource: 'json')
presetsValueKey / presetsLabelKey / presetsColorKey / presetsIconKey / presetsImageKeyerkanntFeldnamen im JSON
presetSelectfalseAuswahlliste (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.

FeldStandard
presets[] u. a.—Werte, Texte, Farben, Icons/Bilder und die JSON-Quelle wie bei den Tasten
selectShowSelecttrueAuswahlliste anzeigen; false zeigt nur den aktuellen Eintrag
selectShowValueohne Auswahllisteaktuellen Eintrag zusätzlich neben der Auswahlliste anzeigen
selectEntryDisplaytextDarstellung des aktuellen Eintrags: text · icon-text · icon
selectWidthautomatischfeste 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[].valueVergleichswert
states[].opVergleich; ohne Angabe Gleichheit. Mit >=, < … wird die Zeile zum Bereich — die erste passende gewinnt
states[].labelText statt des Werts
states[].colorFarbe der Pille
states[].rendertext (Standard) · icon · image · html
states[].icon / states[].image / states[].sizeIcon 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.

FeldStandard
contactPresethmipWertevorlage; custom schaltet die drei Wertelisten frei
contactValuesClosed / contactValuesTilted / contactValuesOpenVorlageeigene 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
contactLockValuestrue,1Werte, 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.

FeldStandard
inputPlaceholder—Platzhalter im leeren Feld
inputWidth110Feldbreite in px (Card-Layout der dynamischen Liste: volle Breite)
inputModetexttext · number
inputMin / inputMax—Wertebereich im Zahlmodus; geschrieben wird auf ihn begrenzt
inputStep1Schrittweite im Zahlmodus
inputMultilinefalseMehrzeiliges Textfeld (schaltet den Zahlmodus ab); Enter = Zeilenumbruch, Strg/Cmd+Enter sendet
inputHeight48Höhe des mehrzeiligen Felds in px
inputSubmitModesubmitsubmit (Enter / Feld verlassen / Senden-Button) · live (jeder Tastenschlag)
inputShowSubmittrueSenden-Button anzeigen (nur bei submit)
inputClearAfterSubmitfalseBefehlsfeld: nach dem Senden leeren, Datenpunkt-Wert nie anzeigen
confirm / confirmTextfalseSicherheitsabfrage vor dem Senden (nur bei submit)
inputTextAlignleftleft · center · right
inputReadOnlyfalseSchreibschutz — Wert wird angezeigt, aber nicht geschrieben
inputShowUnitfalseEinheit 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.

FeldStandard
timeFormattimerelative (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.

FeldStandard
dateInputFormatpickerpicker (Datums-/Zeitwähler) · custom (Feld laut dateInputPattern)
dateInputPatternwie dateOutputPatternMuster bei dateInputFormat: custom, z. B. MM.yyyy
dateTimeOnlyfalsenur Uhrzeit, ohne Datum
dateShowTimefalsezusätzliches Uhrzeit-Feld zum Datum
dateOutputFormattimestamp_mstimestamp_ms · timestamp_s · iso · date · datetime_local · de_date · de_datetime · time_hhmm · time_hhmmss · custom
dateOutputPatterndd.MM.yyyyMuster 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.

FeldStandard
id—Datenpunkt-ID
sourcevaluevalue · lastChange · lastUpdate — Zeitstempel statt Wert
alignleftleft · center · right
label—Text vor dem Wert; leer = nur Wert
icon—Lucide-Icon / Iconify-ID vor dem Text
unitaus dem ObjektEinheit hinter dem Wert (entfällt bei Zeit-Formatierung)
decimals / numberFormatglobalDezimalstellen und Tausendertrennung
fontSize9px
color--text-secondaryTextfarbe
valueTransform / valueFactor / valueOffset / valueTimeFormat / valueTimePatternListeeigene 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
sourcelastChange = letzte Wertänderung (lc) · lastUpdate = letzter Schreibvorgang (ts)
id leerDatenpunkt der Zeile — kein zweiter DP nötig
valueTimeFormatStandard 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:

OrtGilt 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
targetrow (Standard) · name · value · icon — worauf die Regel wirkt
clauses / logicwie bei den Widget-Bedingungen, inkl. Vergleich gegen einen zweiten Datenpunkt
color · bg · iconColorTextfarbe · Zeilenhintergrund (nur row) · Icon-Farbe
iconanderes Icon, solange die Regel greift
iconSizeIcon-Größe in px, solange die Regel greift; leer lässt die eingestellte Größe
fontSizeTextgröße in px, solange die Regel greift; leer lässt die eingestellte Größe
textersetzt den angezeigten Text; die Einheit entfällt dabei
bold · italicSchriftschnitt
effectpulse · blink — lässt das Element pulsieren bzw. blinken
hideElement ausblenden
disableElement grau und nicht bedienbar (nur row · value)

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 ​

Schreibweisebedeutet
{dp} (leer)Wert der Zeile selbst
hm-rpc.0.Gerät.UNREACHgenau dieser Datenpunkt, in jeder Zeile derselbe
{{parent}}.UNREACHNachbar-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.

FeldStandard
valueTransform—Preset-Id, custom, expr oder none (schaltet die globale Umrechnung für diesen Eintrag ab)
valueExpr—Ausdruck bei expr, z. B. `dp.objektName * 0.4
valueFactor / valueOffset1 / 0Anzeige = 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
valueAutoUnit—Einheit automatisch anpassen (850 Wh, 1,25 kWh), siehe Wert-Anzeige; false schaltet die globale Einstellung für diesen Eintrag ab
valueAutoUnitDecimals—Nachkommastellen ab der größeren Einheit

Presets: Sekunden → Minuten/Stunden · ms → s · Wh → kWh · W → kW · Bytes → KB/MB/GB · 0..1 → % · °C → °F.

Ausdruck… (expr): dp ist der Wert des Eintrags. Grammatik und Filter wie bei den Bindings — + - * / %, ? :, round(), abs(), Filter | fixed(2), | round(1), | formatValue(2), | upper … JSON-Felder direkt: dp.feld, dp.liste[0].feld. Andere Datenpunkte liest der Ausdruck nicht.

BeispielErgebnis
`dp.objektName * 0.4fixed(2)`
`dp / 3600round(1)`
dp >= 80 ? "voll" : "lädt"Text je nach Wert
callback("geraeteStatus", dp)eigene Funktion aus Custom JS

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).

Eigene Funktionen ​

Logik, die über einen Ausdruck hinausgeht, kommt als Funktion in Custom JS und wird per callback() aufgerufen:

js
aura.registerFn('geraeteStatus', (dp) => {
    const data = typeof dp === 'string' ? JSON.parse(dp) : dp;
    if (data.error === true) return 'FEHLER';
    if (data.veState !== 'running') return 'AUS';
    return Number(data.leistung) > 1000 ? 'HOCH' : 'AKTIV';
});
AusdruckErgebnis
callback("geraeteStatus", dp)Rückgabewert der Funktion
callback("f", dp.feld, 2)weitere Argumente werden durchgereicht
`callback("f", dp) * 2fixed(1)`
FallAnzeige
Funktion (noch) nicht angemeldetkein Wert; erscheint, sobald Custom JS sie anmeldet
Funktion wirft einen Fehlerkein Wert, Warnung in der Browser-Konsole
async-Funktion / Promisenicht unterstützt — kein Wert, Warnung

Aufrufbar ist nur, was mit registerFn angemeldet wurde — keine anderen globalen Funktionen. callback() gibt es nur in der Wert-Umrechnung der Listen, nicht in Bindings oder im HTML-Widget. Im Editor wirkt es nur, wenn in Custom JS Auch im Dashboard-Editor ausführen an ist.

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ägeDatenpunkte 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 ZeileDetail-Popup beim Klick auf eine Zeile (siehe unten)
NamenNamensmuster 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.

Verlauf jedes Datenpunkts als Diagramm: Anleitung Verlauf per Klick auf eine Listenzeile.

OptionStandard
rowClickActionAusauto · { "kind": "none" } (aus) · vollständige Klick-Aktion
rowPopupTitleZeilennameTitel des Popups
rowPopupWidth / rowPopupHeightautopx
rowPopupAutoCloseSecView/GlobalSekunden, 0 = aus
rowPopupAutoCloseCountdownView/GlobalEcke des Countdowns: top-left · top-right · bottom-left · bottom-right · off

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:

RolleTypPopup
switch.light · level.color.*LichtListe: Licht — erkennt Helligkeit, Farbe und Lichtwärme im Kanal der Lampe
level.dimmer · level.* · *dimmer* · *brightness*DimmerListe: Dimmer
switch · switch.* · indicator.* · button · media.* (außer media.volume)SchalterListe: Schalter
level.blind · *shutter* · *cover* · *awning*RollladenListe: Rollladen
level.temperature · heating*ThermostatListe: Thermostat
sensor.window · sensor.doorFensterkontaktListe: Fensterkontakt
sensor.* · *presence* · *smoke* · alarmSensorListe: Sensor
value.* · ZahlWertListe: Wert
sonst—Standard: Datenpunkt (Wert, Steuerung, ID, letzte Änderung)

Reihenfolge: Auswahl unter Admin › Popups › Listenzeilen → Widget-Typ-Standard des Typs → Liste: … → Standard: Datenpunkt. Die Liste: …-Popups stehen unter Admin › Popups und lassen sich dort anpassen, löschen und wiederherstellen; sie gelten nur für Listenzeilen, nicht für Widgets.

Pro Datenpunkt lässt sich das im Detail-Editor überschreiben (entries[].clickAction):

Modus
Wie ListeÜbernimmt die Listen-Einstellung — der Normalfall
AutomatischErzwingt die Ableitung aus der Rolle, auch wenn die Liste auf Aus oder eine eigene Aktion steht
AusDiese Zeile reagiert nicht auf Klicks
Eigene AktionVollstä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:

FeldStandard
entries[].popupTitleListen-Titel, sonst ZeilennameÜberschrift des Popups nur für diese Zeile
entries[].popupHideTitlewie Listetrue = 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:

FeldStandard
divider—true kennzeichnet die Zeile als Trennlinie (die id ist dann synthetisch, z. B. divider:1)
dividerLabel—Überschrift; leer = nur Linie
dividerAlignleftleft · center · right
dividerFontSize10px
dividerColor--text-secondaryTextfarbe
dividerLinetruefalse = nur Überschrift, ohne Linie

Verhalten:

Sortierungwirkt innerhalb eines Abschnitts — die Abschnitte selbst bleiben stehen
Wert-Filter / Suchebleibt von einem Abschnitt keine Zeile übrig, entfällt seine Trennlinie
Positioneine Linie ohne Überschrift ganz oben sowie eine Trennlinie ohne Zeilen dahinter werden unterdrückt
Zählung, Summe, Gruppen-Aktionignorieren 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.

Platzhalterergibt
<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
{{dpname}}common.name des Datenpunkts
{{parentname}} · {{parent2name}} …common.name von {{parent}} · {{parent2}} …, z. B. Kanal- bzw. Gerätename
[[id]]Wert dieses Datenpunkts, live

Steht der Anzeigename in einem eigenen Datenpunkt, kombiniert man beides:

MusterErgebnis
[[{{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
{{parent2name}} – {{dpname}}Gerätename und Datenpunktname aus den Objekten

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.

OptionStandard
namePattern—Namensmuster
nameFilters—Regelliste für die Platzhalter-Texte

Anzeige ​

OptionStandard
showTitletrueTitel anzeigen
showIcontrueIcon anzeigen
iconListLucide-Icon
iconSize20px
titleAlignleftleft · center · right
showCounttrueAnzahl hinter dem Titel
showIdfalseDatenpunkt-ID unter dem Label (nur default)
showRoomfalsezugeordnete Räume unter dem Label (nur default)
showDividerstrueTrennlinien zwischen Einträgen
rowDensitynormalZeilenabstand: compact · normal · comfortable (nur default/compact)
wrapTextfalselange Labels/Werte umbrechen statt abschneiden
labelMinPercent50min. Breite des Labels in % (nur bei wrapText)

Werte & Farben ​

OptionStandard
trueText / falseText—globale AN/AUS-Texte (Eintrag überschreibt)
activeColor--accent-greenTextfarbe bei AN
inactiveColor--text-secondaryTextfarbe 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.

OptionStandard
valueFilterallall · active · inactive · ID eines eigenen Filters
filterActiveLabelNur aktiveChip-Text
filterInactiveLabelNur inaktiveChip-Text
hideBuiltinFiltersfalseNur aktive/Nur inaktive aus dem Menü nehmen
hideFilterSearchfalseFreitextfeld im Menü ausblenden
filterSearchPlaceholderSuchen …Platzhalter des Freitextfelds
hideFilterButtonfalseFilter-Chip ausblenden
backendValueFilterallVorschau-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ü
logicANDAND (alle Regeln) · OR (eine genügt)
rules[]—siehe unten
rules[]Standard
sourcemainmain · 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)
everyfalsebei 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
sourcevaluevalue (Wert) · name (angezeigter Zeilenname) · sub (Datenpunkt der 2. Zeile)
subKey—bei sub: Bezeichnung oder DP-Endung (BATTERY); leer = erster weiterer DP der Zeile
orderascasc · desc
modeautoauto · number · text · active · lastChange · lastUpdate
emptylastlast · first — wohin Zeilen ohne Wert kommen
mode
autoZahlen numerisch, Text alphabetisch (Zahlen darin numerisch)
numberText wird zur Zahl; was keine ist, gilt als ohne Wert
textrein alphabetisch — 10 steht damit vor 9
activeaktive (an / > 0) zuerst, desc dreht es
lastChangenicht der Wert, sondern wann er sich zuletzt geändert hat (lc)
lastUpdatewann 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.

OptionStandard
showSumfalseSummenzeile anzeigen
sumLabelΣPrefix der Summenzeile
sumAlignleftleft · center · right
sumFontSize10px

Sammelschalter ​

Master-Steuerung im Header für alle Einträge.

OptionStandard
groupSwitchfalseSammelschalter anzeigen
groupActionTypeswitchswitch · dimmer · shutter · momentary
groupSwitchStyleslideslide · checkbox (nur switch)
groupMixedActiononKlick aus Mittelstellung: on alle an · off alle aus · ask im Frontend fragen (nur switch)
groupDimmerOnValue100Schreibwert bei „alle an" (Dimmer)
groupExcludeIds—von der Gruppenaktion ausgenommene Einträge

Inhalt veröffentlichen ​

Der Adapter berechnet die Werte selbst, auch ohne geöffneten Browser. Die Freitextsuche und maxRows wirken dabei nicht.

OptionStandard
publishCountfalseInhalt nach aura.0.lists.<id>.* schreiben
publishFilter= valueFilterwelche Zeilen zählen: all · active · inactive · id eines eigenen Filters
DatenpunktInhalt
aura.0.lists.<id>.countAnzahl der Zeilen
aura.0.lists.<id>.itemsZeilen als JSON-Array
aura.0.lists.<id>.textZeilen als Text „Raum: Name (Wert)“, eine pro Zeile
aura.0.lists.<id>.tsletzte inhaltliche Änderung (ms)
Feld in items
id, name, roomDatenpunkt, angezeigter Name, Raum
val, text, unitRohwert, lesbarer Wert, Einheit
lcletzte Änderung des Werts (ms)
js
// javascript-Adapter: jeden Abend um 22 Uhr
schedule('0 22 * * *', () => {
    const n = getState('aura.0.lists.<id>.count').val;
    if (!n) return;
    const text = getState('aura.0.lists.<id>.text').val;
    sendTo('email.0', { subject: `${n} Fenster offen`, text });
    sendTo('telegram.0', { text: `${n} Fenster offen\n${text}` });
});