Notifications im ioBroker

Mit ** gekennzeichnete Links auf dieser Seite sind Affiliate-Links.

Suchergebnisse

Unterstützt seit js-controller 5.0.14

Um Nachrichten an den Host zu senden, stehen sog. Notifications zur Verfügung.

Konfiguration

Konfiguration in der io-package.json (common.notifications und common.supportedMessages.notifications)

Info: Generell sollte mit Notifications sparsam umgegangen werden! Es gibt kaum Gründe, warum diese zum Einsatz kommen sollten.

Struktur

  • scope - Ein existierender Scope aus einer Adapter-Konfiguration. z.B. system
  • category - Eine im Scope definierte Kategorie. z.B. securityIssues, noDiskSpace oder fsIoErrors
  • message - z.B. Hallo!
  • instance - z.B. system.adapter.trashschedule.0

Senden

Um eine neue Notification zu erstellen, wird im Adapter registerNotification genutzt. Hier wird als erstes der Scope, dann die Category die Nachricht übergeben.

await this.registerNotification('system', 'securityIssues', 'Das ist ziemlich unsicher konfiguriert!');

Oder alternativ mit sendToHostAsync (nicht empfohlen!):

await this.sendToHostAsync(
    `system.host.${this.host}`,
    'addNotification',
    {
        scope: 'system',
        category: 'noDiskSpace',
        message: 'Festplatte bald voll',
        instance: `system.adapter.${this.namespace}`,
    }
);
Info: Der "Primärschlüssel" je Scope und Category ist die Instance. Das heißt, dass je Kategorie nur ein Eintrag einer Instanz vorhanden sein kann!

Empfangen

Vorhandene Notifications werden nicht über States ausgeliefert, sondern beim Host abgefragt. Genau das macht auch der Admin-Adapter, um die Meldungen im Frontend anzuzeigen. Optional kann dabei auf einen scope und eine category gefiltert werden.

const result = await this.sendToHostAsync(
    `system.host.${this.host}`,
    'getNotifications',
    { scope: 'system' }
);

Wurden die Meldungen verarbeitet (bzw. vom Nutzer bestätigt), können diese wieder gelöscht werden:

await this.sendToHostAsync(
    `system.host.${this.host}`,
    'clearNotifications',
    { scope: 'system', category: 'securityIssues' }
);
Info: In den allermeisten Fällen muss ein Adapter Notifications gar nicht selbst auslesen - das übernimmt der Admin-Adapter. Relevant ist das nur für Adapter, welche Meldungen weiterleiten (z.B. per Telegram oder E-Mail).

Technische Details

Die Notifications werden im Objekt system.host.<host>.notifications.<scope> abgelegt. Je Kategorie wird dabei gezählt, wieviele Notifications vorliegen. Beispiel:

{
    "securityIssues": {
        "count": 2
    },
    "fsIoErrors": {
        "count": 1
    }
}

Der Zustand (State) selbst, enthält dabei aber nur diese Informationen und nicht die Notification selbst. Diese werden im Dateisystem in der notifications.json abgelegt! So sind diese auch nach einem Neustart des Systems verfügbar und sind nicht von einer funktionierenden Objekt- oder State-Datenbank abhängig.

Beispiel-Inhalt der Datei:

{
    "news": {
        "info": {
            "system.adapter.awtrix-light.0": [
                {
                    "message": "Kurs-Empfehlung! \n Die besten ioBroker-Kurse gibt es auf haus-automatisierung.com",
                    "ts": 1698149101034
                }
            ]
        }
    },
    "system": {
        "noDiskSpace": {
            "system.adapter.awtrix-light.0": [
                {
                    "message": "Festplatte bald voll",
                    "ts": 1698149453306
                }
            ]
        }
    }
}
Filtern nach Tags

ioBroker-Tutorials

Alle Hardware Software Audio Backup Blockly Datenbanken Energiemessung Entwicklung Grundlagen Installation Integration LED Licht Logik Modbus NAS Photovoltaik Scripting Sicherheit Vergleich Visualisierung Wallbox Webservice
Abonniere jetzt den Newsletter für
spannende Neuigkeiten! interessante Angebote! neue Kurs-Inhalte!
* Durch Angabe meiner E-Mail-Adresse erkläre ich mich damit einverstanden, dass mir unregelmäßig Informationen und Produktempfehlungen aus dem Themengebiet »Smart Home« zugesendet werden. Mit dem Eintrag akzeptiere ich die Datenschutzbestimmungen. Meine Einwilligung kann ich jederzeit widerrufen.