Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Adapter Monitor mit Restart wenn Rot

    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

    Adapter Monitor mit Restart wenn Rot

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

      Moin moin,

      das folgende Script hatte ich irgendwo hier im Forum mal gefunden. Nach einigen Anpassungen funktioniert es soweit auch ganz gut.

      Was tut es?
      Wenn ein Adapter ROT wird, bekomme ich eine Telegram Meldung und der Adapter wird neu gestartet.

      Jedoch habe ich noch folgendes Problem.
      Das Script reagiert einfach zu schnell.
      Viele Adapter gehen erst auf GELB bevor sie wieder Rot werden. Dies führt dazu, dass ich immer zwei Nachrichten bekomme . Eine "ist wieder OK" und eine "Kapoottt".
      Dazu kommt, dass der Restart dann auch zu schnell und mehrfach ausgeführt wird.

      Habt ihr Ideen, wie ich das verbessern kann?

      Leider bin ich nicht sonderlich fit bei javaScript.

      console.log("Waiting...");
      await sleep(180000);
      console.log("waiting end. Start Script");
       
      function alarmMail(txt) {
         sendTo('telegram.0', '' + txt);
         setState('0_userdata.0.GlobalVars.AdapterStateText', txt);
      }
       
      var cnt = 0;
       
      on(/^system\.adapter\..+\.connected$/, async 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('✅ Adapter ' + id[2] + '.' + id[3] + ' läuft Fehlerfrei');
                  console.log(id[2] + '.' + id[3] + ' läuft Fehlerfrei');
                  setState('0_userdata.0.GlobalVars.AdapterState', false );
                  cnt = 0; // falls verzählt und cnt < 0
               }    
            } else if(dp.state.val === false && dp.oldState.val) {
               alarmMail('❌ Adapter ' + id[2] + '.' + id[3] + ' meldet Probleme');
               setState('0_userdata.0.GlobalVars.AdapterState', true);
               console.log(id[2] + '.' + id[3] + ' meldet Probleme');
               console.log('starte Adapter neu');
               setTimeout(() => { extendObject('system.adapter.' + id[2] + '.' + id[3], {common: {enabled: true}});}, 30000);
               cnt++;
            }
         }   
      });
      
      
      1 Reply Last reply Reply Quote 0
      • First post
        Last post

      Support us

      ioBroker
      Community Adapters
      Donate

      847
      Online

      31.8k
      Users

      80.0k
      Topics

      1.3m
      Posts

      1
      1
      104
      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