Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. (Gelöst) Blocky Wert der Helligkeit in drei Stuffen herunterdimmen.

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    (Gelöst) Blocky Wert der Helligkeit in drei Stuffen herunterdimmen.

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

      Post davor war zum AUS-Schalten… Hier noch ein Blockly zum EIN-Schalten!
      1526_unbenannt112.png

      1 Reply Last reply Reply Quote 0
      • A
        andyb last edited by

        wie wäre es denn hinzukriegen, das die Lampe z.B. innerhalb 1 Stunde sich langsam runter dimmt?

        Ansätze:

        (Wobei mir die Funktion der wiederhole-Bausteine noch nicht ganz klar ist, wann und in welchen zeitlichen Abstand wiederholt wird. Finde auch keine Beschreibung)

        1586_2017-10-13_15_24_31-iobroker.admin.jpg

        1 Reply Last reply Reply Quote 0
        • AlCalzone
          AlCalzone Developer last edited by

          @andyb:

          (Wobei mir die Funktion der wiederhole-Bausteine noch nicht ganz klar ist, wann und in welchen zeitlichen Abstand wiederholt wird. `
          Das wiederholt einfach den Code innerhalb des Mauls x-mal oder bis eine Bedingung erfüllt ist. Wichtig über Timeouts ist zu wissen, dass der Code im Timeout später ausgeführt wird, aber der eigentliche Code wird nicht pausiert.

          Willst du also im Abstand von 1sek 5 Timer starten, brauchst du eine Zählervariable, die du mit der Schleife hochzählst, z.b. i. Der Timeout braucht dann eine Verzögerung von i*1000ms, damit erzeugst du 5 Timeouts, die nach 1,2,3,4 und 5s ausgeführt werden. Wie das aber in Blockly geht, keine Ahnung…

          Dein erster Code ist daher recht problematisch. Du erstellst ca. 1 Minute lang endlos viele Timeouts, die dann nach 1 Minute alle auf einmal den Wert verändern und damit vermutlich die Bedingung nicht mehr erfüllen. Die restlichen Timeouts die bis dahin erstellt wurden, feuern auch noch alle und verändern den Wert weiterhin.

          Du erreichst also keinen Dimmvorgang, sondern treibst die CPU-Last deines Hosts in die Höhe. Angenommen, das erstellen eines Timeouts dauert 1ms:

          0ms: timeout 1 erstellt
          1ms: timeout 2 erstellt
          2ms: timeout 3 erstellt
          ...
          60000ms: 
          timeout 60000 erstellt
          timeout 1 feuert --> Helligkeit reduziert um 2
          60001ms: 
          timeout 60001 erstellt
          timeout 2 feuert --> Helligkeit reduziert um 2
          ...
          60050ms: 
          timeout 60050 erstellt
          timeout 50 feuert --> Helligkeit reduziert um 2\. Ist jetzt 0, daher beendet die Schleife, keine weiteren Timeouts
          ...
          120050ms: timeout 60050 feuert
          
          

          Dein Ziel kann man schematisch wie folgt erreichen:

          • Steuercode (Helligkeit um 1 Stufe reduzieren) in eine Funktion auslagern

          • Einen Timeout auf diese Funktion setzen (1 mal!)

          • In der Funktion prüfen, ob die End-Bedingung erreicht ist, wenn nicht erneut einen Timeout auf die Funktion setzen

          1 Reply Last reply Reply Quote 0
          • A
            andyb last edited by

            @AlCalzone:

            Dein Ziel kann man schematisch wie folgt erreichen:

            • Steuercode (Helligkeit um 1 Stufe reduzieren) in eine Funktion auslagern

            • Einen Timeout auf diese Funktion setzen (1 mal!)

            • In der Funktion prüfen, ob die End-Bedingung erreicht ist, wenn nicht erneut einen Timeout auf die Funktion setzen `
              Danke, also so?

            1586_2017-10-14_09_48_32-iobroker.admin.jpg

            var timeout2, timeout3;
            
            /**
             * Beschreibe diese Funktion …
             */
            function dimmen1() {
              setState("hue.0.Philips_hue.Schlafzimmer.level"/*Philips_hue.Schlafzimmer.level*/, (getState("hue.0.Philips_hue.Schlafzimmer.level").val - 1));
              if (getState("hue.0.Philips_hue.Schlafzimmer.level").val > 0) {
                timeout3 = setTimeout(function () {
                  dimmen1();
                }, 60000);
              }
            }
            
            on({id: 'hue.0.Philips_hue.Schlafzimmer.level', change: "ne"}, function (obj) {
              var value = obj.state.val;
              var oldValue = obj.oldState.val;
              while (!(getState("hue.0.Philips_hue.Schlafzimmer.level").val == 0)) {
              }
            });
            
            timeout2 = setTimeout(function () {
              dimmen1();
            }, 60000);
            
            //JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4aHRtbCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm9uX2V4dCUyMiUyMGlkJTNEJTIycG8tQlBfUHBtY2hUUEJvaEdPJTNEbiUyMiUyMHglM0QlMjIxMyUyMiUyMHklM0QlMjItMTIlMjIlM0UlM0NtdXRhdGlvbiUyMGl0ZW1zJTNEJTIyMSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09ORElUSU9OJTIyJTNFbmUlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFDS19DT05ESVRJT04lMjIlM0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMk9JRDAlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIyZmllbGRfb2lkJTIyJTIwaWQlM0QlMjJNN0F2ISUyQzNUJTIzISFoc2hnUHlJaTklMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJvaWQlMjIlM0VodWUuMC5QaGlsaXBzX2h1ZS5TY2hsYWZ6aW1tZXIubGV2ZWwlM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMlNUQVRFTUVOVCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2xzX3doaWxlVW50aWwlMjIlMjBpZCUzRCUyMnklM0QxWnAtQjdkKU51LSU3RFIlM0F4bldFJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTU9ERSUyMiUzRVVOVElMJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCT09MJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfY29tcGFyZSUyMiUyMGlkJTNEJTIyYmUuan5QJTJCb2ZrVHIoelIwUShBJTNEJTIyJTIwaW5saW5lJTNEJTIyZmFsc2UlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUCUyMiUzRUVRJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZ2V0X3ZhbHVlJTIyJTIwaWQlM0QlMjJpakghWFghJTVEbiU1RTU5JTNEQ0tTJTVFQiU3QjclMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VodWUuMC5QaGlsaXBzX2h1ZS5TY2hsYWZ6aW1tZXIubGV2ZWwlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMkdMQyU1RSo2RS5ZISUyRk1paiU3QnglN0ROY1ElMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UwJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDJTJGYmxvY2slM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0aW1lb3V0c19zZXR0aW1lb3V0JTIyJTIwaWQlM0QlMjIqMiUzRiU1QlNYamxTTSUyQ2lUUChJJTNBWCUyNUklMjIlMjB4JTNEJTIyLTYzJTIyJTIweSUzRCUyMjQxMyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5BTUUlMjIlM0V0aW1lb3V0MiUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyREVMQVklMjIlM0UxJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJVTklUJTIyJTNFbWluJTNDJTJGZmllbGQlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyU1RBVEVNRU5UJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIycHJvY2VkdXJlc19jYWxsbm9yZXR1cm4lMjIlMjBpZCUzRCUyMiUyMyU2MCglN0IlM0ZVJTNEa3NYMkUtc3VRcH5OUyUyMiUzRSUzQ211dGF0aW9uJTIwbmFtZSUzRCUyMmRpbW1lbjElMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDJTJGYmxvY2slM0UlM0NibG9jayUyMHR5cGUlM0QlMjJwcm9jZWR1cmVzX2RlZm5vcmV0dXJuJTIyJTIwaWQlM0QlMjIlNUQlMjM5bmFzamx+YSUyMzNpZ3ZKJTJDUWlWJTIyJTIweCUzRCUyMi02MyUyMiUyMHklM0QlMjI1MTMlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOQU1FJTIyJTNFZGltbWVuMSUzQyUyRmZpZWxkJTNFJTNDY29tbWVudCUyMHBpbm5lZCUzRCUyMmZhbHNlJTIyJTIwaCUzRCUyMjgwJTIyJTIwdyUzRCUyMjE2MCUyMiUzRUJlc2NocmVpYmUlMjBkaWVzZSUyMEZ1bmt0aW9uJTIwJUUyJTgwJUE2JTNDJTJGY29tbWVudCUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJTVEFDSyUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMk5VJTIzLm1pcWNQJTJDUCUyQ1AyKTFPKWlUJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VodWUuMC5QaGlsaXBzX2h1ZS5TY2hsYWZ6aW1tZXIubGV2ZWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJtYXRoX2FyaXRobWV0aWMlMjIlMjBpZCUzRCUyMiF2eSUyQm8lNURzQVlBUUNzJTNCd3clNDAlMkZkJTYwJTIyJTIwaW5saW5lJTNEJTIyZmFsc2UlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUCUyMiUzRU1JTlVTJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDc2hhZG93JTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjIqTyU1RFN+cWIqJTI1JTJGJTQwZkF1bmslNjAlNDBvayUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTElM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyQ3F+bXRPdyF0JTQwLkpxMC0lNDB+JTJDVn4lMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VodWUuMC5QaGlsaXBzX2h1ZS5TY2hsYWZ6aW1tZXIubGV2ZWwlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDc2hhZG93JTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjJ3ajMuYWZNbi5CVCU3REolN0JtSlBNdjQlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UxJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbHNfaWYlMjIlMjBpZCUzRCUyMmd2SDg0JTdDeXNmS1MlMkIxcG8hJTdEJTQwRWglMjIlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJJRjAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19jb21wYXJlJTIyJTIwaWQlM0QlMjIlNDBncE4qc1ZvJTNEanFjKCUzQi4zUXJpeCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFR1QlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWUlMjIlMjBpZCUzRCUyMlZzWkhEQWd0RS5yMSU1QkFIU0xuSmklMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VodWUuMC5QaGlsaXBzX2h1ZS5TY2hsYWZ6aW1tZXIubGV2ZWwlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMmolM0FoJTIzWmgwTUk0ODRLSEo2JTQwS3lQJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyRE8wJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGltZW91dHNfc2V0dGltZW91dCUyMiUyMGlkJTNEJTIyJTNGSUppYVUlMjU4aEU1biUzRkolM0RZJTNGWVYwJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTkFNRSUyMiUzRXRpbWVvdXQzJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJERUxBWSUyMiUzRTElM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlVOSVQlMjIlM0VtaW4lM0MlMkZmaWVsZCUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJTVEFURU1FTlQlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJwcm9jZWR1cmVzX2NhbGxub3JldHVybiUyMiUyMGlkJTNEJTIyJTdERGglM0YlMkIlN0J1KiU1RCUyQlh5RGlXbCU3Q1UoWiUyMiUzRSUzQ211dGF0aW9uJTIwbmFtZSUzRCUyMmRpbW1lbjElMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGeG1sJTNF
            
            1 Reply Last reply Reply Quote 0
            • K
              knopers1 last edited by

              komme nicht so wirklich weiter….

              Hier mein Blockly: Habe echt keine Ahnung weshalb es nicht funktionieren mag. Sieht jemand von Euch einen Fehler?

              Möglicherweise stimmt etwas mit dem Timer nicht. Das EIN in drei Stuffen scheint zu laufen. Das AUS nicht so wirklich....

              Der Timer liefert ein "true". Wenn es die Zeit abzählt, kommt in Log ein false. Unter Objekt ID "Timer" sehe ich aber keine Änderung!

              Irgendwie hängst sich mein Blockly irgendwie auf, so mein Gefühl...
              1526_unbenannt1.png
              1526_unbenannt2.png
              1526_unbenannt3.png

              1 Reply Last reply Reply Quote 0
              • AlCalzone
                AlCalzone Developer last edited by

                @andyb:

                Danke, also so? `
                Das Blockly sieht gut aus, aber du hast keinen Auslöser, der den Prozess startet, oder?

                Im JS-Code ist noch ein etwas verlorener Trigger drin, der nix tut außer ne Endlosschleife starten.

                1 Reply Last reply Reply Quote 0
                • AlCalzone
                  AlCalzone Developer last edited by

                  @knopers1:

                  Möglicherweise stimmt etwas mit dem Timer nicht. Das EIN in drei Stuffen scheint zu laufen. Das AUS nicht so wirklich…. `
                  Fehlt da was? Ich sehe nichts, wo die Timer-Variable auf True gesetzt wird, um den AUS-Dimmer zu starten.

                  1 Reply Last reply Reply Quote 0
                  • A
                    andyb last edited by

                    Ist klar, es ging mir ja nur um das dimmen. Trigger und sonstige Kosmetik fehlt noch.

                    Danke

                    1 Reply Last reply Reply Quote 0
                    • K
                      knopers1 last edited by

                      @AlCalzone:

                      @knopers1:

                      Möglicherweise stimmt etwas mit dem Timer nicht. Das EIN in drei Stuffen scheint zu laufen. Das AUS nicht so wirklich…. Fehlt da was? Ich sehe nichts, wo die Timer-Variable auf True gesetzt wird, um den AUS-Dimmer zu starten.

                      Die Variable "Timer" setzt sich selbst auf "true" mit dem Blockly für "Timer". Zumindest sehe ich im Log ständig ein "true". Wenn ich es manuell setze, kommt in Log für 12000ms ein "false", danach wieder "true".

                      Mit dem Bewegungsmelder setze ich den Timer auf "false" damit er wieder die Zeit abzählt.

                      1 Reply Last reply Reply Quote 0
                      • AlCalzone
                        AlCalzone Developer last edited by

                        @knopers1:

                        Die Variable "Timer" setzt sich selbst auf "true" mit dem Blockly für "Timer" `
                        Hast du nicht gepostet, aber gut. Füge mal an allen Stellen, wo was abgefragt wird oder gesteuert wird nen Debug-Log ein, dass du nachvollziehen kannst was passiert und was davon funktioniert. Auf den ersten Blick sehe ich nämlich nicht, warum es nicht gehen sollte.

                        1 Reply Last reply Reply Quote 0
                        • K
                          knopers1 last edited by

                          Danke Dir vorerst…

                          Habe zwischendurch den Timer Blockly weggelassen und probiere zu Hause so etwas aus... Müsste an sich ohne den Blockly Timer funktionieren.
                          1526_unbenannt3.png

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          430
                          Online

                          31.7k
                          Users

                          79.8k
                          Topics

                          1.3m
                          Posts

                          5
                          24
                          3135
                          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