Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Bei Störung E-Mail versenden ?

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Bei Störung E-Mail versenden ?

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 last edited by

      @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)
         }   
      });
      
      1 Reply Last reply Reply Quote 0
      • smartboart
        smartboart last edited by

        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
           }   
        });
        
        
        1 Reply Last reply Reply Quote 0
        • S
          stephan61 last edited by

          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

          1 Reply Last reply Reply Quote 0
          • smartboart
            smartboart last edited by

            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?

            1 Reply Last reply Reply Quote 0
            • paul53
              paul53 last edited by paul53

              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

              1 Reply Last reply Reply Quote 0
              • paul53
                paul53 last edited by

                @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++;
                
                
                1 Reply Last reply Reply Quote 0
                • smartboart
                  smartboart last edited by

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

                  1 Reply Last reply Reply Quote 0
                  • smartboart
                    smartboart last edited by

                    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>
                    1 Reply Last reply Reply Quote 0
                    • Webranger
                      Webranger last edited by

                      Durch zufall diesen Beitrag gefunden.

                      Werde ich mal testen.

                      Danke dafür

                      1 Reply Last reply Reply Quote 0
                      • Webranger
                        Webranger last edited by

                        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>" />

                        1 Reply Last reply Reply Quote 0
                        • D
                          deifel last edited by

                          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++;
                              }   
                           });
                            
                           
                          
                          
                          paul53 1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @deifel last edited by paul53

                            @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: 'lt'}, 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.

                            1 Reply Last reply Reply Quote 0
                            • D
                              deifel last edited by

                              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

                              paul53 1 Reply Last reply Reply Quote 0
                              • paul53
                                paul53 @deifel last edited by

                                @deifel sagte:

                                das komplette Script mit diesem Code zu posten?

                                Habe es oben ergänzt.

                                1 Reply Last reply Reply Quote 0
                                • D
                                  deifel last edited by

                                  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

                                  paul53 1 Reply Last reply Reply Quote 0
                                  • paul53
                                    paul53 @deifel last edited by

                                    @deifel sagte:

                                    compile failed:

                                    Sorry, es fehlte ein = bei

                                    common.mode == 'daemon'
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • D
                                      deifel last edited by

                                      Danke! Das Script funktioniert jetzt zwar, aber es hilft mir nicht weiter. Ich habe vereinzelt Instanzen, die (wenn diese den Server nicht erreichen) kurz grün werden und dann wieder rot oder gelb.
                                      Dann bekomme ich im Minutentakt diese Meldungen...
                                      Kann ich bei diesem Script irgendwie ein ganz einfaches Schedule einbauen?
                                      Z.B. damit es nur alle 4 Stunden ausgeführt wird?
                                      Das würde mir dann so schon ausreichen...

                                      paul53 1 Reply Last reply Reply Quote 0
                                      • paul53
                                        paul53 @deifel last edited by paul53

                                        @deifel sagte:

                                        Instanzen, die (wenn diese den Server nicht erreichen) kurz grün werden und dann wieder rot oder gelb.

                                        Verhält sich bei diesen Instanzen der Datenpunkt system.adapter.name.N.connected genauso, d.h. wird er zwischendurch mal kurz true ?

                                        1 Reply Last reply Reply Quote 0
                                        • D
                                          deifel last edited by

                                          Ja, verhält sich leider genauso, wenn ich unter Objekte die Sache beobachte...
                                          Das ist mit Sicherheit der Grund, dass das Script natürlich dann ständig reagiert.

                                          paul53 1 Reply Last reply Reply Quote 0
                                          • paul53
                                            paul53 @deifel last edited by paul53

                                            @deifel sagte:

                                            verhält sich leider genauso

                                            Dann sollten diese Adapter in diesem Skript ausgeblendet werden. Sie müssen getrennt behandelt werden.

                                            Ausblenden in Zeile 12:

                                                if(common.enabled && common.mode == 'daemon' && id[2] != 'adapter1' && id[2] != 'adapter2') {
                                            

                                            adapter1, adapter2 sind durch die betreffenden Adapternamen zu ersetzen.

                                            EDIT: Wenn Du mir verrätst, welche Instanzen betroffen sind, kann ich das Skript entsprechend ergänzen.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            622
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            10
                                            61
                                            8161
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo