Taster (FT55): notify für "Taste lange gedrückt" und "Doppelklick"

Begonnen von 50watt, 07 April 2014, 21:19:43

Vorheriges Thema - Nächstes Thema

krikan

Hallo!

Danke und ich kann Dein Problem nachstellen. Seit dieser Aenderung https://forum.fhem.de/index.php/topic,60414.msg518405.html#msg518405 funktioniert der Code so nicht mehr. Das Verhalten des watchdogs mit gesetztem Attribut regexp1WontReactivate hat sich geaendet. Wenn Du auf die vorherige Version von 91_watchdog.pm zurückgehst, funktioniert es wieder. Zumindest bei mir.

Mit der aktuellen Version bekomme ich es auf die Schnelle nicht gelöst und bin mir unsicher, ob man das als Fehler sehen sollte oder nicht. Die Logik hat sich nach meinem Verstaendnis insoweit geaendert, dass der 2. Tastendruck beim Doppelklick den watchdog zurücksetzt und jetzt gleichzeitig einen weiteren Tastendruck wegen SAME innerhalb einer Sekunde erwartet, damit der watchdog-Befehl nicht ausgeführt wird. Ich habe aber beim Grübeln darüber schon einen Knoten im Kopf bekommen  :-[. Also müsste jemand anderes bitte ggfs. einsteigen.

Für Dich als kurzfristige und für mich einfacher verstaendliche Lösung: Stelle es auf die neuere Lösungs-Variante mit sequence und Nutzung von triggerpartial um.

Gruß, Christian

rudolfkoenig

ZitatFür Dich als kurzfristige und für mich einfacher verstaendliche Lösung: Stelle es auf die neuere Lösungs-Variante mit sequence und Nutzung von triggerpartial um.

Das wuerde ich auch begruessen. Wenn ich den watchdog reparieren soll/muss, dann bitte eine Liste der Events hier anhaengen, und das erwartete Verhalten auch kurz beschreiben.

phil1283

Vielen dank für die Hilfe.
Ich werde es auf sequence und Nutzung von triggerpartial umstellen.
Das sollte dann wohl so aussehen:
define Sequenz sequence Taster_Schlafzimmer_2:channelB:.B0 0.5 Taster_Schlafzimmer_2:channelB:.B0
attr Sequenz triggerPartial
define einfachclick_Taster_Schlafzimmer_2 notify Sequenz:partial_1 set Wandleuchte_Schlafzimmer_Jessica 25;;set Rollladen_Schlafzimmer down
define doppelclick_Taster_Schlafzimmer_2 notify Sequenz:partial_2 set Rollladen_Schlafzimmer up

werde das heute Abend mal testen.

phil1283

Also ein Tastendruck wird erkannt, ein doppelter Tastendruck leider nicht.
Hat jemand auf die schnelle eine Idee?
Danke.

krikan

define doppelclick_Taster_Schlafzimmer_2 notify Sequenz:partial_2 set Rollladen_Schlafzimmer up
ersetzen durch
define doppelclick_Taster_Schlafzimmer_2 notify Sequenz:trigger set Rollladen_Schlafzimmer up

phil1283

Danke jetzt läufts.
Das war wieder mal ein Fall von blindem und hirnlosem copy-and-paste von mir.
Mit trigger funktioniert es...

cabchen

Hallo

ich bin gerade noch an Anfang mit Fhem aber bist jetz lief es Ziemlich gut und hatte alles hinbekommen aber das mit den Lang und Kurz Tasten grieg ich nicht hin

Zu mein Problem ich habe Fhem und dann per  I2C_PCF8574 als ein und Ausgangs Karten von Horter.de

ich habe das Script von crispinus und viele andere Probiert aber bei crispinus ging wenigstens kurz zu schalten zu mein Befehlen
define sKurzerLangerDruck sequence E38.1:on 0.5 E38.1:on:.released
attr sKurzerLangerDruck triggerPartial
define nKurzerDruck notify sKurzerLangerDruck:trigger set EG_Wohnzimmer_Jalousie stop
define nLangerDruck notify sKurzerLangerDruck:partial_1 set EG_Wohnzimmer_Jalousie closed


hab in der 1 zeile Jede variante probiert aber der lange Tasten Truck steh ich auf auf schlauch
mit 1 mal und 2 mal geht das Script aber mit den Langer Tastendruck nicht

könnte mir einer helfen?

krikan

Ist E38.1 überhaupt ein Device für einen EnOcean-Taster? Wie sehen denn die Events von E38.1 bei einem langen Tastendruck aus?

Gruß, Christian

cabchen

Hallo

das ist ein PCF8574A von Horter.de der low oder high erkennt und per i2c abrufbar ist ich hab den int als abrufen für alle i2c karten auf den Repeater von horter.de auf Gpio 17 das wenn der GPIO an geht er Alle karten abfragen soll
2019-05-08 19:25:10 readingsProxy E38.0 off
2019-05-08 19:25:10 I2C_PCF8574 modulE38 254
2019-05-08 19:25:10 I2C_PCF8574 modulE38 Port0: off
2019-05-08 19:25:10 RPI_GPIO interupt Dblclick: off
2019-05-08 19:25:10 RPI_GPIO interupt Pinlevel: low
2019-05-08 19:25:10 RPI_GPIO interupt off
2019-05-08 19:25:10 RPI_GPIO interupt Longpress: off
2019-05-08 19:25:10 RPI_GPIO interupt Dblclick: off
2019-05-08 19:25:10 RPI_GPIO interupt Pinlevel: low
2019-05-08 19:25:10 RPI_GPIO interupt off
2019-05-08 19:25:10 RPI_GPIO interupt Longpress: off


define modulE38 I2C_PCF8574 0x38
attr modulE38 IODev myI2C
attr modulE38 InputPorts 0,1,2,3,4,5,6,7
attr modulE38 OnStartup 0=on,1=on,2=on,3=on,4=on,5=on,6=on,7=on
attr modulE38 event-on-change-reading state,Port0,Port1,Port2,Port3,Port4,Port5,Port6,Port7
attr modulE38 group ModulE38
attr modulE38 room i2c
define E38.0 readingsProxy modulE38:Port0
attr E38.0 alias E38.0
attr E38.0 devStateIcon on:off:off off:on:on
attr E38.0 group ModulE38
attr E38.0 room i2c
define E38.1 readingsProxy modulE38:Port1
attr E38.1 devStateIcon on:off:off off:on:on
attr E38.1 group ModulE38
attr E38.1 room i2c
define E38.2 readingsProxy modulE38:Port2


Doppel und einfach tasten Funktioniert


define seq sequence E38.0:on 0.5 E38.0:on
attr seq triggerPartial 1
define nA notify seq:partial_1 set A27.1 on
define nC notify seq:trigger set A27.1 off

A27.1 ist ein Ausgang auf ein 8fach relais karte für Beleuchtung

krikan

OK, hat also nichts mit EnOcean zu tuen.

Mit welchen Events kann man denn jetzt die Tastendruckdauer ermitteln? Erkenne ich in Deinen Angaben nicht. Um das EnOcean-Beispiel aus dem Thread übertragen zu können, braucht man u.a. separate Events für "Taster gedrückt" und "Taster loslassen". Falls es ein besonderes Event für "Taster lange gedrückt" gibt, ist der Weg über sequence vermutlich falsch.