Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst] up/Down Dimmen über einen Taster

    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

    [gelöst] up/Down Dimmen über einen Taster

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

      Hallo zusammen,

      ich bastel gerade an einem Script, dass mir das Dimmen einer Lampe über gedrückten Taster (Homematic) ermöglichen soll.
      So lange der Taster gehalten wird, wird ein Datenpunkt immer wieder aktualisiert. Ich habe es soweit geschafft, dass dann auch hoch oder runter gedimmt wird.
      Jetzt möchte ich gerne noch, dass wenn der Taster losgelassen wird und erneut gedrückt wird die Richtung geändert wird.

      Hier ein Auszug aus meinem Script:

      function lichtfinn1dim() {
          
          if (down){
              setState(idLichtFinn1dim, getState(idLichtFinn1dim).val - 15);
          }
          
          else
          {
              setState(idLichtFinn1dim, getState(idLichtFinn1dim).val + 15);
          }
      };
      
      
      on({id: idTasterFinn + ".2.PRESS_CONT", change: "any"}, function (obj) {
          if(obj.state.val) {
              if(timerpause) clearTimeout(timerpause);
              timerdimm = setInterval(lichtfinn1dim, 200);
              }
              else { // Loslassen
              clearInterval(timerdimm);
              down = !down;
              timerpause = setTimeout(function() {down = !down}, 1000);
            }
         });
      

      Wenn ich jetzt drückt wird das licht Heller. Aber nach einem erneuten drücken wird es nicht dunkler. Hat jemand einen Tipp was ich machen kann ?

      Kann es sein, dass es daran liegt, dass der Datenpunkt immer auf true steht und nur aktualisiert wird?
      Dann ist bestimmt dieser Teil nicht korrekt:

      if(obj.state.val) {
      

      Vielen Dank

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

        @mctom Wenn die Variable down in mehreren Funktionen verwendet wird, muss sie global (außerhalb der Funktionen) deklariert werden oder der Wert muss an die aufgerufene Funktion übergeben werden.

        1 Reply Last reply Reply Quote 1
        • M
          mctom last edited by

          Hi, danke für deine Info.
          Die variable hab eich außerhalb deklariert. Hatte es nur nicht mir hier rein kopiert.

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

            @mctom Bevor wir rumrätseln, wie sich PRESS_CONT verhält, logge den Datenpunkt bei jeder Aktualisierung.

            on({id: idTasterFinn + ".2.PRESS_CONT"}, function (obj) {
               log('PRESS_CONT: ' + obj.state.val);
            });
            
            1 Reply Last reply Reply Quote 0
            • M
              mctom last edited by

              @paul53 sagte in Dimmen über ein Taster:

              on({id: idTasterFinn + ".2.PRESS_CONT"}, function (obj) { log('PRESS_CONT: ' + obj.state.val); });

              Danke für deine Hilfe.
              Hier das Log File:

              2019-03-30 07:45:36.901 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true
              2019-03-30 07:45:37.105 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true
              2019-03-30 07:45:37.368 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true
              2019-03-30 07:45:37.629 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true
              2019-03-30 07:45:37.872 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true
              2019-03-30 07:45:38.126 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true
              2019-03-30 07:45:38.411 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true
              2019-03-30 07:45:38.634 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true
              2019-03-30 07:45:38.871 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true
              2019-03-30 07:45:39.138 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true
              2019-03-30 07:45:39.385 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true
              2019-03-30 07:45:39.640 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true
              
              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @mctom last edited by paul53

                @mctom Das Log zeigt, dass während eines langen Tastendrucks alle ca. 250 ms eine Aktualisierung erfolgt und der Wert true bleibt. Damit ist eine Abfrage

                if(obj.state.val) { 
                

                sinnlos und man kann sich das Intervall sparen, denn das liefert der Datenpunkt.

                on({id: idTasterFinn + ".2.PRESS_CONT"}, function () {
                   lichtfinn1dim();
                   if(timerpause) clearTimeout(timerpause);
                   timerpause = setTimeout(function() {
                      down = !down;
                      timerpause = null;
                   }, 600);
                });
                
                1 Reply Last reply Reply Quote 0
                • M
                  mctom last edited by

                  Es funktioniert. Vielen Dank fūr deine Hilfe.

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

                    @mctom sagte:

                    Es funktioniert.

                    Dann markiere bitte das Thema als [gelöst].

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    890
                    Online

                    31.9k
                    Users

                    80.2k
                    Topics

                    1.3m
                    Posts

                    2
                    8
                    400
                    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