Doppelte Events von Taster HM-PB-2-WM55

Begonnen von wmr72, 10 Januar 2016, 22:55:27

Vorheriges Thema - Nächstes Thema

wmr72

Hallo,

ich versuche hier gerade mit einem HM-PB-2-WM55-Taster ein FS20-Gerät zu schalten. Dazu hab ich in meiner VCCU einen virtuellen Aktor erstellt und einen Button des Tasters mit diesem gepeert. Die PeerList-Internals in VCCU und Taster-Button passen zueinander, die Trigger kommen auch an. Anschließend hab ich ein notify auf den Button gebaut, so lange ich mit diesem notify nur einen Dummy umschalte tut alles wie es soll, hier das notify:

taster_wm55:taster_wm55_button1.Short {
    my $status = Value("dummy_licht");

    if ($status eq "on") {
        fhem("set dummy_licht off");
    } else {
        fhem("set dummy_licht on");
    }
}


Event-Monitor bei einem Tastendruck:

2016-01-10 22:37:41 dummy dummy_licht off
2016-01-10 22:37:41 CUL_HM taster_wm55 CMDs_done
2016-01-10 22:37:41 CUL_HM taster_wm55 taster_wm55_button1 Short
2016-01-10 22:37:41 CUL_HM taster_wm55_button1 trigger: Short_129
2016-01-10 22:37:41 CUL_HM taster_wm55_button1 trigger_cnt: 129
2016-01-10 22:37:41 CUL_HM vccu_actor2 trigLast: taster_wm55_button1:short
2016-01-10 22:37:41 CUL_HM vccu_actor2 trig_taster_wm55_button1: short


Ersetze ich den dummy im notify durch ein echtes FS20-Device (und das ist wirklich die einzige Änderung) kommt statt einem Event zwei an und das FS20-Device wird innerhalb kurzer Zeit ein/aus-geschaltet. Eventmonitor:

2016-01-10 22:41:18 FS20 og_licht_wz off
2016-01-10 22:41:18 CUL_HM taster_wm55 CMDs_done
2016-01-10 22:41:18 CUL_HM taster_wm55 taster_wm55_button1 Short
2016-01-10 22:41:18 CUL_HM taster_wm55_button1 trigger: Short_131
2016-01-10 22:41:18 CUL_HM taster_wm55_button1 trigger_cnt: 131
2016-01-10 22:41:18 CUL_HM vccu_actor2 trigLast: taster_wm55_button1:short
2016-01-10 22:41:18 CUL_HM vccu_actor2 trig_taster_wm55_button1: short
2016-01-10 22:41:18 FS20 og_licht_wz on
2016-01-10 22:41:18 CUL_HM taster_wm55 CMDs_done
--> 2016-01-10 22:41:18 CUL_HM taster_wm55 taster_wm55_button1 Short <--
2016-01-10 22:41:18 CUL_HM vccu_actor2 trigLast: taster_wm55_button1:short
2016-01-10 22:41:18 CUL_HM vccu_actor2 trig_taster_wm55_button1: short


Auslöser für das zweite Schalten ist offensichtlich die doppelte, oben markierte Zeile, ich verstehe nur nicht warum es einen Unterschied macht ob ich im Notify ein FS20 oder einen dummy schalte. Übersehe ich irgendetwas simples oder was ist eine mögliche Erklärung für dieses Verhalten? (FS20 geht über einen CUL, HM über einen HMLAN).

EDIT:
Versionen der beteiligten Komponenten:

fhem.pl                 9993 2015-11-24 18:40:02Z rudolfkoenig
00_CUL.pm               9995 2015-11-24 18:58:18Z rudolfkoenig
10_CUL_HM.pm            9971 2015-11-22 15:12:51Z martinp876
98_dummy.pm             8809 2015-06-23 18:02:33Z rudolfkoenig
10_FS20.pm              7070 2014-11-27 12:45:34Z rudolfkoenig
00_HMLAN.pm             9886 2015-11-14 09:50:33Z martinp876
91_notify.pm            8953 2015-07-13 15:13:06Z rudolfkoenig
99_Utils.pm             7914 2015-02-08 11:14:10Z rudolfkoenig


Wolfgang

frank

schon komisch. vielleicht stören sich die funksignale. um das zu testen, könntest du das schalten von fs20 etwas verzögern.

ansonsten reagierst du mit dem notify zb auf dieses einmalige event:

2016-01-10 22:41:18 CUL_HM taster_wm55_button1 trigger: Short_131
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

wmr72

Verzögerungen einbauen hilft tatsächlich, ist aber natürlich nicht unbedingt das was man haben will, ein Tastendruck auf den Lichtschalter soll möglichst sofort schalten. Und das eindeutige Short_.*-Event hatte ich bei meiner länger andauernden Fehlersuche tatsächlich übersehen, da war ich am Ende dann blind. Einfache Lösung, funktioniert, danke.

Was mir das doppelte Event sagen soll würde ich allerdings trotzdem gerne noch verstehen.

martinp876

Ich sehe immer nur einen trigger.
Moeglich, dass der taster mehreren bescheid gibt. Oder ein ack mit info kommt.
Grundregelbevent on change reading scheint nicht auf .* zu stehen. Aus meiner sicht ein kardinalfehler.
Ich sehe nur ein nummeriertes ereigniss.
Das man nur aendern der readings als trigger zulaesst ist aus meiner sicht ein muss. Alles andere ist selbst abzufangen.