Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Best practice: Verzögert schalten

    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

    Best practice: Verzögert schalten

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

      in den Programmen auf der CCU konnte man Programme mit einer Verzögerung ausführen. Ich habe das genutzt um z. B. den Nachtmodus zu aktivieren.

      Da wurden dann Lichter mit einer Verzögerung von 10 - 20 Minuten gestaffelt ausgeschaltet.

      Da ich die Programme von der CCU komplett durch Scripte ersetzen möchte jetzt die Frage an die Allgemeinheit.

      Wie macht man so etwas am besten in einem Script. Für kurze Verzögerungen kann man sicher den setTimeout nutzen. Aber was macht man bei Verzögerungen von bis zu 20 Minuten oder mehr?

      Hat jemand einen Tipp für mich?

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

        setTimeout ist auch für 20 Minuten sehr geeignet.

        setTimeout(function () {
            log('Timeout of 20 minutes');
        }, 20 * 60000);
        
        
        1 Reply Last reply Reply Quote 0
        • R
          rascal last edited by

          hey,

          frage, warum führt er die Funktion nicht verzögert aus? was ist falsch?

          Danke für die Hilfe im Voraus

          var temp_switch = 2.5; //über welcher Differenztemperatur die Sonne scheint
          var timer_ein;
          var timer_aus;
          
          function sonne(dp)
          {
              if(dp=="ein") log("-------------------------------SONNE SCHEINT - Timer: ", "info");
                  else log("-------------------------------SONNE SCHEINT NICHT", "info");
          }
          
          on({id: "hm-rpc.0.LEQ0244813.3.TEMPERATURE"/*Sonnensensor_3.TEMPERATURE*/, valGt: temp_switch}, function() {
              log("-------------------------------SONNE SCHEINT HAT GETRIGGERT - Timer: ", "info");
              setTimeout(sonne("ein"), 30000);
          });
          on({id: "hm-rpc.0.LEQ0244813.3.TEMPERATURE"/*Sonnensensor_3.TEMPERATURE*/, valLe: temp_switch}, function() {
              log("-------------------------------SONNE SCHEINT NICHT HAT GETRIGGERT", "info");
              setTimeout(sonne("ein"), 90000);
          });
          
          1 Reply Last reply Reply Quote 0
          • Bluefox
            Bluefox last edited by

            @rascal:

            hey,

            frage, warum führt er die Funktion nicht verzögert aus? was ist falsch?

            Danke für die Hilfe im Voraus

            var temp_switch = 2.5; //über welcher Differenztemperatur die Sonne scheint
            var timer_ein;
            var timer_aus;
            
            function sonne(dp)
            {
                if(dp=="ein") log("-------------------------------SONNE SCHEINT - Timer: ", "info");
                    else log("-------------------------------SONNE SCHEINT NICHT", "info");
            }
            
            on({id: "hm-rpc.0.LEQ0244813.3.TEMPERATURE"/*Sonnensensor_3.TEMPERATURE*/, valGt: temp_switch}, function() {
                log("-------------------------------SONNE SCHEINT HAT GETRIGGERT - Timer: ", "info");
                setTimeout(sonne("ein"), 30000);
            });
            on({id: "hm-rpc.0.LEQ0244813.3.TEMPERATURE"/*Sonnensensor_3.TEMPERATURE*/, valLe: temp_switch}, function() {
                log("-------------------------------SONNE SCHEINT NICHT HAT GETRIGGERT", "info");
                setTimeout(sonne("ein"), 90000);
            });
            ```` `  
            
            setTimeout(sonne, 30000, "ein");
            

            oder

            setTimeout(function () {
            	sonne("ein");
            }, 30000);
            
            1 Reply Last reply Reply Quote 0
            • M
              mabas last edited by

              Für deinen Einsatzzweck vielleicht nicht geeignet, aber für die, die diesen Beitrag noch mal finden mögen:

              Für die, die Geräte zeitversetzt starten wollen, gibt es auch die imho sehr elegante setStateDelayed Funktion. Ich benutze die sehr gerne in Verbindung mit einer Zufallszahl, um die Funkhygiene bei meiner Homematic zu wahren. So fahren meine Rollläden alle zeitlich versetzt in einem Zeitraum von 30 Sekunden herunter.

              setStateDelayed("hm-rpc.0.MEQ0516226.1.LEVEL"/*Rollladen OG 3 Arbeitszimmer Ost.LEVEL*/, 100, Math.floor(Math.random()*30000));
              
              1 Reply Last reply Reply Quote 0
              • R
                rascal last edited by

                die Random Funktion ist gut zu kennen, danke.

                Bei mir hat jeder Rolladen seine eigene Verzögerungszeit fix zugewiesen 🙂

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

                Support us

                ioBroker
                Community Adapters
                Donate

                414
                Online

                31.9k
                Users

                80.2k
                Topics

                1.3m
                Posts

                4
                6
                1739
                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