Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Frage] Wie 5 Sekundentakt innerhalb einer If-Bedingung

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Frage] Wie 5 Sekundentakt innerhalb einer If-Bedingung

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

      Guten Morgen,

      ich bräuchte mal wieder Hilfe, ich möchte in Abhängigkeit einer Variablen meine Yeelight Rgb-Lampen alle 8 Sekunden die Farbe wechseln lassen. Dazu habe ich eine kleine If-Bedingung, wird diese positiv ausgewertet möchte ich eben die Farben wechseln lassen, wird diese negativ ausgewertet wird eine voreingestellte Farbe zugewiesen.

      Ich bekomme es nun nicht hin dass der schedule Befehl nur bei "ja" ausgeführt und bei "nein" gestopt wird. Es wird zwar gestartet aber nicht gestoppt.

      Ich wollte bewusst den ganzen schedule Befehl in die If-Bedingung packen um bei ausgeschalteter Lampe nicht trotzdem alle 8 Sekunden einen Durchlauf zu haben. Anscheinend geht das jedoch nicht.

      Hier mal ein Auszug von dem Versuch der Umsetzung:

      //Sonstige Steuerungen
      //
      // Zufallsfarbe alle x sekunden im Wechsel
      on({id: "javascript.0.Yeelight.Automatischer_Farbwechsel"}, function (dp) {
          if(dp.state.val){
              schedule("*/8 * * * * *", function () {
                  var min = 0;
                  var max = 255;
                  var r = Math.round(Math.random() * (max - min)) + min;
                  var g = Math.round(Math.random() * (max - min)) + min;
                  var b = Math.round(Math.random() * (max - min)) + min;
                  log(r + ' ' + g + ' ' + b);
                  setState("javascript.0.Yeelight.RGB_Lampe_1.rgb"/*RGB-Farbwerte*/, r + ' ' + g + ' ' + b);
                  setState("javascript.0.Yeelight.RGB_Lampe_2.rgb"/*RGB-Farbwerte*/, r + ' ' + g + ' ' + b); 
              });
          }
          else{
              setState("javascript.0.Yeelight.RGB_Lampe_1.rgb"/*RGB-Farbwerte*/, '203 26 209');
              setState("javascript.0.Yeelight.RGB_Lampe_2.rgb"/*RGB-Farbwerte*/, '203 26 209'); 
          }
      });
      
      

      Hoffe jemand hat ne Idee

      Gruß

      Peoples

      1 Reply Last reply Reply Quote 0
      • arteck
        arteck Developer Most Active last edited by

        das geht nicht

        ein schedule läuft systemseitig und das halt immer ..

        
        schedule("*/8 * * * * *", function () {
            if (getState('javascript.0.Yeelight.Automatischer_Farbwechsel').val) { 
        
                    var min = 0;
                    var max = 255;
                    var r = Math.round(Math.random() * (max - min)) + min;
                    var g = Math.round(Math.random() * (max - min)) + min;
                    var b = Math.round(Math.random() * (max - min)) + min;
                    log(r + ' ' + g + ' ' + b);
                    setState("javascript.0.Yeelight.RGB_Lampe_1.rgb"/*RGB-Farbwerte*/, r + ' ' + g + ' ' + b);
                    setState("javascript.0.Yeelight.RGB_Lampe_2.rgb"/*RGB-Farbwerte*/, r + ' ' + g + ' ' + b); 
        
            }
            else{
                setState("javascript.0.Yeelight.RGB_Lampe_1.rgb"/*RGB-Farbwerte*/, '203 26 209');
                setState("javascript.0.Yeelight.RGB_Lampe_2.rgb"/*RGB-Farbwerte*/, '203 26 209'); 
            }
        
        });
        
        1 Reply Last reply Reply Quote 0
        • apollon77
          apollon77 last edited by

          Das ist nicht ganz korrekt. Es geht.

          schedule gibt eine id zurück die man verwenden kann um das schedule zu stoppen.

          mySchedule = schedule(…);

          clearSchedule(mySchedule);

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

            Naja oder eben setInterval und clearInterval.

            Gruß

            Pix

            EDIT VORSCHLAG:

            ! ````
            var interval = setInterval(farbwechsel, 8000);
            ! function farbwechsel() {
            var min = 0;
            var max = 255;
            var r = Math.round(Math.random() * (max - min)) + min;
            var g = Math.round(Math.random() * (max - min)) + min;
            var b = Math.round(Math.random() * (max - min)) + min;
            log(r + ' ' + g + ' ' + b);
            setState("javascript.0.Yeelight.RGB_Lampe_1.rgb"/RGB-Farbwerte/, r + ' ' + g + ' ' + b);
            setState("javascript.0.Yeelight.RGB_Lampe_2.rgb"/RGB-Farbwerte/, r + ' ' + g + ' ' + b);
            }
            ! on({id: "javascript.0.Yeelight.Automatischer_Farbwechsel"}, function (dp) {
            if (dp.state.val) {
            farbwechsel();
            } else {
            clearInterval(interval);
            setState("javascript.0.Yeelight.RGB_Lampe_1.rgb"/RGB-Farbwerte/, '203 26 209');
            setState("javascript.0.Yeelight.RGB_Lampe_2.rgb"/RGB-Farbwerte/, '203 26 209');
            }
            });

            >! Und schließlich sollte ein EIN/AUS der Lampe noch überwacht werden. Wenn aus, dann clearInterval
            1 Reply Last reply Reply Quote 0
            • Peoples
              Peoples last edited by

              Tausend Dank euch werde es gleich mal probieren

              Gruß

              Peoples

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

              Support us

              ioBroker
              Community Adapters
              Donate

              547
              Online

              31.7k
              Users

              79.8k
              Topics

              1.3m
              Posts

              4
              5
              666
              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