Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. HM-RPC Tasterschnittstelle HM-PBI-4-FM langer Tastendruck

    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

    HM-RPC Tasterschnittstelle HM-PBI-4-FM langer Tastendruck

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

      Hallo zusammen,

      die HM-PBI-4-FM ist mein erstes Homematic Gerät (bisher nur HM IP), welche ich über ioBroker verwalten möchte.

      Anlernen über die CCU funktioniert und den Taster sehe ich auch in den Objekten des ioBroker:

      Bildschirmfoto 2020-07-02 um 19.08.46.png

      Den einfacher Tasterdruck auf Kanal 1 sehe ich über ein "true" im Parameter "Install_Test"; der Wert in "Press_Long_Release" bleibt jedoch immer auf false.

      Meiner Frage daher - hat es bereits jemand geschafft, den HM-PBI-4-FM sauber über ioBroker einzubinden und sowohl lange als auch kurze Tasterbetätigungen auszulesen?
      Muss ich evtl. bei der Konfiguration der Instanz für HM (ohne IP) irgendetwas beachten?

      Vielen Dank für eure Hilfe!

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

        @gammler2003 sagte:

        hat es bereits jemand geschafft, den HM-PBI-4-FM sauber über ioBroker einzubinden und sowohl lange als auch kurze Tasterbetätigungen auszulesen?

        Ja, einen ähnlichen Taster: siehe hier. Wird der Zeitstempel von PRESS_SHORT aktualisiert, wenn die Taste kurz gedrückt wird ? Falls nicht, sollte sich die Taste eines Kanals über das folgende Script aktivieren lassen.

        const inst = 'hm-rpc.0';
        const channel = 'XEQ1234567:1';
        const dp = 'PRESS_SHORT';
         
        sendTo(inst, 'reportValueUsage', {ID: channel, paramType: dp, params: 1}, res => {
            log(JSON.stringify(res));
        });
        
        1 Reply Last reply Reply Quote 0
        • G
          gammler2003 last edited by gammler2003

          Vielen Dank für deine schnelle Rückmeldung.
          Was genau meinst du mit Zeitstempel? In meinen Objekten sehe ich unter "Press_Short" lediglich einen Button zum triggern.

          Das Script habe ich ausgeführt. Es führt zu folgendem Ergebnis:

          hm-rpc.0	2020-07-02 19:47:42.884	warn	(9369) xmlrpc <- undefined method updateDevice with parameters ["hm-rpc.0","QEQ1859022:1",1]
          javascript.0	2020-07-02 19:47:42.883	info	(1994) script.js.Entwicklung.hmte: {"result":false,"error":null}
          

          Wie im verlinkten Thread beschrieben habe ich den Taster von "gesichert" auf "standard" umgestellt.

          Drücke ich jetzt eine Taste, reagieren je nach Dauer des Drucks die bool Werte bei "Install_Test" und wenn ich länger drücke auch "Press_Cont" und beim Loslassen "Press_Long_Release".

          Damit kann ich fast schon arbeiten, vielen Dank 🙂 Jetzt wäre es noch klasse, wenn ich Zeitstempel für die Tastendrücke hätte. Sprich warum werden unter "press_long" und "press_short" keine Zeitstempel sondern diese Trigger angezeigt? Bekomme ich das noch geändert?

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

            @gammler2003 sagte:

            "press_long" und "press_short" keine Zeitstempel

            Wechsle mal im Tab "Objekte" in die Statusansicht (5. Button oben).

            1 Reply Last reply Reply Quote 0
            • G
              gammler2003 last edited by gammler2003

              Ja wahnsinn...wieder etwas gelernt. Vielen Dank! Zeitstempel aktualisieren sich.

              Aber welchen Wert nutze ich denn jetzt am schlausten als Trigger für lange/kurze Tastendrücke? Klar ich kann auf "press_long"/"press_short" abfragen und erhalte bei Druck ein true zurück - aber ein Zeitstempel wäre schon schicker, da ich prüfen kann ob der alte Wert ungleich dem neuen Wert ist, sprich ob es tatsächlich einen erneuten Tastendruck gab.

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

                @gammler2003 sagte:

                Trigger für lange/kurze Tastendrücke?

                Ein Trigger, der keine Wertänderung voraussetzt, triggert bei Aktualisierung des Zeitstempels:

                on({id: 'xxx.PRESS_SHORT'}, function() {});
                // oder
                on({id: 'xxx.PRESS_SHORT', val: true}, function() {});
                

                Der Zeitstempel wird nur bei Tastendruck aktualisiert.

                1 Reply Last reply Reply Quote 0
                • G
                  gammler2003 last edited by gammler2003

                  Du hast mir wirklich sehr geholfen - herzlichen Dank.
                  Nur mal noch so aus Neugier, in wiefern unterscheiden sich diese beiden Varianten?

                  Die Hilfe aus dem Forum ist allgemein sehr wertvoll und ich würde mich gerne revanchieren - weiß nur noch nicht genau wie 🙂

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

                    @gammler2003 sagte:

                    in wiefern unterscheiden sich diese beiden Varianten?

                    Bezogen auf den HM-Taster: In der Wirkung kein Unterschied.
                    Ansonsten: Im ersten Fall wird bei jeder Zustandsänderung getriggert, im 2. Fall nur, wenn der Wert true ist.

                    1 Reply Last reply Reply Quote 0
                    • G
                      gammler2003 last edited by

                      Prima, vielen Dank dir.

                      Ich habe festgestellt, dass der Trigger "Press_Cont" bei gedrückter Taste so häufig triggert, dass mein Hue-Adapter bzw. die Bridge nicht mitkommt und so das Dimmen nicht zuverlässig funktioniert.

                      Gibt es die Möglichkeit, den Trigger

                      on({id: 'xxx.PRESS_SHORT', val: true}, function() {});
                      
                      

                      so zu erweitern, dass er beispielsweise pro Sekunde nur einmal triggert oder auch nur bei jedem 5. Trigger tatsächlich auslöst?

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

                        @gammler2003 sagte:

                        Trigger "Press_Cont" bei gedrückter Taste so häufig triggert

                        Ja, er triggert alle 250 ms.

                        @gammler2003 sagte in HM-RPC Tasterschnittstelle HM-PBI-4-FM langer Tastendruck:

                        pro Sekunde nur einmal triggert oder auch nur bei jedem 5. Trigger tatsächlich auslöst?

                        Das ist nicht möglich. Aber man kann eine Zähl-Variable verwenden, mit der nur bei jedem 4. Trigger-Ereignis der Dimm-Wert verändert wird.
                        Alternative: Intervall, das mit PRESS_LONG gestartet und mit PRESS_LONG_RELEASE gestoppt wird.

                        1 Reply Last reply Reply Quote 0
                        • G
                          gammler2003 last edited by

                          Hallo zusammen,

                          anderes HM-Gerät - ähnliche Problematik.

                          Bei meinem neuen HmIP-FCI1 kann ich in den Objekten die Trigger "PRESS_LONG" und "PRESS_SHORT" auslesen. Kann das Gerät auch, analog dem HM-PBI-4-FM", die Trigger "PRESS_LONG_RELEASE" und "PRESS_CONT" auslesen? Falls ja, wie bringe ich es dazu 😉

                          Vielen Dank euch vorab!

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

                            @gammler2003 sagte:

                            HmIP-FCI1 kann ich in den Objekten die Trigger "PRESS_LONG" und "PRESS_SHORT" auslesen

                            HmIP-Taster funktionieren anders als HM-Taster.

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

                              @paul53 genial, danke!

                              Hast du zufällig eine Idee, wie ich den Press_Long_Release erzeugen/simulieren kann? Das habe ich an meinem HM-Taster genutzt, um die Dimmrichtung (heller/dunkler) zu ändern.

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

                                @gammler2003 sagte:

                                Press_Long_Release erzeugen/simulieren kann?

                                Timeout von 300...400 ms, der vorher bei jedem Trigger-Ereignis gestoppt wird. Wenn der Timer dann abläuft, ist PRESS_LONG_RELEASED erreicht.

                                1 Reply Last reply Reply Quote 0
                                • G
                                  gammler2003 last edited by

                                  Klingt logisch, aber so ganz bekomme ich es von der Reihenfolge nicht hin. Vielleicht verstehe ich dann die Timer endlich mal 😉

                                  on({id: '<<trigger>>"}, function() {
                                  
                                  clearTimeout(timer);
                                  
                                  var timer = setTimeout (
                                     function () {
                                       console.log("Feuer");
                                     }, 
                                     400
                                  );
                                  });
                                  
                                  paul53 1 Reply Last reply Reply Quote 0
                                  • paul53
                                    paul53 @gammler2003 last edited by

                                    @gammler2003
                                    Deklariere die Timer-Variable mal global.

                                    const trigger = '...PRESS_LONG';
                                    var timer = null;
                                    
                                    on({id: trigger}, function() {
                                       clearTimeout(timer);
                                       timer = setTimeout (function () {
                                          log("Feuer");
                                       }, 400);
                                    });
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • First post
                                      Last post

                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    664
                                    Online

                                    31.9k
                                    Users

                                    80.2k
                                    Topics

                                    1.3m
                                    Posts

                                    hm-pbi-4-fm hm-rpc
                                    2
                                    16
                                    761
                                    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