NEWS

Bei Störung E-Mail versenden ?



  • ` > Postest Du noch, wie Du es geschafft hast?

    Dann haben alle was davon. `

    function alarmMail(txt) {
    sendTo('email', 'System Adapter meldet Probleme  '+(txt));
    }
    
    // Instanz wird inaktiv
    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);
       if(instance.common.enabled) alarmMail(dp.common.name);
    });
    

    zu dem script muss eigentlich nur noch der emailadapter eingerichtet werden… Funktioniert wunderbar, habe es mit mehreren Adaptern probiert...Der Script Ersteller hat ganze Arbeit geleistet..danke schön..



  • Hi, hätte gerne noch eine Statusanzeige in Vis, ganz simple eine objekt id auf true setzen wenn eine email bei störung versand wurde..

    Bei Status true soll das Widget aufpoppen und bei Betätigung des Widget den Status wieder auf false setzen und verschwinden…

    Kann man das so machen ? Funktioniert aufjedenfall schonmal wie ich es möchte.

     createState('Adapterüberwachung.Störung', {
        read: true, 
        write: false, 
        type: "boolean"
    });
    
    function alarmMail(txt) {
    sendTo('email', 'System Adapter meldet Probleme  '+(txt));
    setState('javascript.0.Adapterüberwachung.Störung', true );
    }
    
    // Instanz wird inaktiv
    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);
       if(instance.common.enabled) alarmMail(dp.common.name);
    });
    
    


  • on({id: /^system\.adapter\..+\.alive$/, change: 'ne',val: true}, function(dp) {
    	sendTo('telegram.0', 'iobroker - System Adapter laufen fehlerfrei');
    setState('javascript.0.Adapterüberwachung.iobroker.Störung', false );
    setState('javascript.0.Adapterüberwachung.iobroker.Text', 'ioBroker - System Adapter laufen fehlerfrei ');
    });
    

    Hi, mit oben gezeigtem Auszug wollte ich meine vis anzeige nach einem gemeldeten Fehler noch zurück setzen und ne Rückmeldung and telegram schicken..Funktioniert auch, nur bekomme ich die Rückmeldung, dass die Adapter nun fehlerfrei laufen öfters…Jemand ne idee was an dem Script auszug falsch sein könnte oder wie ich das unterbinden kann...eine Rückmeldung bis zum nächsten Statuswechsel reicht mir eigentlich...



  • @smartboart:

    'ioBroker - System Adapter laufen fehlerfrei '
    ```` `  
    

    Mit dieser Aussage würde ich vermuten, dass sie Auskunft geben soll, dass <u>alle</u> Instanzen laufen. Für diese Aussage braucht es aber eine UND-Verknüpfung des "alive" aller aktivierten Instanzen. Der Trigger liefert allerdings nur die Information, dass eine zuvor nicht laufende Instanz nun wieder läuft.



  • Hallo paul 53 danke für die Rückmeldung…Ja du hast recht, ich möchte natürlich die Störmeldung in Vis zurücksetzen, wenn alle aktiven Adapter wieder alive also fehlerfrei - grün sind...Habe schon ein paar Varianten durchgespielt, bekomme das aber nicht so zum laufen wie ich es mir vorstelle...

    Kann ich das irgendwie mit ner else Verknüpfung unter function alarmMail(txt) { lösen?

    Komme mit try and error nicht so recht weiter...und mit dem Scripten haperts noch etwas...



  • @smartboart:

    Habe schon ein paar Varianten durchgespielt, bekomme das aber nicht so zum laufen wie ich es mir vorstelle… `
    Wie wäre es mit einem Alarm-Zähler ?

    var cnt = 0;
    
    // Instanz wird inaktiv
    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);
       if(instance.common.enabled) {
          alarmMail(dp.common.name);
          cnt++;
       }   
    });
    
    on({id: /^system\.adapter\..+\.alive$/, change: 'ne',val: true}, function(dp) {
       cnt--;
       if(cnt <= 0) {
          sendTo('telegram.0', 'iobroker - System Adapter laufen fehlerfrei');
          setState('javascript.0.Adapterüberwachung.iobroker.Störung', false );
          setState('javascript.0.Adapterüberwachung.iobroker.Text', 'ioBroker - System Adapter laufen fehlerfrei ');
          cnt = 0; // falls cnt < 0 (verzählt)
       }   
    });
    


  • super Lösungsansatz, danke….habe das jetzt komplett so übernommen..also dein komplettes Script mit Fehlermeldung und Gutmeldung...

    Im ersten Versuch macht es was es soll...

    Mal gespannt ob jetzt die Gutmeldungen nicht wieder ständig aufpoppen...Vielen Lieben Dank dafür..

    createState('Adapterüberwachung.iobroker.Störung', {"name": "iobroker Servicemeldungen Störung" });
    createState('Adapterüberwachung.iobroker.Text', {"name": "iobroker Servicemeldungen Text"});
    
    function alarmMail(txt) {
    sendTo('telegram.0', 'iobroker - System Adapter meldet Probleme  '+(txt));
    setState('javascript.0.Adapterüberwachung.iobroker.Störung', true );
    setState('javascript.0.Adapterüberwachung.iobroker.Text', 'System Adapter meldet Probleme '+(txt));
    }
    
    var cnt = 0;
    
    // Instanz wird inaktiv
    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);
       if(instance.common.enabled) {
          alarmMail(dp.common.name);
          cnt++;
       }   
    });
    
    on({id: /^system\.adapter\..+\.alive$/, change: 'ne',val: true}, function(dp) {
       cnt--;
       if(cnt <= 0) {
          sendTo('telegram.0', 'iobroker - System Adapter laufen fehlerfrei');
          setState('javascript.0.Adapterüberwachung.iobroker.Störung', false );
          setState('javascript.0.Adapterüberwachung.iobroker.Text', 'ioBroker - System Adapter laufen fehlerfrei ');
          cnt = 0; // falls verzählt und cnt < 0
       }   
    });
    
    


  • Danke für das Script funktioniert soweit

    wie kann ich die Meldungen von DWD oder Tankerkönig heraus nehmen ?

    Da die Adapter immernur kurz starten und wieder bendet werden kommen regelmässig die Meldung

    Gruß Stephan



  • vlt. kann paul das beantworten…bei mir meldet sich allerdings immernoch in unregelmäsigen Abständen die Gutmeldung ohne ersichtlichen Grund..Im Log ist zu diesen Zeiten nichts zusehen....Noch ne Idee woran das liegen könnte?



  • createState('Adapterüberwachung.iobroker.Störung', {"name": "iobroker Servicemeldungen Störung" });
    createState('Adapterüberwachung.iobroker.Text', {"name": "iobroker Servicemeldungen Text"});
    
    function alarmMail(txt) {
       txt = 'System Adapter ' + txt;
       sendTo('telegram.0', 'iobroker - ' + txt);
       setState('javascript.0.Adapterüberwachung.iobroker.Text', txt);
    }
    
    var cnt = 0;
    
    on(/^system\.adapter\..+\.alive$/, function(dp) {
       var id = dp.id.split('.');
       var common = getObject('system.adapter.' + id[2] + '.' + id[3]).common;
       if(common.mode == 'daemon' && common.enabled) {  // Instanzen mit cronjob und gesperrte Instanzen ausblenden
          if(dp.state.val && dp.oldState.val === false) {
             cnt--;
             if(cnt <= 0) {
                alarmMail('laufen fehlerfrei');
                setState('javascript.0.Adapterüberwachung.iobroker.Störung', false );
                cnt = 0; // falls verzählt und cnt < 0
             }    
          } else if(dp.state.val === false && dp.oldState.val) {
             alarmMail('meldet Probleme ' + dp.common.name);
             setState('javascript.0.Adapterüberwachung.iobroker.Störung', true);
             cnt++;
          }
       }   
    });
    

    EDIT: Abfrage um Prüfung auf dp.state.val === false und common.mode == 'daemon' ergänzt



  • @smartboart:

    bei mir meldet sich allerdings immernoch in unregelmäsigen Abständen die Gutmeldung ohne ersichtlichen Grund. `
    Dann nimm mal das cnt++ aus der enabled-Abfrage raus.

       if(instance.common.enabled) alarmMail(dp.common.name);
       cnt++;
    
    


  • @paul53:

    @smartboart:

    bei mir meldet sich allerdings immernoch in unregelmäsigen Abständen die Gutmeldung ohne ersichtlichen Grund. `
    Dann nimm mal das cnt++ aus der enabled-Abfrage raus.

       if(instance.common.enabled) alarmMail(dp.common.name);
       cnt++;
    
    ```` `  
    

    Hallo Paul,

    das funktioniert auch nicht…Ich bekomme immer wieder Gutmeldungen...In der obigen Variante mit allen countern aktiv laufen sogar die Fehlermeldungen von jedem Adapter durch und bringen dann wieder die Gutmeldung. Der fährt quasi alle aktiven Adapter ab...

    Ich möchte dich damit nicht noch weiter beschäftigen, wollte nur noch wenigstens eine Rückmeldung geben...

    Ich verwende das Script jetzt in der letzten Variante ohne die Zähler und lasse mir auch keine Gutmeldungen mehr schicken. Also Fehlermedlungen werden zuverlässig verschickt und zum Zurücksetzen der Anzeige in Vis kann ich es auch so nehmen...

    Danke für die Mühe...

    Sollte ich dein Ergeiz geweckt haben, teste ich gerne weiter...aber ich habs aufgegeben an dem Script zu basteln...



  • Hallo Paul weißt du warum ich bei unterem Script folgenden Logmeldungen bekomme?

    javascript.0 2018-09-05 21:03:42.861 error at Object. <anonymous>(script.js.common.Mail_Status_Adapter.Adapterüberwachung:31:22)

    javascript.0 2018-09-05 21:03:42.860 error Error in callback: TypeError: Cannot read property 'common' of null

    javascript.0 2018-09-05 21:03:42.857 warn Object "system,adapter,text2command,0,alive" does not exist

    createState('Adapterüberwachung.iobroker.Störung', {"name": "iobroker Servicemeldungen Störung" });
    createState('Adapterüberwachung.iobroker.Text', {"name": "iobroker Servicemeldungen Text"});
    
    function alarmMail(txt) {
    txt = 'System Adapter ' + txt;
    sendTo('telegram.0', 'iobroker - ' + txt);
    setState('javascript.0.Adapterüberwachung.iobroker.Text', txt);
    log('iobroker - System Adapter '+(txt));
    }
    
    var cnt = 0;
    
    on(/^system\.adapter\..+\.alive$/, function(dp) {
        if (dp.state.val===true)
        log('trigger für Adapterüberwachung aktiv');
       var id = (dp.id.split('.'));
       if(id[2] != 'tvspielfilm'  && id[2] != 'tankerkoenig') {
          if(dp.state.val) {
             cnt--;
             if(cnt <= 0) {
               // alarmMail('laufen fehlerfrei');
                setState('javascript.0.Adapterüberwachung.iobroker.Störung', false );
                setState('javascript.0.Adapterüberwachung.iobroker.Text', ' iobroker - Systemadapter laufen fehlerfrei');
                log('iobroker - System Adapter laufen fehlerfrei' );
                cnt = 0; // falls verzählt und cnt < 0
             }    
          } else {
              if (dp.state.val === false)
             id = ('system.adapter.' + id[2] + '.' + id[3]);
             var instance = getObject(id);
             if(instance.common.enabled) {
                alarmMail('meldet Probleme ' + dp.common.name);
                setState('javascript.0.Adapterüberwachung.iobroker.Störung', true);
             }
             cnt++;
          }
       }   
    });
    
    ````</anonymous>


  • Durch zufall diesen Beitrag gefunden.

    Werde ich mal testen.

    Danke dafür



  • Leider bekomme ich bei jedem Neustart von Adaptern oder neuverbinden der fritz.box auch eine Email was ja eigentlich klar ist weil dann der Adapter kurz auf gelb springt oder? ![](</s><URL url=)<link_text text="https://uploads.tapatalk-cdn.com/201811 ... 493a80.jpg">https://uploads.tapatalk-cdn.com/20181112/57b7130933b0df29462f2f489f493a80.jpg</link_text>" />



  • Hallo zusammen,

    ich habe das Script zwar zum Laufen gebracht, aber habe das Problem, dass ich im Minutentakt Telegram-Nachrichten bekomme, wenn ein Adapter gelb oder rot ist.
    Das reicht mir aber natürlich nur 1 mal...
    Kann mir jemand sagen, wie ich die Meldungen nur bekomme, wenn sich der Status auch ändert?
    Alternativ würde ich eine stündliche Abfrage einbauen wollen - geht das?
    Ich bin leider völliger Noob dabei.

    Hier ist mein aktuell genutztes Script:

    createState('Adapterüberwachung.iobroker.Störung', {"name": "iobroker Servicemeldungen Störung" });
    createState('Adapterüberwachung.iobroker.Text', {"name": "iobroker Servicemeldungen Text"});
     
    function alarmMail(txt) {
    sendTo('telegram.0', 'iobroker - System Adapter meldet Probleme  '+(txt));
    setState('javascript.0.Adapterüberwachung.iobroker.Störung', true );
    setState('javascript.0.Adapterüberwachung.iobroker.Text', 'System Adapter meldet Probleme '+(txt));
    }
     
    var cnt = 0;
     
    // Instanz wird inaktiv
     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);
        if(instance.common.enabled) {
           alarmMail(dp.common.name);
           cnt++;
        }   
     });
      
     
    
    


  • @deifel sagte:

    mein aktuell genutztes Script:

    Versuche es mal hiermit oder so:

    createState('Adapterüberwachung.iobroker.Text', {"name": "iobroker Servicemeldungen Text"});
    
    function alarmMail(txt) {
       sendTo('telegram.0', 'iobroker - System Adapter meldet Probleme  ' + txt);
       setState('javascript.0.Adapterüberwachung.iobroker.Text', 'System Adapter meldet Probleme ' + txt);
    }
     
    // Instanz wird inaktiv
    on({id: /^system\.adapter\..+\.alive$/, change: 'ne', val: false, oldVal: true}, function(dp) {
        var id = dp.id.split('.');
        var common = getObject('system.adapter.' + id[2] + '.' + id[3]).common;
        if(common.enabled && common.mode == 'daemon') {
           alarmMail(dp.common.name);
        }   
    });
    

    Damit werden Instanzen, die per Cronjob gestartet werden, ausgeblendet.



  • Danke für Deinen Hilfeversuch:)
    Mit den von Dir verlinkten Script habe ich leider nach wie vor eine Dauerschleife bei Adaptern, die "hängen" - also keine Verbindung bekommen.
    Bei manuell gestoppten funktioniert es aber wie gewünscht...
    Und mit dem Code:

    // Instanz wird inaktiv
    on({id: /^system\.adapter\..+\.alive$/, change: 'ne', val: false, oldVal: true}, function(dp) {
        var id = dp.id.split('.');
        var common = getObject('system.adapter.' + id[2] + '.' + id[3]).common;
        if(common.enabled && common.mode = 'daemon') {
           alarmMail(dp.common.name);
        }   
    });
    

    komme ich nicht klar. Wäre es für Dich ein großer Umstand, das komplette Script mit diesem Code zu posten?
    Ich weiß leider nicht, wo ich den Teil hin packen muss...

    Vielen Dank nochmals



  • @deifel sagte:

    das komplette Script mit diesem Code zu posten?

    Habe es oben ergänzt.



  • Danke Dir!
    So hatte ich es auch versucht. Bekomme aber beim Start folgende Meldung:

    javascript.0 script.js.common.Test2 compile failed:
    at script.js.common.Test2:12


Log in to reply
 

Suggested Topics

  • 1
  • 10
  • 12
  • 4
  • 4
  • 1
  • 3
  • 3

1.8k
Online

32.1k
Users

38.8k
Topics

525.8k
Posts