Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst] up/Down Dimmen über einen Taster

NEWS

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    13
    1
    1.5k

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    2.3k

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    11
    1
    1.1k

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

Geplant Angeheftet Gesperrt Verschoben JavaScript
8 Beiträge 2 Kommentatoren 696 Aufrufe 5 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M Offline
    M Offline
    mctom
    schrieb am zuletzt editiert von mctom
    #1

    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

    paul53P 1 Antwort Letzte Antwort
    0
    • M 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

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      @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.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

      1 Antwort Letzte Antwort
      1
      • M Offline
        M Offline
        mctom
        schrieb am zuletzt editiert von
        #3

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

        paul53P 1 Antwort Letzte Antwort
        0
        • M mctom

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

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #4

          @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);
          });
          

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

          1 Antwort Letzte Antwort
          0
          • M Offline
            M Offline
            mctom
            schrieb am zuletzt editiert von
            #5

            @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
            
            paul53P 1 Antwort Letzte Antwort
            0
            • M mctom

              @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
              
              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von paul53
              #6

              @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);
              });
              

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

              1 Antwort Letzte Antwort
              0
              • M Offline
                M Offline
                mctom
                schrieb am zuletzt editiert von
                #7

                Es funktioniert. Vielen Dank fūr deine Hilfe.

                paul53P 1 Antwort Letzte Antwort
                0
                • M mctom

                  Es funktioniert. Vielen Dank fūr deine Hilfe.

                  paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #8

                  @mctom sagte:

                  Es funktioniert.

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

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

                  1 Antwort Letzte Antwort
                  0

                  Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                  Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                  Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                  Registrieren Anmelden
                  Antworten
                  • In einem neuen Thema antworten
                  Anmelden zum Antworten
                  • Älteste zuerst
                  • Neuste zuerst
                  • Meiste Stimmen


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  596

                  Online

                  32.9k

                  Benutzer

                  83.2k

                  Themen

                  1.3m

                  Beiträge
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                  ioBroker Community 2014-2026
                  logo
                  • Anmelden

                  • Du hast noch kein Konto? Registrieren

                  • Anmelden oder registrieren, um zu suchen
                  • Erster Beitrag
                    Letzter Beitrag
                  0
                  • Home
                  • Aktuell
                  • Tags
                  • Ungelesen 0
                  • Kategorien
                  • Unreplied
                  • Beliebt
                  • GitHub
                  • Docu
                  • Hilfe