Hallo fhem'ler,
derzeit habe ich für über zwei Dutzend Doppel-Taster jeweils 4 Sequences definiert (pro Kanal 1), um jeweils zwischen Kurz- und Langdruck zu unterscheiden.
Also z.B.
define Taster_FO_Treppe1_A0_Sequenz sequence Taster_FO_Treppe1:A0 1.5 Taster_FO_Treppe1:buttons:.released
attr Taster_FO_Treppe1_A0_Sequenz triggerPartial 1
Soweit, so funktional. Aber eben auch >100 Sequence-Defines.
Da die Sequences immer dieselben sind, nur eben für unterschiedliche Taster, frage ich mich, ob man die irgendwie schlau zusammenfassen kann?
Projektname: Optimiertes Event-Handling, eins von meinen lang aufgeschobenen Aufräum-ToDos... :-)
In der commandref findet sich dazu:
ZitatSubsequent patterns can be specified without device name as :<re2>. This will reuse the device name which triggered the previous sequence step:
define lampseq sequence Btn.:on 0.5 :off
Was getriggert hat, erfährt man dann darüber:
ZitatNote: the global variable $data{sequence_source} is set to the name of the device triggering the last event.
Hmmm... auf der Seite hab ich auch schon rumgetrieben, aber ich hatte das anders verstanden. Ich dachte, das erlaubt mir nur, in einer Sequence die Wiederholung des Device-Names in der "Kette" einzusparen. Aber das würde mir ja bei meinem o.g. Plan nicht helfen, die Sequences verschiedener identisch zu bedienender Taster zusammenzufassen.
Oder wo hab ich das Brett vorm Kopf?
Das $data{sequence_source} brauche ich dann später, um zu entscheiden, welche Geräte der Taster letztlich anspricht. Das hatte ich mir schon aus einem anderen Forumsbeitrag gefischt - genau genommen bin ich so erst auf die Idee gekommen, die SEQUENCEs zusammenzufassen.
Nö. "Mind the dot"... (in der commandref).
Würde mal für alle Taster_FO_Treppe1,Taster_FO_Treppe2, Taster_FO_Treppe. mit folgendem ins Rennen gehen: define Taster_FO_Treppe_alle_A0_Sequenz sequence Taster_FO_Treppe.:A0 1.5 :buttons:.released
Ah, jetzt ja! Eine Insel - äh, ein Punkt!
EDIT: ja, so funzt es... und ich kann fast 100 Sequence-Defs löschen. 8)
Wenn ein Punkt die Sicht versperrt. ::)
Danke, Beta-User!
man nennt es auch regular expression ... 8)
Ich war irgendwie an der Stelle hängengeblieben, dass ich keine RegEx in den Device-Namen schreiben kann. Was ja letztlich auch Quatsch war, aber naja, Brett und so... sehe jetzt klar(er) und bin schwer motiviert, auch den Rest meines Event Handlings aufzuräumen.
Sequence-Zusammenfassung läuft jedenfalls bestens, siehe mein EDIT im letzten Post.
Zitat von: betateilchen am 03 Februar 2022, 17:04:45
man nennt es auch regular expression ... 8)
Nun ja, die commandref ist ziemlich "spartanisch", und dass Rudi "regular expression" gerne einfach mit "<re>" (usw.) abkürzt, muss man halt erst mal verinnerlichen, genauso wie (betr. NOTIFYDEV), dass man nicht ganz alles tun kann, was man üblicherweise darunter verstehen würde...
Zitat von: zife am 03 Februar 2022, 17:17:02
Sequence-Zusammenfassung läuft jedenfalls bestens, siehe mein EDIT im letzten Post.
Wie dem auch sein, Danke für die Rückmeldung :) .
Zur Beachtung: Falls es sehr viele Taster sind, die gerne von verschiedenen Leuten genutzt werden, ist die eine Ablagestelle in $data ggf. eine Engstelle. Aber wenn das bisher schon ok war, gibt es vermutlich auch keine neuen Probleme...
Du meinst, wenn einer gerade einen Taster lange drückt, und gleichzeitig wer anders einen anderen bedient?
Ich lege es mal drauf an, dass das neben der Fehlschaltung zu lustigen Gesprächen über SmartHomes führt - und löse das Problem dann, wenn es wirklich auftaucht :)