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.
    • paul53
      paul53 @passuff last edited by paul53

      @passuff sagte:

      Hier der verwendete code:

      Ja, bei nur 5 s Verzögerung muss das so sein. Die Verzögerung muss auf jeden Fall größer sein, als das Intervall, in dem der Ping-Status aktualisiert wird.

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

        Sorry, mein Fehler. Funktioniert tadellos.

        Danke dafür!

        1 Reply Last reply Reply Quote 0
        • 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

                                    680
                                    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