Bei Adapter-Störung Benachrichtigung per E-Mail oder Telegram

In diesem Artikel zeige ich Dir, wie Du Dir bei einer Störung eines Adapters eine Benachrichtigung senden kannst. 

Gerade in meiner Anfangszeit von ioBroker haben sich manchmal Adapter verabschiedet. Diese Abstürze waren häufig auf Fehlkonfigurationen zurückzuführen. Eigentlich nichts schlimmes, da sich der Adapter dann automatisch wieder neu startet. Um den Problemen auf den Grund zu gehen und eben gleich über eine solche Störung informiert zu werden, habe ich mir ein Skript erstellt, welches den Zustand aller Adapter überwacht und bei einer Änderung auf „inaktiv“ eine Benachrichtigung versendet. Hier können im Skript auch Adapter definiert werden, welche nicht überwacht werden sollen, da dieses sich regelmäßig standardmäßig neu starten.

 

Im folgenden Skript habe ich eine solche Überwachung implementiert:

function createNotification(NotificationText) {
sendTo("telegram", "send", { text: NotificationText });
}

on({id: /^system\.adapter\..+\.alive$/, change: 'ne', val: false}, 
function(dp) {
var id = dp.id.split('.');
id = 'system.adapter.' + id[2] + '.' + id[3];
var instance = getObject(id);
var ignoreList= ["dwd.0.alive","yr.0.alive","ical.0.alive"];

if ( !ignoreList.includes(dp.common.name)) {
if(instance.common.enabled) {
createNotification(dp.common.name);
}
}});

Über das Array ignoreList können Adapter definiert werden, welche ignoriert werden sollen. Das Skript überwacht die Datenpunkte der Adapter alive Zustände und versendet dann eine Benachrichtigung per Telegram, wenn der Adapter nicht ignoriert wird.

Alternativ zur Benachrichtigung via Telegram können natürlich auch E-Mails versendet werden. Hierfür muss einfach die Funktion CreateNotification auf den E-Mail Versand umgeschrieben werden. Hier der entsprechende Artikel zum Thema E-Mails:  E-Mails mit ioBroker versenden

 

Ich hoffe euch gefällt dieser Artikel. Über Kommentare unterhalb des Artikels oder per E-Mail freue ich mich wie immer 🙂

Matthias Korte

Hauptberuflich Software-Entwickler und seit einigen Jahren Smart-Home Fan. Angefangen hat alles mit einem RaspberryMatic und einer schaltbaren Steckdose. Mittlerweile habe ich einige Steckdosen, Sensoren, und Thermostate sowie ioBroker zur Visualisierung im Einsatz.

8 Gedanken zu „Bei Adapter-Störung Benachrichtigung per E-Mail oder Telegram

  • 26. September 2018 um 16:10
    Permalink

    Ich würde so formatieren:

    function createNotification(notificationText) {
    	sendTo("telegram", "send", {text: notificationText});
    }
     
    on({id: /^system\.adapter\..+\.alive$/, change: 'ne', val: false}, function (dp) {
    	var id = dp.id.split('.');
    	id = 'system.adapter.' + id[2] + '.' + id[3];
    	var instance = getObject(id);
    	var ignoreList= ["dwd.0.alive", "yr.0.alive", "ical.0.alive"];
    	 
    	if (!ignoreList.includes(dp.common.name) && instance.common.enabled) {
    		createNotification(dp.common.name);
    	}
    });
    

    Bei JS, falls die Funktion mit UpperCase anfängt, dann heißt es, dass es eine Klasse ist (Namingconvention).

    Antwort
    • 27. September 2018 um 7:48
      Permalink

      Danke für den Hinweis, hatte ich übersehen. Ist berichtigt 🙂

      Antwort
  • 14. Oktober 2018 um 19:44
    Permalink

    Hallo Mathias,

    ich denke, dass ein kleiner Fehler vorhanden ist.
    Die ignoreliste funktioniert nur bei mir, wenn z.Bsp. der String wie folgt lautet
    ical.0 alive
    In Deinem Beispiel steht es mit „punkt“ ical.0.alive

    Antwort
  • 24. November 2018 um 14:01
    Permalink

    Ich nutze den text2command Adapter und wenn man in diesem etwas pflegt, wird bei jeder Änderung das alive kurz auf false/true gesetzt. Das führt zu unzähligen unnötigen Emails. Leider funktioniert kein Syntax für die Ignorlist bei diesem Adapter. Bei anderen Adaptern die per Cron neugestartet werden, funktioniert die Ignorlist.

    So sieht meine Variable aktuell aus:
    var ignoreList= [„text2command.0 alive“, „text2command.0.alive“, „yeelight-2.0.alive“, „mihome.0.alive“, „ical.0.alive“];

    Irgend eine Idee warum das mit text2command nicht funktioniert?

    Antwort
    • 26. November 2018 um 7:10
      Permalink

      Moin,
      geb Dir doch mal im Script den Adapternamen aus. Dann siehst Du wie der geschrieben wird und Du kannst das Script entsprechend anpassen.

      Antwort
      • 29. November 2018 um 22:02
        Permalink

        Der Name vom gestörten Adapter wird mir doch per Email/Telegram gesendet. Das ist doch genau die Schreibweise oder nicht?
        Imho heißt der vom Skript geprüfte Datenpunkt:
        text2command.0.alive
        Als Inhalt der Meldung steht statt dem Punkt vor alive ein Leerzeichen.
        text2command.0 alive

        Beide Schreibweisen sind in der Ignorliste. Gleiches hat bei dem yeelight und mihome Adapter ja auch funktioniert.
        Wie lasse ich mir denn den Namen ausgeben der noch anders zu sein scheint?

        Antwort
        • 29. November 2018 um 22:47
          Permalink

          Habe nun noch mal direkt das was in der Meldung steht „text2command.0 alive“ auf die Ignorliste und nun scheint es zu funktionieren. Merkwürdig, aber entspricht dem was Mario weiter oben geschrieben hat.

          btw: Danke für das Skript!

          Antwort
          • 4. Dezember 2018 um 19:03
            Permalink

            Danke für die Info! 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

* Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend.

Ich akzeptiere