Hallo zusammen,
ich habe endlich mal wieder zwei Tage Zeit zum fhem-basteln. Ich habe mir zwei neue HM-PB-6-WM55 zusammengelötet, echt genial die Dinger. Allerdings habe ich ein Problem.
Sowohl diese 6-fach Schalter, als auch meine HM-PB-WM55 Zweifachschalter senden den Short-Tastendruck nur einmal, den Long allerdings drei mal:
2013-10-03 20:21:23 CUL_HM BA_6Taster_Btn_04 Short (to LANInterface)
2013-10-03 20:21:23 CUL_HM BA_6Taster_Btn_04 trigger: Short_21
2013-10-03 20:21:23 CUL_HM BA_6Taster battery: ok
2013-10-03 20:21:23 CUL_HM BA_6Taster BA_6Taster_Btn_04 Short (to LANInterface)
2013-10-03 20:21:27 dummy Anwesenheit Ja
2013-10-03 20:21:27 PRESENCE Handy_present
2013-10-03 20:21:31 CUL_HM BA_6Taster_Btn_04 Long 1-8440- (to LANInterface)
2013-10-03 20:21:31 CUL_HM BA_6Taster_Btn_04 trigger: Long_22
2013-10-03 20:21:31 CUL_HM BA_6Taster battery: ok
2013-10-03 20:21:31 CUL_HM BA_6Taster BA_6Taster_Btn_04 Long 1-8440- (to LANInterface)
2013-10-03 20:21:31 CUL_HM BA_6Taster_Btn_04 Long 2-8440- (to LANInterface)
2013-10-03 20:21:31 CUL_HM BA_6Taster_Btn_04 trigger: Long_22
2013-10-03 20:21:31 CUL_HM BA_6Taster battery: ok
2013-10-03 20:21:31 CUL_HM BA_6Taster BA_6Taster_Btn_04 Long 2-8440- (to LANInterface)
2013-10-03 20:21:31 CUL_HM BA_6Taster_Btn_04 Long 3-8440- (to LANInterface)
2013-10-03 20:21:31 CUL_HM BA_6Taster_Btn_04 trigger: Long_22
2013-10-03 20:21:31 CUL_HM BA_6Taster battery: ok
2013-10-03 20:21:31 CUL_HM BA_6Taster BA_6Taster_Btn_04 Long 3-8440- (to LANInterface)
2013-10-03 20:21:32 CUL_HM BA_6Taster_Btn_04 Long 4-A240- (to LANInterface)
2013-10-03 20:21:32 CUL_HM BA_6Taster_Btn_04 trigger: Long_22
2013-10-03 20:21:32 CUL_HM BA_6Taster battery: ok
Das ist natürlich blöd, weil mein Notify dann die Aktion drei mal auslöst. Gibt es eine Möglichkeit das einzufangen?
Viele Grüße
Doc
hi doc,
long wird so lange wiederholt, alle .4sec, bis du den Button loslaesst.
ein button löst mehrere trigger aus - hast du sicher gesehen
<btn> trigger: [long|short]_<keypressNo>
<btn> [long|short] <repeat>-<flag> <destination>
<device> [long|short] <repeat>-<flag> <destination>
repeat fängt mit jeden tastendruck bei 1 an und zählt hoch
keypress zählt die anzahl der tastenbetätigungen.
keypress ist also konstant je tastendruck.
wenn du also
attr BA_6Taster_Btn_04 event-on-change-reading .*
setzt werden events nur getriggert, wenn sich der Inhalt aendert. der "trigger:" kommt dann also nur einmal.
ich empfehle, dieses attribut immer zu setzen. es gibt nur wenigen ausnahmen, für die man event-on-update-reading setzen sollten. Das reduziert auch die notwendige Performance deines systems
Gruss Martin
Oder Du wertest in Deinem notify einfach nicht nach "Long.*" aus, sondern nach "Long.1.*" So einfach habe ich das bei mir gelöst.
Hallo ihr zwei, danke für die Tipps.
Habe zuerst Martins Lösung probiert: Nachteil ist, dass er zwei mal den gleichen short/long nacheinander ignoriert. Das ist schlecht, da ich Lautstärke/Senderwechsel steuere, und das soll ja ruhig mehrmals nacheinander passieren können. Mit der Lösung von Betateilchen klappt nun alles einwandfrei!
Herzlichen Dank ihr zwei!
Beste Grüße
doc
verstehe ich nicht.
wenn du 2-man den Button drückst sollte/MUSS das HM device um eins hochzählen. da DARF kein trigger fehlen.
also jeder druck, ob kurz oder lang muss genau einmal triggern. ist das bei dir nicht so?
...ich werde es nochmal testen. melde mich wieder sobald fhem wieder läuft. habs gerade mit dem 5.5 image geschrottet :(
never touch a running system ist so ein weiser spruch. und ich werde es wohl nie lernen ;)
viele grüße
doc
Hallo,
nach viel Angstschweiß läuft jetzt wieder die 5.4.
Ich habe jetzt Deine (Martins) Version mit
attr KU_6Taster_Btn_01 event-on-change-reading .*
wieder versucht.
Im Eventmonitor sehe ich, dass er das fhem das Ereignis aufnimmt, mein notify reagiert allerdings nicht.
define no_BA_6Taster_toggle notify BA_6Taster_Btn_01:Short.* { YamahaToggle() }
Keine Ahnung woran das liegen mag.
So schauts mit event-on-change-reading aus:
2013-10-04 21:02:18 CUL_HM KU_6Taster_Btn_01 trigger: Short_10
2013-10-04 21:02:18 CUL_HM KU_6Taster battery: ok
2013-10-04 21:02:18 CUL_HM KU_6Taster KU_6Taster_Btn_01 Short (to LANInterface)
und so, wenn ich das attr aushashe:
2013-10-04 21:03:53 CUL_HM KU_6Taster_Btn_01 Short (to LANInterface)
2013-10-04 21:03:53 CUL_HM KU_6Taster_Btn_01 trigger: Short_11
2013-10-04 21:03:53 CUL_HM KU_6Taster battery: ok
2013-10-04 21:03:53 CUL_HM KU_6Taster KU_6Taster_Btn_01 Short (to LANInterface)
Vermutlich ist die Lösung ganz einfach - aber für mich Noob halt nicht. Und wie gesagt - ausgehasht und mit betateilchens Lösung läuft so wie ich möchte. Aber vermutlich halt nicht so ressourcenschonend?
Viele Grüße
doc
define no_BA_6Taster_toggle notify BA_6Taster_Btn_01:Short.* { YamahaToggle() }
2013-10-04 21:03:53 CUL_HM KU_6Taster_Btn_01 Short (to LANInterface)
auf welche entity willst du triggern? warum nicht
define no_BA_6Taster_toggle notify KU_6Taster_Btn_01:Short.* { YamahaToggle() }
lol ;) sorry, da hab ich mich einfach vertippt.
danke für die hilfe!!!
Mir ist bewusst, dass der Thread schon ein knappes Jahr alt ist, aber ich habe - aus aktuellem Anlass - einen Kommentar zum Vorschlag von betateilchen:
> ... sondern nach "Long.1.*" ...
Das trifft auf alle Zahlen mit einer "1" am Anfang zu, z.B. auf "Long 11" bis "Long 19". D.h. man braucht gar nicht allzulange auf dem Schalter bleiben, bis das notify erneut auslöst.
Ich verwende daher "Long.1-.*".
Eigentlich wollte ich es allgemeiner formulieren: "Long.1[^0-9].*", aber das hat nicht funktioniert. Möglicherweise wird nicht die volle Bandbreite regulärer Ausdrücke unterstützt.
der Parser der regexp ist im Kernal. wenn also teile der regexp nicht umgesetzt werden ist das eine Frage in dem entsprechenden Thread
Sorry, ich nehme alles zurück und behaupte das Gegenteil. In meinem Test war die zugehende Klammer eine geschweifte, keine eckige. Hab erst seit gestern Abend meine neue Gleitsichtbrille ;-)
Folgender regulärer Ausdruck zum Filtern des ersten Long-Tastendruckes funktioniert also: "Long.1[^0-9].*"
Grüße
RJ