HM-PB-(-6-)-WM55 sendet long immer 3x - wie kompensieren

Begonnen von docb, 03 Oktober 2013, 20:30:17

Vorheriges Thema - Nächstes Thema

docb

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
I love FHEM!

martinp876

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




betateilchen

Oder Du wertest in Deinem notify einfach nicht nach "Long.*" aus, sondern nach "Long.1.*" So einfach habe ich das bei mir gelöst.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

docb

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  
I love FHEM!

martinp876

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?

docb

...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
I love FHEM!

docb

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
I love FHEM!

martinp876

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() }

docb

lol ;) sorry, da hab ich mich einfach vertippt.
danke für die hilfe!!!
I love FHEM!

RadioJames

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.
There are 10 kind of people. Those who understand binary and those who don't.

martinp876

der Parser der regexp ist im Kernal. wenn also teile der regexp nicht umgesetzt werden ist das eine Frage in dem entsprechenden Thread

RadioJames

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
There are 10 kind of people. Those who understand binary and those who don't.