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

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Bei Störung E-Mail versenden ?

    This topic has been deleted. Only users with topic management privileges can see it.
    • 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
                          • D
                            deifel last edited by

                            Ich danke Dir vielmals für Deine Hilfe!
                            Also bei mir sind das der Adapter netatmo und der cloud-Adapter.
                            Wobei ich mir nicht sicher bin, wie der cloud adapter reagiert bzw. ob auch dort der system.adapter.name.N.connected Eintrag sich verändert.
                            Bei Netatmo ist das definitiv der Fall. Sobald einer meiner Sensoren (Regen, Wind etc.) keinen Empfang hat, trennt sich gleich die ganze Verbindung des Adapters.
                            Wenn ich das davon nicht erfahre oder es nur zufällig in IOBroker sehe, dann merke es es gar nicht. Deshalb wäre das Script hier klasse...
                            Ich schaffe es jetzt zwar, dass Dein Script die Werte in ein Objekt schreibt und über ein Blockly-Script kann ich das 1 oder 2 mal am Tag abrufen und per Telegram etc. versenden - aber
                            besser wäre natürlich eine vernünftige Lösung über ein gutes Script (mit einer entsprechenden Prüfung etc.)...
                            Wenn ich den netatmo in Zeile 12 ausblende, dann berücksichtigt Dein Script diesen ja gar nicht mehr, richtig?

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

                              @deifel sagte in Bei Störung E-Mail versenden ?:

                              dann berücksichtigt Dein Script diesen ja gar nicht mehr, richtig?

                              Richtig, deshalb benötigt er eine Sonderbehandlung.

                              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$/, 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' && id[2] != 'netatmo' && id[2] != 'cloud') {
                                     alarmMail(dp.common.name);
                                  }   
                              });
                              
                              var timer1 = null;
                              on({id: 'system.adapter.netatmo.0.alive', val: false, oldVal: true}, function(dp) {
                                  var common = getObject('system.adapter.netatmo.0').common;
                                  if(common.enabled) {
                                      if(!timer1) alarmMail(dp.common.name);
                                      else clearTimeout(timer1);
                                      timer1 = setTimeout(function() {timer1 = null;}, 300000); // 5 Minuten
                                  }   
                              });
                              
                              var timer2 = null;
                              on({id: 'system.adapter.cloud.0.alive', val: false, oldVal: true}, function(dp) {
                                  var common = getObject('system.adapter.cloud.0').common;
                                  if(common.enabled) {
                                      if(!timer2) alarmMail(dp.common.name);
                                      else clearTimeout(timer2);
                                      timer2 = setTimeout(function() {timer2 = null;}, 300000); // 5 Minuten
                                  }
                              });
                              

                              Die Instanz muss mind. 5 Minuten lang "alive" gewesen sein, bevor eine Meldung erzeugt wird.

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

                                Klasse! Vielen Dank! Das wäre ja klasse, wenn das so funktioniert.
                                Werde ich so testen.
                                Herzlichen Dank nochmals für Deine Hilfe - sehr nett!
                                LG
                                Frank

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

                                  @deifel Habe noch ein clearTimeout() (Retrigger) eingebaut !! Bitte übernehmen !

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

                                    @paul53

                                    Frage ich connected auch mit enabled ab, oder ist das ein anderer Befehl.

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

                                      @Oli sagte in:

                                      Frage ich connected auch mit enabled ab

                                      connected hat eine ähnliche Bedeutung wie alive. common.enabled ist die Aktivierung der Instanz und wird abgefragt, weil es keinen Sinn macht connected einer deaktivierten Instantanz zu testen.

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

                                        @paul53

                                        dankeschön

                                        D 1 Reply Last reply Reply Quote 0
                                        • D
                                          derrapf @Oli last edited by derrapf

                                          @oli
                                          Hallo
                                          Ich weiss der Thread ist alt, aber ich wollte das oben verlinkte Script verwenden.
                                          Ich bekomme aber nun Syntax Errors.
                                          Kann mir da jemand helfen? Und zwar hier:
                                          5273a3e9-2698-4685-add4-3e9c08418dde-image.png
                                          und da
                                          a118cb8b-ec76-408e-ab50-afe506aecdf9-image.png

                                          Die Variable common hat nur icon name und role.
                                          Nicht enabled und nicht mode.
                                          Gruss Ralf

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

                                            @derrapf sagte: Nicht enabled und nicht mode.

                                            Lass Dich nicht vom Script-Editor verwirren, denn der kennt nicht alle common-Eigenschaften der system.adapter.name.0-Objekte und meckert sie deshalb an.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            907
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            10
                                            61
                                            7905
                                            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