NEWS
Schalter mit zwei unterschiedlichen Zuständen
-
Moin zusammen,
ich möchte mit einem Schalter zwei unterschiedliche Zustände schalten. Einer der bei kurzem Tasten (<500ms) eingenommen, der andere, der bei längerem Drücken (>500ms) eingenommen wird.
Bis jetzt habe ich leider keine Idee, wie ich es hinbekommen solle. Hat jemand eine Idee?
Danke,
André
-
Da ich selbst noch nicht wirklich Profi bin, muss ich sehr oft in der Verzeichnisstruktur der Objekte nachschauen, wo sich was tut, welcher Datenpunkt sich ändert, wenn ich z. B. einen Schalter betätige. Dabei erkenne ich oftmals ziemliche Latenzen, so dass ich mir nicht vorstellen kann, dass dabei ein Script zuverlässig arbeiten würde.
Ich habe bei mir mehrere von diesen Taster verbaut. https://www.eq-3.de/produkte/homematic/ … -wm55.html
Der hat eine Menge Datenpunkte:
oben / unten kurz
oben / unten lang ( Zeit einstellbar )
oben / unten lang loslassen
Z.B
unten kurz schaltet das Licht in der Toilette an
unten lang schaltet den Ventilator an und nach 10 Minuten wieder aus
oben kurz schaltet das Licht in der Toilette aus
oben lang schaltet den Ventilator aus
Man braucht dafür allerdings für den o. g. Taster eine CCU. Vielleicht gibts aber einen anderen Taster, der das kann ohne CCU.
-
Du suchst schon mal kein Schalter sondern ein Taster. Dann gibts 2 Möglichkeiten, erstens Du nimmst den Taster den TonyDom vorgestellt hat, oder Du baust Dir ein Script, das diese Auswertung übernimmt, was im ms Bereich allerdings etwas kritisch werden dürfte.
-
Hallo zusammen,
habe eine Lösung gefunden (war ein Betrag über Dimmen)
Hier mein Code:
const idLong = "javascript.0.Signale.Flur.Taster-Haustuer-OL"; const idLevel= "javascript.0.Zustand.EG.Licht-Schummer"; var state; on(idLong, function(dp) { if (getState(idLong).val) state=1; setTimeout(function() { // Es wird 500ms gewartet und überprüft, ob der Taster wieder Null wird if(!getState(idLong).val && state) { //kurz gedrückt setState(idLevel, 1); state = 0; } if(getState(idLong).val && state) { // Lang gedrückt setState(idLevel, 0); state = 0; } }, 1000); });
Wohl nicht die feine Programmoiervariante, aber es funktioniert.
André