Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • 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. Hardware
  4. [Gelöst] Homematic IP Schaltaktor PRESS_CONT

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.5k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.6k

[Gelöst] Homematic IP Schaltaktor PRESS_CONT

Geplant Angeheftet Gesperrt Verschoben Hardware
homematic ipschaltaktorpresscont
8 Beiträge 2 Kommentatoren 720 Aufrufe 3 Watching
  • Ä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.
  • B Offline
    B Offline
    BoehserWolf
    schrieb am zuletzt editiert von BoehserWolf
    #1

    Kann mir jemand sagen ob es möglich ist PRESS_CONT eines Schaltaktors in iobroker zu bekommen ohne den Übertragungsmodus auf Standard umzuschalten?
    Falls es wichtig ist - es handelt sich um einen HmIP-BSM.

    B 1 Antwort Letzte Antwort
    0
    • B BoehserWolf

      Kann mir jemand sagen ob es möglich ist PRESS_CONT eines Schaltaktors in iobroker zu bekommen ohne den Übertragungsmodus auf Standard umzuschalten?
      Falls es wichtig ist - es handelt sich um einen HmIP-BSM.

      B Offline
      B Offline
      BoehserWolf
      schrieb am zuletzt editiert von
      #2

      @BoehserWolf Ich löse mal auf...

      PRESS_CONT, PRESS_LONG_RELEASE, usw. gibt es bei HmIP nicht - nur PRESS_SHORT und PRESS_LONG.

      Daher habe ich die entsprechende wiederholte PRESS_LONG Behandlung in einem Script in iobroker behandelt. Damit ist eine Direktverknüpfung leider nicht mehr möglich, aber ich konnte mein Vorhaben umsetzen. Was wirklich fehlt ist der Event PRESS_LONG_RELEASE aber es gibt für alles irgendwie eine Lösung ;)

      ScroungerS 1 Antwort Letzte Antwort
      0
      • B BoehserWolf

        @BoehserWolf Ich löse mal auf...

        PRESS_CONT, PRESS_LONG_RELEASE, usw. gibt es bei HmIP nicht - nur PRESS_SHORT und PRESS_LONG.

        Daher habe ich die entsprechende wiederholte PRESS_LONG Behandlung in einem Script in iobroker behandelt. Damit ist eine Direktverknüpfung leider nicht mehr möglich, aber ich konnte mein Vorhaben umsetzen. Was wirklich fehlt ist der Event PRESS_LONG_RELEASE aber es gibt für alles irgendwie eine Lösung ;)

        ScroungerS Offline
        ScroungerS Offline
        Scrounger
        Developer
        schrieb am zuletzt editiert von
        #3

        @boehserwolf
        Kannst du mir erklären wie du das gelöst hast.
        Vor allem wie bekommst du die wiederholte PRESS_LONG info in iob?

        <a href="https://github.com/Scrounger/ioBroker.linkeddevices">LinkedDevices Adapter</a>

        <a href="https://github.com/Scrounger/ioBroker.vis-materialdesign">Material Design Widgets</a>

        B 1 Antwort Letzte Antwort
        0
        • ScroungerS Scrounger

          @boehserwolf
          Kannst du mir erklären wie du das gelöst hast.
          Vor allem wie bekommst du die wiederholte PRESS_LONG info in iob?

          B Offline
          B Offline
          BoehserWolf
          schrieb am zuletzt editiert von BoehserWolf
          #4

          @scrounger
          Mein Use Case war ursprünglich wie folgt:

          • PRESS_SHORT oben -> Licht an
          • PRESS_SHORT unten -> Licht aus
          • PRESS_LONG oben -> HmIP-PS ein; schaltet einen PicorePlayer Client ein
          • PRESS_LONG unten -> HmIP-PS aus; schaltet einen PicorePlayer Client aus

          Da es keinen PRESS_LONG_RELEASE gibt, habe ich meinen Use Case etwas umdefiniert:

          • PRESS_SHORT oben -> Licht an
          • PRESS_SHORT unten -> Licht aus
          • PRESS_LONG oben -> HmIP-PS ein; schaltet einen PicorePlayer Client ein; ist der Player eingeschaltet, wird die Lautstärke schrittweise erhöht, bis der Schalter losgelassen wird
          • PRESS_LONG unten -> HmIP-PS aus; ist der Player eingeschaltet wird die Lautstärke schrittweise erniedrigt; ist die Lautstärke 0, wird der PicorePlayer Client per HMIP-PS ausgeschaltet

          Mit dieser Umsetzung sind ich und meine bessere Hälfte mittlerweile sehr zufrieden, sogar die Kinder kommen gut damit zurecht.

          Ob das nun 100% deinem Anwendungsfall entspricht, weiß ich nicht. Zur Inspiration meines Use Case meine Umsetzung:

          /* Handle binding of HM Switch.
          
             07.01.2021 - Initial version (BoW)
           */
          
          const myDebug = false;  // enable/disable debug output of script
          
          
          /*****************************************************************************
           * remote button objects/states (with 'Trigger' in its name)
           * and
           * bound button objects/states and values to set (with 'Target' in its name)
           ****************************************************************************/
          
          /***** PCP  aus/leiser *****/
          /* src */ const btn01LongTriggerState                = 'hm-rpc.0.nnn1.1.PRESS_LONG';
          /* dst */ const btn01LongTargetStateSwitch           = 'hm-rpc.0.nnn2.3.STATE';
          /* val */ const btn01LongTargetValueSwitch           = false;
          /* ign */ const btn01LongIgnCurrState                = false;
          
          /***** PCP an/lauter *****/
          /* src */ const btn02LongTriggerState                = 'hm-rpc.0.nnn1.2.PRESS_LONG';
          /* dst */ const btn02LongTargetStateSwitch           = 'hm-rpc.0.nnn2.3.STATE';
          /* val */ const btn02LongTargetValueSwitch           = true;
          /* ign */ const btn02LongIgnCurrState                = false;
          
          /***** PCP specific settings *****/
          /* dst */ const btn0102LongTargetStatePlayer              = 'squeezeboxrpc.0.Players.MeinPlayer';
          /* val */ const btn0102LongTargetValuePlayerVolumeStep    = 2;
          /* val */ const btn0102LongTargetValuePlayerVolumeInitial = 8;
          
          
          /*****************************************************************************
           * establish bindings
           ****************************************************************************/
          
          on({id: btn01LongTriggerState, change: 'any'}, function(obj) {
              if (myDebug)    log("01/L");
          
              let btnCurrentState = getState(btn01LongTargetStateSwitch).val;
              let playerPower = getState(btn0102LongTargetStatePlayer + ".Power").val;
              let playerConnected = getState(btn0102LongTargetStatePlayer + ".Connected").val;  // not really reliable / 20210107 BoW
              let playerVolumeVal = getState(btn0102LongTargetStatePlayer + ".Volume").val;
              if (! btnCurrentState || ! playerPower || ! playerConnected) {
                  if (myDebug)    log("player off or disconnected, nothing to do");    
                  
                  return;
              } else {
                  if (myDebug) {
                      log("player connected, volume: " + playerVolumeVal + 
                      ", decreasing by: " + btn0102LongTargetValuePlayerVolumeStep);
                  }
          
                  if(playerVolumeVal != null) {
                      if (playerVolumeVal > 0) {
                          let newPlayerVolumeVal = playerVolumeVal - btn0102LongTargetValuePlayerVolumeStep;
                          if (newPlayerVolumeVal < 0)   newPlayerVolumeVal = 0;
                          setState(btn0102LongTargetStatePlayer + ".Volume", newPlayerVolumeVal);
                      } else {
                          if (myDebug)    log("player volume=0, switching off");
          
                          btnSetState('01', 'long', btn01LongTriggerState, btn01LongTargetStateSwitch, btn01LongTargetValueSwitch, btn01LongIgnCurrState);
                      }
                  }
              }
          });
          
          on({id: btn02LongTriggerState, change: 'any'}, function(obj) {
              if (myDebug)    log("02/L");
          
              let btnCurrentState = getState(btn02LongTargetStateSwitch).val;
              let playerPower = getState(btn0102LongTargetStatePlayer + ".Power").val;
              let playerConnected = getState(btn0102LongTargetStatePlayer + ".Connected").val;  // not really reliable / 20210107 BoW
              let playerVolumeVal = getState(btn0102LongTargetStatePlayer + ".Volume").val;
              if (! btnCurrentState || ! playerPower || ! playerConnected) {
                  if (myDebug)    log("player off or disconnected, switching on");
          
                  btnSetState('02', 'long', btn02LongTriggerState, btn02LongTargetStateSwitch, btn02LongTargetValueSwitch, btn02LongIgnCurrState);
              } else {
                  if (myDebug) {
                      log("player connected, volume: " + playerVolumeVal + 
                      ", inreasing by: " + btn0102LongTargetValuePlayerVolumeStep);
                  }
          
                  if(playerVolumeVal != null) {
                      let newPlayerVolumeVal = playerVolumeVal + btn0102LongTargetValuePlayerVolumeStep;
                      if (newPlayerVolumeVal > 100)   newPlayerVolumeVal = 100;
                      setState(btn0102LongTargetStatePlayer + ".Volume", newPlayerVolumeVal);
                  }
              }
          });
          
          // workaround for stable volume after switching on
          on({id: btn0102LongTargetStatePlayer + ".Power", change: 'ne'}, function(obj) {
              let playerPower = getState(btn0102LongTargetStatePlayer + ".Power").val;
              let playerVolumeVal = getState(btn0102LongTargetStatePlayer + ".Volume").val;
              
              if (myDebug) {
                  log(btn0102LongTargetStatePlayer + 
                  " Power:" + playerPower + 
                  ", Volume: " + playerVolumeVal);
              }
          
              // turned on -> set to initial value
              if (playerPower === 1) {
                  if (myDebug) {
                      log(btn0102LongTargetStatePlayer + 
                      " Power==1 -> setting initial volume value:" + 
                      btn0102LongTargetValuePlayerVolumeInitial);
                  }
          
                  setState(btn0102LongTargetStatePlayer + ".Volume", btn0102LongTargetValuePlayerVolumeInitial);
              }
          });
          
          
          /*****************************************************************************
           * helper functions
           ****************************************************************************/
          
          // Set state for button.
          // btnNo - number of button as string
          // btnPressType - type of press (short/long) as string
          // btnTriggerState - triggered state from button (source state)
          // btnTargetState - target state to set (destination state)
          // btnTargetValue - target value to set (destination value)
          // btnIgnCurrentState - true/false; ignore current state and set anyway;
          //                      necessary if state is a combined state and shall be set in anyway
          function btnSetState(btnNo, btnPressType, 
              btnTriggerState, btnTargetState, btnTargetValue, btnIgnCurrentState) {
              
              if (! btnTargetState || btnTargetValue == null) {
                  log('btn ' + btnNo + ' ' + btnPressType 
                      + ': null -> state="' + btnTargetState + '", value="' + btnTargetValue + '"', 'error');
                  
                  return;
              }
          
              let btnCurrentState = getState(btnTargetState).val;
          
              if (myDebug) {
                  log('btn ' + btnNo + ' ' + btnPressType 
                      + ': current="' + btnCurrentState + '", new="' + btnTargetValue + '"');
              }
          
              if (btnIgnCurrentState || btnCurrentState != btnTargetValue) {
                  if (myDebug) {
                      log('btn ' + btnNo + ' ' + btnPressType 
                          + ': setting "' + btnTargetState + '" = "' + btnTargetValue + '"');
                  }
                  setState(btnTargetState, btnTargetValue);
              }
          }
          

          Nachtrag:
          Der PRESS_LONG muss einmalig in der CCU freigeschaltet werden, z.B. so:

          const channel = 'xxx:1';  // edit here
          const hmRpcInstance = 'hm-rpc.0';
          //const dpShort = 'PRESS_SHORT';  // activate or deactivate
          const dpLong  = 'PRESS_LONG';   // activate or deactivate
          
          if (typeof dpShort !== 'undefined') {
              sendTo(hmRpcInstance, 'reportValueUsage', {
                  ID: channel, 
                  paramType: dpShort, 
                  params: 1}, 
                  res => {
                      log(JSON.stringify(res));
                  }
              );
          }
          
          if (typeof dpLong !== 'undefined') {
              sendTo(hmRpcInstance, 'reportValueUsage', {
                  ID: channel, 
                  paramType: dpLong, 
                  params: 1}, 
                  res => {
                      log(JSON.stringify(res));
                  }
              );
          }
          
          ScroungerS 1 Antwort Letzte Antwort
          1
          • B BoehserWolf

            @scrounger
            Mein Use Case war ursprünglich wie folgt:

            • PRESS_SHORT oben -> Licht an
            • PRESS_SHORT unten -> Licht aus
            • PRESS_LONG oben -> HmIP-PS ein; schaltet einen PicorePlayer Client ein
            • PRESS_LONG unten -> HmIP-PS aus; schaltet einen PicorePlayer Client aus

            Da es keinen PRESS_LONG_RELEASE gibt, habe ich meinen Use Case etwas umdefiniert:

            • PRESS_SHORT oben -> Licht an
            • PRESS_SHORT unten -> Licht aus
            • PRESS_LONG oben -> HmIP-PS ein; schaltet einen PicorePlayer Client ein; ist der Player eingeschaltet, wird die Lautstärke schrittweise erhöht, bis der Schalter losgelassen wird
            • PRESS_LONG unten -> HmIP-PS aus; ist der Player eingeschaltet wird die Lautstärke schrittweise erniedrigt; ist die Lautstärke 0, wird der PicorePlayer Client per HMIP-PS ausgeschaltet

            Mit dieser Umsetzung sind ich und meine bessere Hälfte mittlerweile sehr zufrieden, sogar die Kinder kommen gut damit zurecht.

            Ob das nun 100% deinem Anwendungsfall entspricht, weiß ich nicht. Zur Inspiration meines Use Case meine Umsetzung:

            /* Handle binding of HM Switch.
            
               07.01.2021 - Initial version (BoW)
             */
            
            const myDebug = false;  // enable/disable debug output of script
            
            
            /*****************************************************************************
             * remote button objects/states (with 'Trigger' in its name)
             * and
             * bound button objects/states and values to set (with 'Target' in its name)
             ****************************************************************************/
            
            /***** PCP  aus/leiser *****/
            /* src */ const btn01LongTriggerState                = 'hm-rpc.0.nnn1.1.PRESS_LONG';
            /* dst */ const btn01LongTargetStateSwitch           = 'hm-rpc.0.nnn2.3.STATE';
            /* val */ const btn01LongTargetValueSwitch           = false;
            /* ign */ const btn01LongIgnCurrState                = false;
            
            /***** PCP an/lauter *****/
            /* src */ const btn02LongTriggerState                = 'hm-rpc.0.nnn1.2.PRESS_LONG';
            /* dst */ const btn02LongTargetStateSwitch           = 'hm-rpc.0.nnn2.3.STATE';
            /* val */ const btn02LongTargetValueSwitch           = true;
            /* ign */ const btn02LongIgnCurrState                = false;
            
            /***** PCP specific settings *****/
            /* dst */ const btn0102LongTargetStatePlayer              = 'squeezeboxrpc.0.Players.MeinPlayer';
            /* val */ const btn0102LongTargetValuePlayerVolumeStep    = 2;
            /* val */ const btn0102LongTargetValuePlayerVolumeInitial = 8;
            
            
            /*****************************************************************************
             * establish bindings
             ****************************************************************************/
            
            on({id: btn01LongTriggerState, change: 'any'}, function(obj) {
                if (myDebug)    log("01/L");
            
                let btnCurrentState = getState(btn01LongTargetStateSwitch).val;
                let playerPower = getState(btn0102LongTargetStatePlayer + ".Power").val;
                let playerConnected = getState(btn0102LongTargetStatePlayer + ".Connected").val;  // not really reliable / 20210107 BoW
                let playerVolumeVal = getState(btn0102LongTargetStatePlayer + ".Volume").val;
                if (! btnCurrentState || ! playerPower || ! playerConnected) {
                    if (myDebug)    log("player off or disconnected, nothing to do");    
                    
                    return;
                } else {
                    if (myDebug) {
                        log("player connected, volume: " + playerVolumeVal + 
                        ", decreasing by: " + btn0102LongTargetValuePlayerVolumeStep);
                    }
            
                    if(playerVolumeVal != null) {
                        if (playerVolumeVal > 0) {
                            let newPlayerVolumeVal = playerVolumeVal - btn0102LongTargetValuePlayerVolumeStep;
                            if (newPlayerVolumeVal < 0)   newPlayerVolumeVal = 0;
                            setState(btn0102LongTargetStatePlayer + ".Volume", newPlayerVolumeVal);
                        } else {
                            if (myDebug)    log("player volume=0, switching off");
            
                            btnSetState('01', 'long', btn01LongTriggerState, btn01LongTargetStateSwitch, btn01LongTargetValueSwitch, btn01LongIgnCurrState);
                        }
                    }
                }
            });
            
            on({id: btn02LongTriggerState, change: 'any'}, function(obj) {
                if (myDebug)    log("02/L");
            
                let btnCurrentState = getState(btn02LongTargetStateSwitch).val;
                let playerPower = getState(btn0102LongTargetStatePlayer + ".Power").val;
                let playerConnected = getState(btn0102LongTargetStatePlayer + ".Connected").val;  // not really reliable / 20210107 BoW
                let playerVolumeVal = getState(btn0102LongTargetStatePlayer + ".Volume").val;
                if (! btnCurrentState || ! playerPower || ! playerConnected) {
                    if (myDebug)    log("player off or disconnected, switching on");
            
                    btnSetState('02', 'long', btn02LongTriggerState, btn02LongTargetStateSwitch, btn02LongTargetValueSwitch, btn02LongIgnCurrState);
                } else {
                    if (myDebug) {
                        log("player connected, volume: " + playerVolumeVal + 
                        ", inreasing by: " + btn0102LongTargetValuePlayerVolumeStep);
                    }
            
                    if(playerVolumeVal != null) {
                        let newPlayerVolumeVal = playerVolumeVal + btn0102LongTargetValuePlayerVolumeStep;
                        if (newPlayerVolumeVal > 100)   newPlayerVolumeVal = 100;
                        setState(btn0102LongTargetStatePlayer + ".Volume", newPlayerVolumeVal);
                    }
                }
            });
            
            // workaround for stable volume after switching on
            on({id: btn0102LongTargetStatePlayer + ".Power", change: 'ne'}, function(obj) {
                let playerPower = getState(btn0102LongTargetStatePlayer + ".Power").val;
                let playerVolumeVal = getState(btn0102LongTargetStatePlayer + ".Volume").val;
                
                if (myDebug) {
                    log(btn0102LongTargetStatePlayer + 
                    " Power:" + playerPower + 
                    ", Volume: " + playerVolumeVal);
                }
            
                // turned on -> set to initial value
                if (playerPower === 1) {
                    if (myDebug) {
                        log(btn0102LongTargetStatePlayer + 
                        " Power==1 -> setting initial volume value:" + 
                        btn0102LongTargetValuePlayerVolumeInitial);
                    }
            
                    setState(btn0102LongTargetStatePlayer + ".Volume", btn0102LongTargetValuePlayerVolumeInitial);
                }
            });
            
            
            /*****************************************************************************
             * helper functions
             ****************************************************************************/
            
            // Set state for button.
            // btnNo - number of button as string
            // btnPressType - type of press (short/long) as string
            // btnTriggerState - triggered state from button (source state)
            // btnTargetState - target state to set (destination state)
            // btnTargetValue - target value to set (destination value)
            // btnIgnCurrentState - true/false; ignore current state and set anyway;
            //                      necessary if state is a combined state and shall be set in anyway
            function btnSetState(btnNo, btnPressType, 
                btnTriggerState, btnTargetState, btnTargetValue, btnIgnCurrentState) {
                
                if (! btnTargetState || btnTargetValue == null) {
                    log('btn ' + btnNo + ' ' + btnPressType 
                        + ': null -> state="' + btnTargetState + '", value="' + btnTargetValue + '"', 'error');
                    
                    return;
                }
            
                let btnCurrentState = getState(btnTargetState).val;
            
                if (myDebug) {
                    log('btn ' + btnNo + ' ' + btnPressType 
                        + ': current="' + btnCurrentState + '", new="' + btnTargetValue + '"');
                }
            
                if (btnIgnCurrentState || btnCurrentState != btnTargetValue) {
                    if (myDebug) {
                        log('btn ' + btnNo + ' ' + btnPressType 
                            + ': setting "' + btnTargetState + '" = "' + btnTargetValue + '"');
                    }
                    setState(btnTargetState, btnTargetValue);
                }
            }
            

            Nachtrag:
            Der PRESS_LONG muss einmalig in der CCU freigeschaltet werden, z.B. so:

            const channel = 'xxx:1';  // edit here
            const hmRpcInstance = 'hm-rpc.0';
            //const dpShort = 'PRESS_SHORT';  // activate or deactivate
            const dpLong  = 'PRESS_LONG';   // activate or deactivate
            
            if (typeof dpShort !== 'undefined') {
                sendTo(hmRpcInstance, 'reportValueUsage', {
                    ID: channel, 
                    paramType: dpShort, 
                    params: 1}, 
                    res => {
                        log(JSON.stringify(res));
                    }
                );
            }
            
            if (typeof dpLong !== 'undefined') {
                sendTo(hmRpcInstance, 'reportValueUsage', {
                    ID: channel, 
                    paramType: dpLong, 
                    params: 1}, 
                    res => {
                        log(JSON.stringify(res));
                    }
                );
            }
            
            ScroungerS Offline
            ScroungerS Offline
            Scrounger
            Developer
            schrieb am zuletzt editiert von
            #5

            @boehserwolf

            Erstmal vielen Dank für deine ausführlich Antwort.

            Problem bei mir ist, dass beim PRESS_LONG der Zeitstempel nur einmalig aktualisiert wird, d.h. ich bekomme nur mit das der PRESS_LONG gedrückt wurde, aber nicht gehalten wird. Beim halten müsste dieser ja im ms takt den Zeitstempel aktualisieren.

            @boehserwolf sagte in [Gelöst] Homematic IP Schaltaktor PRESS_CONT:

            Nachtrag:
            Der PRESS_LONG muss einmalig in der CCU freigeschaltet werden, z.B. so:

            if (typeof dpLong !== 'undefined') {
                sendTo(hmRpcInstance, 'reportValueUsage', {
                    ID: channel, 
                    paramType: dpLong, 
                    params: 1}, 
                    res => {
                        log(JSON.stringify(res));
                    }
                );
            }
            

            Das hab ich auch so umgesetzt.
            Kannst du mir mal deine Geräte Einstellung des Schalters bitte zeigen. Hab den Verdacht das das mit den Statusmitteilungen irgendwie zusammen hängt.

            <a href="https://github.com/Scrounger/ioBroker.linkeddevices">LinkedDevices Adapter</a>

            <a href="https://github.com/Scrounger/ioBroker.vis-materialdesign">Material Design Widgets</a>

            B 1 Antwort Letzte Antwort
            0
            • ScroungerS Scrounger

              @boehserwolf

              Erstmal vielen Dank für deine ausführlich Antwort.

              Problem bei mir ist, dass beim PRESS_LONG der Zeitstempel nur einmalig aktualisiert wird, d.h. ich bekomme nur mit das der PRESS_LONG gedrückt wurde, aber nicht gehalten wird. Beim halten müsste dieser ja im ms takt den Zeitstempel aktualisieren.

              @boehserwolf sagte in [Gelöst] Homematic IP Schaltaktor PRESS_CONT:

              Nachtrag:
              Der PRESS_LONG muss einmalig in der CCU freigeschaltet werden, z.B. so:

              if (typeof dpLong !== 'undefined') {
                  sendTo(hmRpcInstance, 'reportValueUsage', {
                      ID: channel, 
                      paramType: dpLong, 
                      params: 1}, 
                      res => {
                          log(JSON.stringify(res));
                      }
                  );
              }
              

              Das hab ich auch so umgesetzt.
              Kannst du mir mal deine Geräte Einstellung des Schalters bitte zeigen. Hab den Verdacht das das mit den Statusmitteilungen irgendwie zusammen hängt.

              B Offline
              B Offline
              BoehserWolf
              schrieb am zuletzt editiert von
              #6

              @scrounger
              Das mit dem Zeitstempel habe ich mir tatsächlich nie näher angesehen da es problemlos so funktioniert. Kann sein, müsste ich bei Bedarf mal prüfen...

              Der Schalter ist in den Einstellungen ziemlich basic:
              130c03b8-e08d-4969-bc0b-7c6d79e33b45-grafik.png8f579109-d87e-4750-af33-1f663cf28280-grafik.png000cd8b5-4573-4565-a7ca-c0de99920ce6-grafik.png

              Und die zugehörigen Direktverknüpfungen. Wichtig ist hier im PRESS_SHORT den langen Tastendruck zu deaktivieren, da sonst das Licht ebenfalls bei PRESS_LONG mit reagiert.
              Licht aus:
              5648e171-0ee3-44da-8fdc-834561d9f753-grafik.png

              Licht an:
              9c9f4b32-7cc3-4023-abc4-de13fcbf887f-grafik.png

              ScroungerS 1 Antwort Letzte Antwort
              1
              • B BoehserWolf

                @scrounger
                Das mit dem Zeitstempel habe ich mir tatsächlich nie näher angesehen da es problemlos so funktioniert. Kann sein, müsste ich bei Bedarf mal prüfen...

                Der Schalter ist in den Einstellungen ziemlich basic:
                130c03b8-e08d-4969-bc0b-7c6d79e33b45-grafik.png8f579109-d87e-4750-af33-1f663cf28280-grafik.png000cd8b5-4573-4565-a7ca-c0de99920ce6-grafik.png

                Und die zugehörigen Direktverknüpfungen. Wichtig ist hier im PRESS_SHORT den langen Tastendruck zu deaktivieren, da sonst das Licht ebenfalls bei PRESS_LONG mit reagiert.
                Licht aus:
                5648e171-0ee3-44da-8fdc-834561d9f753-grafik.png

                Licht an:
                9c9f4b32-7cc3-4023-abc4-de13fcbf887f-grafik.png

                ScroungerS Offline
                ScroungerS Offline
                Scrounger
                Developer
                schrieb am zuletzt editiert von
                #7

                @boehserwolf

                Verursacher gefunden :-)
                hatte bei mir Timeout für langen Tastendruck auf fd1ac7ab-5129-4ae7-a300-0d03b065421c-grafik.png

                nach dem ich das geändert habe
                81bd0859-25b6-49a6-874e-46585ea1029a-grafik.png

                kommt auch brav die wiederholende Meldung für PRESS_LONG:
                cd906e74-c7ce-45d6-9d29-03f1a5794118-grafik.png

                Vielen Dank für deine Unterstützung, ohne wäre ich wohl nicht drauf gekommen :+1:

                <a href="https://github.com/Scrounger/ioBroker.linkeddevices">LinkedDevices Adapter</a>

                <a href="https://github.com/Scrounger/ioBroker.vis-materialdesign">Material Design Widgets</a>

                B 1 Antwort Letzte Antwort
                0
                • ScroungerS Scrounger

                  @boehserwolf

                  Verursacher gefunden :-)
                  hatte bei mir Timeout für langen Tastendruck auf fd1ac7ab-5129-4ae7-a300-0d03b065421c-grafik.png

                  nach dem ich das geändert habe
                  81bd0859-25b6-49a6-874e-46585ea1029a-grafik.png

                  kommt auch brav die wiederholende Meldung für PRESS_LONG:
                  cd906e74-c7ce-45d6-9d29-03f1a5794118-grafik.png

                  Vielen Dank für deine Unterstützung, ohne wäre ich wohl nicht drauf gekommen :+1:

                  B Offline
                  B Offline
                  BoehserWolf
                  schrieb am zuletzt editiert von
                  #8

                  @scrounger Immer gerne ;)

                  1 Antwort Letzte Antwort
                  0
                  Antworten
                  • In einem neuen Thema antworten
                  Anmelden zum Antworten
                  • Älteste zuerst
                  • Neuste zuerst
                  • Meiste Stimmen


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  748

                  Online

                  32.4k

                  Benutzer

                  81.4k

                  Themen

                  1.3m

                  Beiträge
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                  ioBroker Community 2014-2025
                  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