2021-07-02 Homematic IP Node-RED Doppelklick

Homematic IP Wanttaster. Batteriebetrieben an Nachtkästchen montiert.

Mit einer Taste bis zu vier unterschiedliche Befehle senden.

Für meine Hausautomatisation verwende ich eine ⎇Homematic IP CCU3 und programmiere diese mit ⎇Node-RED bzw. ⎇RedMatic.

Wie vermutlich bekannt, verfügen Tasten bei Homematic, egal ob bei Fernbedienungen oder Wandschaltern, über standardmäßig zwei Berichtmöglichkeiten. Sie melden entweder einen kurzen Tastendruck oder, bei Überschreitung eines in Millisekunden einstellbaren Schwellwerts, langen Tastendruck. In Node-RED gibt es dazu die entsprechenden Datenpunkte PRESS_SHORT und PRESS_LONG. Damit kann man, auf einfache Weise, zwei Funktionen mit nur einer Taste steuern.

Mit dieser Node-RED Funktion werden es vier.
Download: Doppelklick.json

Flow-Ansicht mit Debug-Fenster

Wie im Debug-Fenster zu sehen, bleiben die Datenpunkte und Topics zu PRESS_SHORT und PRESS_LONG erhalten, so das vorhandener Code nicht angepasst werden muss. Dazu kommen die Datenpunkte PRESS_SHORT_DOUBLE und PRESS_LONG_DOUBLE, welche entsprechend durch einen Doppelklick ausgelöst werden. Der Funktionseingang kann mit beliebig vielen Tasten belegt werden.

Mehrere Taster am Funktionseingang.

Zur Erkennung eines Doppelklicks muss nach dem ersten Klick, ein einstellbares Zeitfenster lang, auf den potentiellen zweiten Klick, gewartet werden. Siehe shortTime und longTime im Quelltext von Click. (In Delay oder Clicks muss nichts eingestellt werden.) Zwar kann jeder wie er will mit kleineren Werten experimentieren, doch steckt in den Standardwerten eine gewisse Erfahrung. (500ms für einen kurzen Doppelklick. 2s für einen langen. Das bekommt man auch im Halbschlaf hin.) Zweitklicks unter ~120ms werden von der Hardware verschluckt.
Für die Tasten gelten folgende Homematic-Einstellungen als Empfehlung:
Doppelklick-Zeit (Tastensperre) = 0.0
Mindestdauer für langen Tastendruck = 0.4
Timeout für langen Tastendruck = 100ms

Mit den Variablen shortDouble und longDouble stellt man ein, ob man für einen kurzen oder langen Klick überhaupt die Doppelklickfunktion haben möchte. Abgeschaltet, entfällt natürlich die eben genannte Verzögerung.

Manche Geräte senden beim loslassen eines langen Tastendrucks das PRESS_LONG Signal erneut. (Sie senden sogar wiederholt das Signal, solange die Taste gehalten wird, bis der "Timeout für langen Tastendruck" überschritten wird. Deswegen die Empfehlung, diesen Wert auf 100ms zu setzten.) Bei Geräten die sich so verhalten, muss die Variable hasBounce auf true gestellt werden! Ich habe das bisher aber nur bei der ⎇HmIP-RC8 Fernbedienung festgestellt.

Wie ich Dinge zum Beispiel damit steuere:

Beschattung:
var shortDouble = true;
var longDouble = true;
PRESS_SHORT: Öffnet Jalousien oder stoppt deren Fahrt.
PRESS_LONG: Schließt Jalousien.
PRESS_SHORT_DOUBLE: Öffnet Jalousien zur Hälfte.
PRESS_LONG_DOUBLE: Öffnet Jalousien nur einen kleinen Spalt.

Beleuchtung:
var shortDouble = true;
var longDouble = false;
PRESS_SHORT: Wohnzimmerlicht ein oder aus.
PRESS_SHORT_DOUBLE: Zwischen zwei Beleuchtungsarten hin und herschalten. (Ob alle sechs oder nur drei Lichter der Deckenleuchte an sein sollen.)
PRESS_LONG: Zwischen drei Helligkeitsstufen umschalten.

Wohnungstüre:
var shortDouble = false;
var longDouble = true;
PRESS_SHORT: Türe öffnen.
PRESS_LONG: Türe verriegeln.
PRESS_LONG_DOUBLE: Türe entriegeln.

8-Tasten Fernbedienung

⍈Homepage

#