Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. "entprellen" eines States

    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

    "entprellen" eines States

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

      Ich bekomme im Schnitt alle 2-3 Tage eine "wieder erreichbar" Meldung. Laut Aufzeichnung kannn ich aber nicht erkennen, dass sich am PingStatus etwas geändert hat.
      Jemand eine Idee?

      Code:


      const idPing = "ping.0.IoBroker-VM-Debian.192_168_178_50"/Rainyman/;

      var timer = null;

      on({id: idPing, val: true}, function() {
      if(!timer) sendTo('pushover.0', 'Rainyman 192.168.178.50 wieder erreichbar') + setState("CalcVal.0.Szenen.Dachfensterautomatik"/Dachfensterautomatik/, true)
      + console.log('Rainyman 192.168.178.50 wieder erreichbar');
      else clearTimeout(timer);
      timer = setTimeout(function() {
      sendTo('pushover.0', 'Fehler: Rainyman 192.168.178.50 nicht erreichbar');
      setState("CalcVal.0.Szenen.Dachfensterautomatik"/Dachfensterautomatik/, false);
      setState("hm-rpc.0.OEQ1301523.1.LEVEL"/HM-LC-Bl1PBU-FM OEQ1301523:1.LEVEL/, 0);
      //console.log('Fehler: Rainyman 192.168.178.50 nicht erreichbar');
      timer = null;
      }, 5601000);
      });

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

        @passuff sagte in "entprellen" eines States:

        if(!timer) {sendTo('pushover.0', 'Rainyman 192.168.178.50 wieder erreichbar') + setState("CalcVal.0.Szenen.Dachfensterautomatik"/Dachfensterautomatik/, true)

        • console.log('Rainyman 192.168.178.50 wieder erreichbar');

        else clearTimeout(timer);

        Was soll das für Code sein ? Javascript ist es nicht.

        if(!timer) {
           sendTo('pushover.0', 'Rainyman 192.168.178.50 wieder erreichbar');
           setState("CalcVal.0.Szenen.Dachfensterautomatik"/Dachfensterautomatik/, true);
           console.log('Rainyman 192.168.178.50 wieder erreichbar');
        } else clearTimeout(timer);
        
        1 Reply Last reply Reply Quote 0
        • P
          passuff last edited by passuff

          @paul53 sagte in "entprellen" eines States:

          Was soll das für Code sein ? Javascript ist es nicht.

          ja, da kannst du recht haben. Ich hatte es auch so wie du proiert, doch dann bekam ich einen Fehler beim compile:

          javascript.0 script.js.common.Sonstige.Überwachung_Rainyman_Kopieren compile failed:
           at script.js.common.Sonstige.Überwachung_Rainyman_Kopieren:8
          
          


          const idPing = "ping.0.IoBroker-VM-Debian.192_168_178_50"/Rainyman/;

          var timer = null;

          on({id: idPing, val: true}, function() {
          if(!timer) {
          sendTo('pushover.0', 'Rainyman 192.168.178.50 wieder erreichbar');
          setState("CalcVal.0.Szenen.Dachfensterautomatik"/Dachfensterautomatik/, true);
          console.log('Rainyman 192.168.178.50 wieder erreichbar');
          } else clearTimeout(timer);
          else clearTimeout(timer);
          timer = setTimeout(function() {
          sendTo('pushover.0', 'Fehler: Rainyman 192.168.178.50 nicht erreichbar');
          setState("CalcVal.0.Szenen.Dachfensterautomatik"/Dachfensterautomatik/, false);
          setState("hm-rpc.0.OEQ1301523.1.LEVEL"/HM-LC-Bl1PBU-FM OEQ1301523:1.LEVEL/, 0);
          //console.log('Fehler: Rainyman 192.168.178.50 nicht erreichbar');
          timer = null;
          }, 5601000);
          });

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

            @passuff sagte in "entprellen" eines States:

            } else clearTimeout(timer);
            else clearTimeout(timer);
            

            Das zweite else ... muss raus.
            Bitte Jacascript-Code in Code tags posten !

            1 Reply Last reply Reply Quote 0
            • P
              passuff last edited by

              Sorry, da komme ich nicht weiter:

              const idPing = "ping.0.IoBroker-VM-Debian.192_168_178_50"/*Rainyman*/;
               
              var timer = null;
               
              on({id: idPing, val: true}, function() {
                  if(!timer) {
                  sendTo('pushover.0', 'Rainyman 192.168.178.50 wieder erreichbar');
                  setState("CalcVal.0.Szenen.Dachfensterautomatik"/Dachfensterautomatik/, true);
                  console.log('Rainyman 192.168.178.50 wieder erreichbar');
              } else clearTimeout(timer);
                     timer = setTimeout(function() {
                     sendTo('pushover.0', 'Fehler: Rainyman 192.168.178.50 nicht erreichbar');
                     setState("CalcVal.0.Szenen.Dachfensterautomatik"/*Dachfensterautomatik*/, false);
                     setState("hm-rpc.0.OEQ1301523.1.LEVEL"/*HM-LC-Bl1PBU-FM OEQ1301523:1.LEVEL*/, 0);
                     //console.log('Fehler: Rainyman 192.168.178.50 nicht erreichbar');
                     timer = null;
                  }, 5*60*1000);
               });
              
              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @passuff last edited by paul53

                @passuff
                Funktioniert es so nicht ? Sollte eigentlich. Damit die Struktur zu erkennen ist:

                const idPing = "ping.0.IoBroker-VM-Debian.192_168_178_50"/*Rainyman*/;
                 
                var timer = null;
                 
                on({id: idPing, val: true}, function() {
                   if(!timer) {
                       sendTo('pushover.0', 'Rainyman 192.168.178.50 wieder erreichbar');
                       setState("CalcVal.0.Szenen.Dachfensterautomatik"/*Dachfensterautomatik*/, true);
                       console.log('Rainyman 192.168.178.50 wieder erreichbar');
                   } else clearTimeout(timer);
                   timer = setTimeout(function() {
                       sendTo('pushover.0', 'Fehler: Rainyman 192.168.178.50 nicht erreichbar');
                       setState("CalcVal.0.Szenen.Dachfensterautomatik"/*Dachfensterautomatik*/, false);
                       setState("hm-rpc.0.OEQ1301523.1.LEVEL"/*HM-LC-Bl1PBU-FM OEQ1301523:1.LEVEL*/, 0);
                       //console.log('Fehler: Rainyman 192.168.178.50 nicht erreichbar');
                       timer = null;
                   }, 5*60*1000);
                });
                
                P 1 Reply Last reply Reply Quote 0
                • P
                  passuff @paul53 last edited by

                  @paul53

                  Nein, funktioniert leider nicht:

                  00:00:23.053	error	javascript.0 script.js.common.Sonstige.Überwachung_Rainyman_Kopieren compile failed:
                   at script.js.common.Sonstige.Überwachung_Rainyman_Kopieren:8
                  
                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @passuff last edited by paul53

                    @passuff
                    In Zeile 8 ist der Kommentar(Name) falsch eingebaut. Ich habe es oben korrigiert.

                    1 Reply Last reply Reply Quote 0
                    • P
                      passuff last edited by

                      Super, vielen Dank!

                      1 Reply Last reply Reply Quote 0
                      • P
                        passuff last edited by

                        @paul53 Bei neustart des Skripts wird einmalig die Bedingung " if(!timer)" wahr un somit eine pushover abgesetzt. Hast du eine Lösung dafür?

                        const idPing = "ping.0.IoBroker-VM-Debian.192_168_178_50"/*Rainyman*/;
                         
                        var timer = null;
                         
                        on({id: idPing, val: true}, function() {
                           if(!timer) {
                               sendTo('pushover.0', 'Rainyman 192.168.178.50 wieder erreichbar');
                               console.log('Rainyman 192.168.178.50 wieder erreichbar');
                           } else clearTimeout(timer);
                           timer = setTimeout(function() {
                               sendTo('pushover.0', 'Fehler: Rainyman 192.168.178.50 nicht erreichbar');       setState("hm-rpc.0.OEQ1301523.1.LEVEL"/*HM-LC-Bl1PBU-FM OEQ1301523:1.LEVEL*/, 0);
                               //console.log('Fehler: Rainyman 192.168.178.50 nicht erreichbar');
                               timer = null;
                           }, 5*60*1000);
                        });
                        
                        paul53 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @passuff last edited by

                          @passuff
                          In Zeile 3 den Timer setzen

                          var timer = setTimeout(function() {}, 0);
                          
                          1 Reply Last reply Reply Quote 0
                          • P
                            passuff last edited by

                            Das ging schnell. Danke!

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

                              @passuff
                              Was macht das

                              setState("hm-rpc.0.OEQ1301523.1.LEVEL"/*HM-LC-Bl1PBU-FM OEQ1301523:1.LEVEL*/, 0);
                              

                              in dem Skript ?

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

                                @paul53 schloss das Dachfenster.
                                Gibt es jetzt aber nicht mehr. Es wird lediglich ein Logik DP geswitched welcher nun in einem externen Dachfensterlüftungsskript ausgewertet wird.

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

                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                685
                                Online

                                31.9k
                                Users

                                80.1k
                                Topics

                                1.3m
                                Posts

                                3
                                23
                                1768
                                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