NEWS
[Erfahrung] Tastenabfrage von Fernbedienung und Wandtaster
-
Hallo
Das Problem gab es schon bei CCU.io.
Tastendruck von batteriebetriebenen Tastern wurde nicht erkannt.
(HM-RC-12, HM-RC-8, HM-PB-6WM55, usw.)
Als Lösung konnte man da ein Dummy-Programm anlegen.
Bei ioBroker greift diese Lösung nicht.
IoBroker erkennt den Tastendruck _Short oder _Long richtig und setzt den Datenpunkt auf TRUE.
Das war es dann aber auch. Er wird nie wieder auf FALSE gesetzt.
Ich bastel gerade eine PIN-Eingabe über den 6fach Wandtaster HM-PB-6WM55.
Da ist es natürlich wichtig, dass die Tasten auch wieder auf FALSE gesetzt werden.
Es gibt eine Lösung.
Ich kann das natürlich wieder nur als Blockly darstellen :roll:
Und hier der Code:
on({id: 'hm-rpc.0.MEQ1084629.1.PRESS_SHORT', val: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; // Mache irgendwas // Dann PRESS_SHORT wieder auf FALSE setzen setState("hm-rpc.0.MEQ1084629.1.PRESS_SHORT"/*CODE-PB:1.PRESS_SHORT*/, false, true); });
Nicht schön, aber man kann damit arbeiten.
Grüße
-
Rantanplan,
du brauchst den Taster nicht zurücksetzten, wenn du change:'all' angibst dann kriegst die Funktion aufgerufen immer wenn der Taster gedrückt wird.
on({id: 'hm-rpc.0.MEQ1084629.1.PRESS_SHORT', change:'all', val: true}, function (obj) { … })
Ich verwende diese Taster und mache daraus im script Treppenhausfunktionen oder auch ein/aus.
Ein Beispiel von mir: oben kurz: umschalten(=ein/Ausschalten), unten kurz: für 1 Minute einschalten, oben lang: einschalten, unten lang: ausschalten!
-
Hallo fsjoke
"Normale" Schaltvorgänge klappen auch einwandfrei.
Bei meinem "Spezialfall" ist das aber anders.
Ich benutze den 6fach Wandtaster zur Codeeingabe (Anwesend, Alarm usw.)
Taste1 ergibt "1", Taste2 ergibt "2" usw.
Wenn z.B. der Code "654321" eingegeben wird, wird eine Aktion ausgelöst.
Dazu werden die 6 Tasten getriggert.
If Taste1_SHORT = True …...
elseIf Taste2_SHORT = True .....
....
....
Wenn ich jetzt die Taste1, dann Taste2 drücke, ist immer die erste Bedingung erfüllt weil Taste1.SHORT immer auf TRUE bleibt.
Ich hoffe ich habe mich verständlich ausgedrückt.
Grüße