Mehrfachfunktionen für Taster

Begonnen von Burny4600, 07 Mai 2017, 19:45:47

Vorheriges Thema - Nächstes Thema

Burny4600

Gibt es ein fertiges Modul mit dem ich einem Taster zwei oder mehr Funktionen zuweisen kann?

ZB. Start und nochmalige Betätigung Stop.
LG Chris

Raspberry Pi 2-5, Bullseye Lite, Bookworm Lite
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Eastron, FS20, IT, Homematic, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, S.USV, TEK603, WMR200, YouLess

RaspiLED

Hi,
meinst Du so?
https://forum.fhem.de/index.php/topic,36393.msg286851.html#msg286851
Gruß Arnd


Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

rudolfkoenig

Es gibt sequence, um einer Reihe von kurz hintereinander gedrueckten Tasten unterschiedliche Events zuzuweisen.

Wenn man je nach Status unterschiedliche Events generieren will, dann muss man auf notify zugreifen, oder man versucht es mit eventMap oder readingsChange.

Burny4600

So richtig fehlt mir momentan der Durchblick, aber das im Commandref kann so auch nicht stimmen.
Ein sequence kann verwendet werden, um ein neues Event zu generieren, wenn eine bestimmte Folge von anderen Events in einem festgelegten Zeitraum eingetroffen ist.
Z.Bsp. um eine Lampe dann einzuschalten, falls Btn1:on, dann Btn2:off und zum Schluss Btn3:on innerhalb einer Sekunde gedrückt wurde, definiert man folgendes:
define lampseq sequence Btn1:on 0.5 Btn2:off 0.5 Btn1:on
define lampon notify lampseq:trigger set lamp on

Soll der Schluss Btn3:on Btn1 heisen oder stimmt das define define lampseq sequence Btn1:on 0.5 Btn2:off 0.5 Btn1:on nicht.
Als Test werden zwei oder drei Dummys (Btn) benötigt?
LG Chris

Raspberry Pi 2-5, Bullseye Lite, Bookworm Lite
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Eastron, FS20, IT, Homematic, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, S.USV, TEK603, WMR200, YouLess

rudolfkoenig

Danke fuer den Hinweis, die deutsche Uebersetzung war kaputt, bitte Btn3 durch Btn1 ersetzen.

BtnX ist nicht als dummy sondern als "echtes" Geraet gedacht. Dummy geht natuerlich auch, ich stelle mir nur das schnelle druecken etwas unpraktisch vor.

Burny4600

Das heist aber, dass zb. für einen Rollladen für eine Richtung trotzdem zwei Taster notwendig sind für diesen sequence Modus.
LG Chris

Raspberry Pi 2-5, Bullseye Lite, Bookworm Lite
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Eastron, FS20, IT, Homematic, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, S.USV, TEK603, WMR200, YouLess

rudolfkoenig

Du kannst auch mit eine Taste morsen: sequence mit btn1 0.5 btn1, und entweder auf dem trigger Event von sequence reagieren, oder auf partial_1 (dafuer muss triggerPartial aktiviert sein).

Burny4600

#7
Eigentlich dachte ich mehr an einen Taster der bei jeder Betätigung den Zustand zwischen AUS und EIN wechselt.

LG Chris

Raspberry Pi 2-5, Bullseye Lite, Bookworm Lite
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Eastron, FS20, IT, Homematic, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, S.USV, TEK603, WMR200, YouLess

RaspiLED

Hi,
Ja aus und ein gleich toggle in meinem verlinkten Beitrag oben!
Gruß Arnd



Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

fireball

Hi, eine Frage,

kann das notify auch das auslösende Gerät schalten? Ich bekomme es nicht hin...
Ziel ist es ein Doppelklick bei meinen Rolllädenschaltern ist ein stop.

Sequenze funktioniert:
Internals:
   CFGFN     
   DEF        Rollladen_.*:(0|1) 0.5 :(0|1)
   FUUID      5dfde9bb-f33f-0804-a49f-0ca4982dad3f1e8e
   IDX        0
   MAX        3
   NAME       Rolladen_Stop
   NR         11254
   NTFY_ORDER 50-Rolladen_Stop
   RE         Rollladen_.*:(0|1)
   STATE      active
   TS         0
   TYPE       sequence
   READINGS:
     2019-12-21 11:45:09   state           active
Attributes:
   reportEvents 1
   room       FENSTER_TÜREN
   verbose    5


Im notify wollte ich jetzt:
Rolladen_Stop:trigger set $NAME 2
setzen. Es kennt aber $NAME nicht.

Ich dachte über den Paramter in Sequenze  reportEvents 1 bekomme ich das auslösende Event. Aber dann funktioniert das notify über haupt nicht mehr.

Jemand eine Idee, wo mein Problem liegt?
VG
René


rudolfkoenig

ZitatEs kennt aber $NAME nicht.
$NAME sollte Rolladen_Stop sein, vmtl. nicht das was du willst.
Sieht man gut mit "attr global verbose 5".

fireball

Hi Rudolf, ja I'm log hab ich das auch schon mitbekommen.
gibt's denn überhaupt eine Möglichkeit an die Infos vom auslösenden Devices zu kommen? Welches bei der Sequenz gedrückt wurde? Ich möchte ja nicht 14 notify anlegen.

VG René

rudolfkoenig

Zitatgibt's denn überhaupt eine Möglichkeit an die Infos vom auslösenden Devices zu kommen?
Bisher nicht.

Ich habe aber gerade das Modul ergaenzt, damit $data{sequence_source} beim Ausloesen von trigger den Namen des Geraetes enthaelt, das das aktuelle Event ausloest. Damit muss aber dein notify leider auf perl umgestellt werden:
define stopNotify notify Rolladen_Stop:trigger { fhem "set $data{sequence_source} 2" }

fireball

Moin Moin Rudolf,

sehr sehr coole Sache, habs getestet und für gut befunden. Funktioniert tadellos.
Wieso schreibst du leider auf perl? Weil perl mehr Ressourcen frist?

Ansonsten hätte ich es heute ausprobiert, ein Reading "stpp_counter" einzuführen, welche ich beim ersten schalten auf 1 gesetzt hätte. Dann den Befehl ausgeführt hätte und dann ein sleep 2sek, dann den stop_counter wieder auf 0. Beim zweiten schalten innerhalb der zwei Sekunden wäre der Zähler noch auf 1 und damit wäre der Befehl dann per If Schleife auf stop Gesetz.

Deine Verbesserungen ist jetzt deutlich einfacher.

VG und danke René

rudolfkoenig

ZitatWieso schreibst du leider auf perl? Weil perl mehr Ressourcen frist?
Nein, sondern weil es etwas weniger elegant ist (vulgo laenger), und Anfaenger zu Fehler verleitet.