NEWS
HM-RPC Tasterschnittstelle HM-PBI-4-FM langer Tastendruck
-
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:
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!
-
@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)); });
-
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?
-
@gammler2003 sagte:
"press_long" und "press_short" keine Zeitstempel
Wechsle mal im Tab "Objekte" in die Statusansicht (5. Button oben).
-
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.
-
@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.
-
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
-
@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. -
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?
-
@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. -
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!
-
@gammler2003 sagte:
HmIP-FCI1 kann ich in den Objekten die Trigger "PRESS_LONG" und "PRESS_SHORT" auslesen
HmIP-Taster funktionieren anders als HM-Taster.
-
@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.
-
@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.
-
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 ); });
-
@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); });