Hauptmenü

(erledigt) Sequence-Modul

Begonnen von Neuhier, 04 Februar 2019, 10:23:32

Vorheriges Thema - Nächstes Thema

Neuhier

Es tut sich mir gerade ein Problem mit dem sequence-Modul auf.
Ich möchte auswerten, wie lange ein Taster gedrückt wird.
Laut Wiki, command.ref etc. ist der Aufruf:
Usage: define <name> sequence <re1> <timeout1> <re2> [<timeout2> <re3> ...]

Verwenden tue ich:
define B3seq sequence HM_541F6B_Btn_03.contact:off 3.0

Es wird nix angelegt, nur die "Usage... "-Meldung erscheint.
Probiert habe ich auch schon Doppelpunkt, in verschiedener Kombination mit Punkt, auch closed statt off etc.
Immer die o.g. Anzeige.
Stimmen die Quellen dazu nicht oder es ist ein billiger Tippfehler meinerseits?

Im Event-Monitor kommt:
2019-02-04 10:42:59 CUL_HM HM_541F6B_Btn_03 contact: off (to myHmUART)
wenn ich den Button drücke.

amenomade

Zitat von: CommandRefdefine <name> sequence <re1> <timeout1> <re2> [<timeout2> <re3> ...]
Ein sequence kann verwendet werden, um ein neues Event zu generieren, wenn eine bestimmte Folge von anderen Events in einem festgelegten Zeitraum eingetroffen ist.

Wo ist das 2. Event (<re2>) ?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Pfriemler

Sequence reagiert auf das korrekte zeitnahe Eintreffen mehrerer Events und generiert daraus selbst ein neues. timeout gibt die Maximalzeit zwischen den Events vor.
Ich wüsste nicht,  wie Du damit eine Mindest-drück-dauer eines Tasters überwachen willst.
Wenn es eine Aktion einzig auf einen längeren Tastendruck dieses Tasters geben soll, wäre für mich ein watchdog das Mittel der Wahl.
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Neuhier

#3
[re2] kann ich als *.contact:on angeben?

Etwas später ......
es geht, als [re2], auch nur :on.

Wenn man das Gelesene auch umsetzt, wird es ganz einfach.  :-[

Pfriemler

#4
Zitat von: Neuhier am 04 Februar 2019, 10:47:48
[re2] kann ich als *.contact:on angeben?
Etwas später ......
es geht, als [re2], auch nur :on.
Bitte nur das letztere. *.contact:on würde auf jedes (auch andere) Gerät ansprechen, dass in der passenden Zeit das Event "contact:on" sendet.

Commandref sagt ganz klar:
ZitatNachfolgende Regexps können den Namen des Gerätes weglassen, in diesem Fall werden nur die Events des beim ersten Event eingetroffenen Gerätes beachtet:
        define lampseq sequence Btn.:on 0.5 :off

Und neu für mich:
ZitatTimeout kann als <delay>:<timeout> spezifiziert werden, dabei setzt delay die Zeit, wo kein passendes Event empfangen werden darf, ansonsten wird sequence abgebrochen. Das kann verwendet werden, um "press and hold" auszuwerten. Folgendes
        define lampseq sequence Btn1:on 2:3 :off
    ist nur erfolgreich, falls Btn1 zwischen 2 und 5 Sekunden lang gedrückt wurde.
BTW: Das könnte die Lösung für eine Reihe von Triggerproblemen mit DOIFs bei mir sein ...

Trotzdem:
ZitatIch möchte auswerten, wie lange ein Taster gedrückt wird.
Möchtest Du wirklich messen, wie lange der Taster gedrückt wurde, oder möchtest Du eine Aktion auslösen, wenn der Taster zwischen x und y Sekunden lang gedrückt wurde?
Und weiterhin: was ist "contact:on" bzw. "contact:off"? Bei als Zustandssensor definierten HM-Eingabegeräten (etwa ein HM-Mod-Re-8 im Modus "sensor" oder ein SCI) kenne ich nur "contact: open" oder "contact: closed".

"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Neuhier

#5
Und genau wegen Letzterem bin ich auf die Idee oben gekommen...
Es geht mir um sowas wie "longpressed".

Habe das am HM-Mod-Sender mit eventMap auf closed:off / open:on umgebogen.

Pfriemler

Verstehe ich trotzdem nicht. Ein Kontakt ist normalerweise offen. Wenn ich einen Taster an einen EM-8 (sorry, Re-8 war falsch) oder einen SCI anschließe, dann liefert er bei Betätigung "closed" und sonst "open". Eine Übersetzung auf "closed:on open:off" würde für mich mehr Sinn ergeben.
Das hat aber letztlich alles nichts mit longpress o.ä. zu tun. Sequence klappt auch ohne solche Übersetzung.
define B3seq sequence HM_541F6B_Btn_03.contact:closed 1:5 :open
würde etwa bewirken, dass bei einem Tastendruck zwischen 1 und 1+5=6 Sekunden das Device "B3seq" das Event  "trigger" erzeugt.
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."