Skip to content

Meldungen

Informationen, Warnungen und Fehler aus Skripten ins Dashboard einblenden. Eine Meldung erscheint als Einblendung (Toast), landet im Verlauf und kann eine Bestätigung verlangen.

Der Verlauf lässt sich mit dem Meldungen-Widget auf jedem Tab anzeigen.

Meldung senden

Datenpunkt
aura.0.messages.sendAlle Geräte
aura.0.clients.<clientId>.messages.sendNur dieses Gerät
aura.0.layouts.<layout-slug>.messages.sendNur dieses Layout

Die <clientId> steht in Einstellungen → Verbundene Geräte und lässt sich dort fest vergeben (siehe Client-ID).

Der Datenpunkt wird nach der Verarbeitung automatisch geleert. Ein Text ohne führende { wird zur Info-Meldung:

js
setState('aura.0.messages.send', 'Waschmaschine fertig');

Alles Weitere als JSON:

js
setState('aura.0.messages.send', JSON.stringify({
    severity: 'warning',
    title: 'Waschmaschine',
    text: 'Programm fertig',
    durationSec: 20,
}));

sendTo

Aus einem JavaScript-Skript geht es auch ohne Datenpunkt. Der Aufruf antwortet mit der vergebenen ID — damit lässt sich dieselbe Meldung später bestätigen oder schließen.

js
sendTo('aura.0', 'notify', {
    severity: 'warning',
    title: 'Waschmaschine',
    text: 'Programm fertig',
}, (res) => {
    log(`Meldung ${res.id}`);        // { ok: true, id, ts }
});
BefehlNutzlastAntwort
notify (alias message)Objekt oder Klartext{ ok, id, ts } — bei Fehler { ok: false, error }
notifyAckID als String oder { id }{ ok, id }
notifyDismissID als String oder { id }{ ok, id }

sendTo schickt immer an alle Geräte — ein target im Payload schränkt das wie gewohnt ein.

Baukasten im Admin

Admin → Meldungen hat ein Formular, das dieses JSON live erzeugt — inklusive fertiger setState- und sendTo-Zeilen zum Kopieren und einem „Test senden"-Button. Darunter listet Datenpunkte & sendTo alle Ein- und Ausgänge.

JSON-Format

Alle Felder sind optional. Was fehlt, kommt aus den Standardwerten.

Inhalt

FeldTyp
severityinfo · success · warning · errorStandard info; bestimmt Farbe, Icon und Anzeigedauer
titlestringÜberschrift; HTML erlaubt
textstringTextkörper, mehrzeilig; HTML erlaubt; [[dp.id]] wird live durch den Wert ersetzt (Meldungen aus Bedingungen frieren den Wert beim Auslösen ein)
htmlstringGleichbedeutend mit text, hat Vorrang. Bleibt für ältere Skripte erhalten
imagestringBild-URL; Adapter-Dateien über /webfs/…
iconstringLucide- oder Iconify-ID, überschreibt das Severity-Icon
viewstringName oder ID einer Popup-View als Inhalt — damit sind Widgets in der Meldung möglich
dpdatapoint{{dp}}-Kontext für diese View

Mindestens eines von title, text, html, image oder view muss gesetzt sein — sonst wird die Meldung verworfen.

Anzeige

FeldTyp
positionsiehe Positionenwo die Meldung erscheint
durationSecnumberSekunden bis zum automatischen Schließen; 0 = bleibt offen
requireAckbooleankein Auto-Schließen, kein Klick daneben — nur der Bestätigen-Button schließt
priority0100höher drängt sich an wartenden Meldungen derselben Position vorbei
widthnumber (px)Breite der Karte; Standard 340
heightnumber (px)Feste Höhe — die Karte wächst darauf an; ohne Angabe passt sie sich dem Inhalt an
transparency095Prozent; 0 = deckend
showTimebooleanSendezeit klein unter dem Inhalt; false schaltet den Standardwert für diese Meldung ab
timeFormattime · datetimetime = nur Uhrzeit (Standard), datetime = Datum + Uhrzeit

Darstellung

FeldTyp
appearancebar · filled · outline · plainwo die Farbe sitzt (siehe unten)
colorCSS-Farbeersetzt die Farbe des Schweregrads
backgroundCSS-Farbeeigener Kartenhintergrund; hat Vorrang vor appearance
textColorCSS-Farbeeigene Textfarbe; leer = automatisch
alignleft · center · rightTextausrichtung
appearance
barFarbiger Streifen an der linken Kante (Standard)
filledDie ganze Karte in der Farbe — Text und Icon werden weiß
outlineFarbiger Rahmen rundum
plainOhne Farbe, nur Icon und Text

Auf gefülltem Grund schaltet Aura Text, Icon, Buttons und Countdown automatisch auf Weiß. textColor überschreibt das.

Passt der Inhalt nicht in die angegebene Höhe, scrollt der Text innerhalb der Karte — Icon, Schließen-Button und Countdown bleiben stehen. Ohne height wächst die Karte mit dem Inhalt, höchstens bis 85 % der Bildschirmhöhe.

Verhalten

FeldTyp
idstringwiederverwendbare ID: dieselbe ID ersetzt die vorherige Meldung, statt eine zweite zu stapeln
persistbooleanfalse = nur anzeigen, nicht in den Verlauf aufnehmen
ackDpdatapointwird bei Bestätigung geschrieben
ackValuestringWert dafür; leer = true
actionsArrayButtons, siehe unten
targetObjektEmpfänger, siehe unten

Aktions-Buttons

json
"actions": [
  { "label": "Trockner an", "dp": "javascript.0.trockner", "value": "true" },
  { "label": "Später", "dp": "javascript.0.snooze", "value": "600", "close": false }
]
Feld
labelBeschriftung; Pflicht
dpDatenpunkt, der beschrieben wird; Pflicht
valuegeschriebener Wert, als bool/number/string interpretiert; leer = true
closefalse = Meldung bleibt nach dem Klick stehen; Standard true

Maximal sechs Buttons. Ein Klick gilt als Antwort und bestätigt die Meldung.

Empfänger

json
"target": { "clients": ["a1b2c3"], "layout": "haus", "tab": "kueche" }
Feld
clientsListe von Client-IDs; leer = alle Geräte
layoutSlug, ID oder Name eines Layouts
tabSlug, ID oder Name eines Tabs

Wird auf einen Client- oder Layout-Datenpunkt geschrieben, ist der Empfänger schon dadurch festgelegt — ein target im JSON hat dann Vorrang.

HTML in Titel und Text

Beide Felder werden als HTML gerendert und vorher bereinigt: <b>, <i>, <br>, <ul>, <table>, <span style=…> und <img> bleiben, <script> und Handler wie onclick werden entfernt.

js
setState('aura.0.messages.send', JSON.stringify({
    title: 'Temperaturen <b>Erdgeschoss</b>',
    text: '<table>'
        + '<tr><th>Raum</th><th>Ist</th></tr>'
        + '<tr><td>Bad</td><td>[[alias.0.Bad.TIST]] °C</td></tr>'
        + '<tr><td>Küche</td><td>[[alias.0.Kueche.TIST]] °C</td></tr>'
        + '</table>',
    width: 420,
}));

Tabellen, Listen und Trennlinien bekommen im Meldungs-Layout eigene Abstände und Rahmen — eine breite Tabelle scrollt innerhalb der Karte, statt sie auseinanderzuziehen.

Spitze Klammern im Klartext

Weil der Text als HTML gelesen wird, verschwindet ein Wort in spitzen Klammern: aus Wert <sensor> defekt wird Wert defekt. Vergleiche wie Temperatur < 5 bleiben erhalten — ein < beginnt nur dann ein Tag, wenn direkt ein Buchstabe folgt. Im Zweifel &lt; schreiben.

In den Listenansichten (Meldungen-Widget, Glocke, Verlauf) wird das Markup entfernt und nur der lesbare Text gezeigt; formatiert erscheint es in der Einblendung und der Detailansicht.

Positionen

linksmitterechts
obentop-lefttop-centertop-right
mittecenter-leftcentercenter-right
untenbottom-leftbottom-centerbottom-right

Jede Position ist ein eigener Stapel. Sind mehr Meldungen offen als „Gleichzeitig sichtbar" erlaubt, warten die übrigen: Meldungen mit Bestätigungspflicht behalten ihren Platz, danach entscheidet priority, dann das Alter. Eine wartende Meldung erscheint mit voller Anzeigedauer, sobald ein Platz frei wird.

Standardwerte

Admin → Meldungen → Standardwerte. Gelten für jede Meldung, die das Feld nicht selbst mitschickt. Änderungen werden wie überall im Admin erst mit Speichern übernommen — Rückgängig stellt die gespeicherten Werte wieder her.

OptionStandard
Positiontop-right
Darstellungbarbar · filled · outline · plain
Textausrichtungleft
Gleichzeitig sichtbar3pro Position
Breite00 = automatisch (340 px)
Transparenz0 %
Zeitpunktnicht anzeigenUhrzeit oder Datum + Uhrzeit — gilt für jede Meldung, showTime im Payload überschreibt es
Anzeigedauer Info / Erfolg8 s
Anzeigedauer Warnung15 s
Anzeigedauer Fehler0bleibt offen
Fehler immer bestätigen lassenauserzwingt requireAck für alle Fehler
Nach Neuladen erneut anzeigenFehlerSchweregrade, die einen Reload überleben — siehe unten

Größe und Aufbewahrung des Archivs stehen in den Instanz-Einstellungen des Adapters:

OptionStandard
Gespeicherte Meldungen100ältere fallen aus dem Verlauf
Aufbewahrung30 Tage0 = unbegrenzt

Nach Neuladen erneut anzeigen

Ein Tablet, das sich alle paar Stunden oder nach einem Verbindungsabbruch selbst neu lädt, verlor bisher jede offene Einblendung. Die ausgewählten Schweregrade kommen nach dem Neuladen zurück, solange die Meldung im Verlauf weder bestätigt noch geschlossen ist.

Kommt zurückMeldung ist im Verlauf, Schweregrad ausgewählt (oder requireAck), niemand hat sie bestätigt oder geschlossen
Kommt nicht zurückpersist: false, bestätigt (ack), geschlossen (dismiss oder Schließen-Button), Verlauf geleert
Ohne Wirkungautomatisches Ausblenden nach Ablauf der Anzeigedauer — die Meldung erscheint beim nächsten Neuladen wieder

Für diese Meldungen schließt der Schließen-Button (×) auf allen Geräten, nicht nur auf dem eigenen — sonst wäre sie nach dem nächsten Reload wieder da. Bestätigen über die Glocke, das Widget Meldungen oder aura.0.messages.ack wirkt genauso.

Verlauf und Bestätigung

Datenpunkt
aura.0.messages.historyJSON-Array, neueste zuerst
aura.0.messages.lastMessagezuletzt erzeugte Meldung
aura.0.messages.unreadCountAnzahl unbestätigter Meldungen
aura.0.messages.ackID schreiben = bestätigen; * = alle
aura.0.messages.dismissID schreiben = auf allen Geräten schließen; * = alle
aura.0.messages.clearButton; leert den Verlauf

Dieselben drei Kommandos gibt es als sendTo — siehe oben.

Gelesen/ungelesen gilt geräteübergreifend: eine auf dem Tablet bestätigte Meldung ist überall bestätigt. dismiss schließt die Einblendung nur, der Eintrag bleibt unbestätigt im Verlauf.

unreadCount eignet sich direkt als Datenpunkt für ein Badge vom Typ „Anzahl".

Glocke im Header

Admin → Frontend-Design → Header → Meldungs-Glocke im Header. Zeigt die Anzahl unbestätigter Meldungen; ein Klick öffnet die letzten Einträge. Pro Layout überschreibbar wie die übrigen Header-Optionen.

Hinweis auf neue Adapter-Versionen

Der Adapter vergleicht die installierte Version mit dem Repository, das im ioBroker-Admin aktiviert ist (stable, beta oder beides) — 30 Sekunden nach dem Start und danach jede Stunde. Kein eigener Datenpunkt, kein externer Abruf.

Anzeige
Admin-SeitenleisteNeben der Versionsnummer erscheint ↑ <version>; ein Klick öffnet die Release-Notes. Immer aktiv.
FrontendMeldung über Toast, Glocke und Verlauf. Standardmäßig aus.

Die Frontend-Meldung wird in der Instanzkonfiguration im ioBroker-Admin eingeschaltet: Update-Hinweis → Neue Adapter-Versionen im Frontend melden. Sie erscheint einmal pro Version — auch ein Adapter-Neustart wiederholt sie nicht — und wird durch den Hinweis auf die nächste Version ersetzt.

OptionWirkung
Neue Adapter-Versionen im Frontend meldenSchaltet die Meldung ein. Standard: aus.
Update-Hinweis muss bestätigt werdenDer Toast bleibt stehen, bis jemand Bestätigen drückt, und kommt nach einem Neuladen zurück. Ausgeschaltet blendet er sich nach der Info-Dauer aus. Standard: an.

Eine Vorabversion wird nie auf ein älteres Stable „aktualisiert": verglichen wird nach Semver, 0.55.0-beta.1 gilt als neuer als 0.54.2.

Meldung aus einer Bedingung

Jede Bedingung kann eine Meldung auslösen — ohne Skript. Meldung senden einschalten, der Baukasten öffnet sich im Dialog. Es gibt drei Stellen:

OrtWirkung
Widget bearbeiten → BedingungenRegel über das ganze Widget
Liste → Datenpunkte verwaltenBedingungenRegel über alle Zeilen — je Zeile eine Meldung
Liste → Datenpunkte verwalten → Datenpunkt → BedingungenRegel nur für diese Zeile

Ausgelöst wird die Flanke: eine Zustands-Regel sendet einmal, sobald sie zutrifft. Nur eine Bedingung mit dem Operator hat sich geändert sendet bei jeder Wertänderung.

Auslösende Zeile in der Meldung

Eine Zeilen-Bedingung wird je Zeile ausgewertet und sendet deshalb eine Meldung je auslösender Zeile. Auf Widget-Ebene gilt dasselbe, sobald als Wertquelle ein Eintrag der Liste ({list:any}) gewählt ist.

In allen Textfeldern der Meldung stehen dafür die Datenpunkt-Platzhalter der Zeile:

PlatzhalterErgebnis bei hm-rpc.0.Melder1.MOTION
{{dp}}hm-rpc.0.Melder1.MOTION
{{parent}}hm-rpc.0.Melder1
{{parent2}}, {{parent3}}, …je eine Ebene höher — für einen anderen Kanal desselben Geräts
{{name}}MOTION
Titel:  Bewegung: [[{{parent}}.NAME]]
Text:   Ausgelöst um [[{{parent}}.LAST_TRIGGER]]

Die doppelten eckigen Klammern zeigen den Wert des Datenpunkts — {{…}} baut nur die ID zusammen. {{…}} gilt auch für Bild, Icon, Popup-View, Bestätigungs-Datenpunkt und die Schaltflächen.

Der Wert wird beim Auslösen eingefroren: die Meldung hält fest, was der Datenpunkt in diesem Moment gemeldet hat, und ändert sich im Archiv nicht mehr mit. Eingefroren werden Titel, Text, HTML, Bild, Icon und die Beschriftung der Schaltflächen — Datenpunkt-Felder bleiben Referenzen. Ist ein Datenpunkt beim Senden nicht lesbar, bleibt der Platzhalter stehen und wird bei der Anzeige live gelesen (so wie bei einer Meldung aus einem Skript).

Eine feste ID wird je Zeile eindeutig gemacht (meldermelder:hm-rpc.0.Melder1.MOTION), damit sich zwei Melder nicht gegenseitig überschreiben.

Gesendet wird auf der Flanke: eine Zeile meldet einmal, sobald sie zutrifft, und erst wieder, nachdem sie zwischendurch nicht mehr zutraf. Beim Laden der Seite meldet nichts — der Zustand, in dem die Seite startet, ist kein Ereignis.

Regeln über die ganze Liste (alle Einträge, kein Eintrag, Anzahl, Summe …) senden weiterhin eine einzelne Meldung; dort gibt es keine auslösende Zeile. Bei einer Widget-Bedingung ohne Listenquelle beziehen sich die Platzhalter auf den Datenpunkt des Widgets.

Beispiele

Warnung, die sich nach 20 Sekunden schließt:

js
setState('aura.0.messages.send', JSON.stringify({
    severity: 'warning',
    title: 'Waschmaschine',
    text: 'Programm fertig',
    durationSec: 20,
    position: 'bottom-right',
}));

Fehler, der bestätigt werden muss und die Bestätigung meldet:

js
setState('aura.0.messages.send', JSON.stringify({
    severity: 'error',
    title: 'Heizung',
    text: 'Kein Kontakt zum Thermostat',
    requireAck: true,
    ackDp: 'javascript.0.heizung.gemeldet',
}));

Wiederverwendbare ID — der zweite Aufruf ersetzt die erste Meldung, statt zu stapeln:

js
setState('aura.0.messages.send', JSON.stringify({ id: 'wm', title: 'Waschmaschine', text: 'läuft' }));
setState('aura.0.messages.send', JSON.stringify({ id: 'wm', title: 'Waschmaschine', text: 'fertig' }));

Rückfrage mit Buttons, nur auf dem Küchen-Tablet:

js
setState('aura.0.clients.a1b2c3.messages.send', JSON.stringify({
    severity: 'info',
    title: 'Waschmaschine fertig',
    text: 'Trockner starten?',
    requireAck: true,
    actions: [
        { label: 'Ja', dp: 'javascript.0.trockner', value: 'true' },
        { label: 'Nein', dp: 'javascript.0.trockner', value: 'false' },
    ],
}));

Ganz rote Fehlermeldung, mittig ausgerichtet:

js
setState('aura.0.messages.send', JSON.stringify({
    severity: 'error',
    title: 'Alarm',
    text: 'Bewegung im Keller',
    appearance: 'filled',
    align: 'center',
    requireAck: true,
}));

Popup-View als Inhalt — die Meldung zeigt echte Widgets:

js
setState('aura.0.messages.send', JSON.stringify({
    title: 'Sonnenuntergang',
    view: 'Wetter-Details',
    durationSec: 300,
    width: 420,
}));