[gelöst] doppelte Events beim HM-SEC-SC-2

Begonnen von Ralf9, 10 Mai 2015, 23:25:57

Vorheriges Thema - Nächstes Thema

Ralf9

Hallo,

ich habe an meiner Terassentüre den Fensterkontakt "FK_Wz1_UG" (HM-SEC-SC-2) angebracht und mit einem "HM-CC-RT-DN" gepeert.
Wenn ich nun die Terassentüre öffne, bekomme ich zweimal den Event open. Ist dies normal?

2015-05-10 19:40:42 CUL_HM CUL_HM_HM_CC_RT_DN_2B3773 trig_FK_Wz1_UG: open
2015-05-10 19:40:42 CUL_HM CUL_HM_HM_CC_RT_DN_2B3773 trigLast: FK_Wz1_UG :open
2015-05-10 19:40:42 CUL_HM FK_Wz1_UG trigger_cnt: 91
2015-05-10 19:40:42 CUL_HM FK_Wz1_UG battery: ok
2015-05-10 19:40:42 CUL_HM FK_Wz1_UG open
2015-05-10 19:40:42 CUL_HM FK_Wz1_UG contact: open (to CUL_HM_HM_CC_RT_DN_2B3773)

2015-05-10 19:40:42 CUL_HM FK_Wz1_UG trigger_cnt: 91
2015-05-10 19:40:42 CUL_HM FK_Wz1_UG trigDst_424242: noConfig
2015-05-10 19:40:42 CUL_HM FK_Wz1_UG battery: ok
2015-05-10 19:40:42 CUL_HM FK_Wz1_UG open
2015-05-10 19:40:42 CUL_HM FK_Wz1_UG contact: open (to hmusb)


Wenn ich nun ein notify auf open oder closed triggere, wird es doppelt ausgeführt.

Ich möchte signalisieren, wenn ein Kontakt offen ist.
In dem folgenden notify habe ich es mit einer Abfrage auf "contact: closed (to hmusb)" gelöst. Der "FK_Schz_UG" ist ein "HM-SEC-SCo". Zum Testen nehme ich zur Signalisierung ein dummy.
Die if-Abfrage lässt sich wahrscheinlich vereinfachen.


.*(FK|TK)_.* {
if ($EVENT eq 'contact: closed (to hmusb)' || $EVENT eq 'SENSOR: closed') {
    my $a = Value('FK_Wz1_UG');
    $a .= Value('FK_Schz_UG');
    $a .= Value('HMW_Sen_SC_12_03_TK_Waschk');
    $a .= Value('HMW_Sen_SC_12_04_FK_Bad_UG');
    if (index($a, 'open') == -1) {
        fhem('set test_dummy off');
    }
} elsif ($EVENT eq 'contact: open (to hmusb)' || $EVENT eq 'SENSOR: open') {
    fhem('set test_dummy on');
}
}



Gruß Ralf

FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Icebear

Hi..

event-min-interval ist dein freund :)

Grüße
Raspberry PI mod B (Wheezy), Fhem 5.4, CUL868, CUL433 , RfxTrx, HM-USB-CFG2, Wlan, HomeEasy, IT, FS20, TFA, HomeMatic, Oregon Scientific, HMLand auf Fritzbox
Raspberry PI mod B (RaspBMC)

frank

ZitatWenn ich nun die Terassentüre öffne, bekomme ich zweimal den Event open. Ist dies normal?
ja. der kontakt sendet das ereignis an die zentrale und an den peer.

mit event-on-change könnte man das problem auch umgehen. deine lösung ist aber eindeutiger. event-on-change solltest du eventuell trotzdem setzen, um die events zu minimieren. kostet sonst performance.
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

Ralf9

Ich habe inzwischen "event-on-change-reading state,battery" gesetzt.
Wenn ich nun die Terassentüre öffne, bekomme ich die folgenden Events:

2015-05-12 20:09:55 dummy test_dummy on
2015-05-12 20:09:55 dummy test_dummy on
2015-05-12 20:09:55 CUL_HM CUL_HM_HM_CC_RT_DN_2B3773 trig_FK_Wz1_UG: open
2015-05-12 20:09:55 CUL_HM CUL_HM_HM_CC_RT_DN_2B3773 trigLast: FK_Wz1_UG :open
2015-05-12 20:09:55 dummy test_dummy on
2015-05-12 20:09:55 CUL_HM FK_Wz1_UG open


Als REGEXP verwende ich ".*(FK|TK)_.*(open|closed)"
Ich habe damit aber das Problem, daß auch die beiden folgenden events triggern.
Kann ich mit der REGEXP verhindern, daß auch diese events triggern?

2015-05-12 20:09:55 CUL_HM CUL_HM_HM_CC_RT_DN_2B3773 trig_FK_Wz1_UG: open
2015-05-12 20:09:55 CUL_HM CUL_HM_HM_CC_RT_DN_2B3773 trigLast: FK_Wz1_UG :open


Ich habe auch den Code vom notify etwas vereinfacht:

.*(FK|TK)_.*(open|closed) {
if (Value($NAME) eq 'closed') {
    my $a = Value('FK_Wz1_UG');
    $a .= Value('FK_Schz_UG');
    $a .= Value('HMW_Sen_SC_12_03_TK_Waschk');
    $a .= Value('HMW_Sen_SC_12_04_FK_Bad_UG');
    if (index($a, 'open') == -1) {
        fhem("set test_dummy off");
    }
} else {
    fhem('set test_dummy on');
}
}


Gruß Ralf

FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

frank

ZitatKann ich mit der REGEXP verhindern, daß auch diese events triggern?
dazu müsste man die namen deiner devices kennen.

falls sie alle am anfang TK oder FK haben, wäre es einfach

(FK|TK)_.*(open|closed)

ZitatIch habe inzwischen "event-on-change-reading state,battery" gesetzt.
ich setze grundsätzlich "event-on-change-reading .*" bei allen devices und channels. wenn ich trotzdem mal ein reading öfter brauche, kann ich das dann explizit mit "event-on-update my_spezial_reading" überschreiben.

bei homematic nutze ich nie das state reading für notifies oder ähnliches, wenn es spezielle readings gibt, die ebenfalls die info enthalten, die ich benötige. da das state-reading ein "sammelbecken" auch anderer infos ist, muss man diese "unnötigen" infos nicht extra filtern. ausserdem kann die regex eindeutiger geschrieben werden und das notify wird weniger oft ausgeführt (performance).

es scheint so, dass du auch nicht homematic kontakte benutzt. dann die regex etwa so

(FK|TK)_.*(contact|SENSOR):.*

im notify dann zb auf $EVTPART1 untersuchen

if($EVTPART1 eq "open") {...
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

Ralf9

Zitat von: frank am 13 Mai 2015, 10:02:48
dazu müsste man die namen deiner devices kennen.

Die Namen stehen im notify, HMW ist homematic wired:
FK_Wz1_UG
FK_Schz_UG
HMW_Sen_SC_12_03_TK_Waschk
HMW_Sen_SC_12_04_FK_Bad_UG

Kann ich in der REGEXP die events die "trig" enthalten ausschließen?


Mit "(FK|TK)_.*(contact|SENSOR):.*" wird auf 2 events gefiltert:

FK_Wz1_UG contact: open (to CUL_HM_HM_CC_RT_DN_2B3773)
FK_Wz1_UG contact: open (to hmusb)


Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

frank

HMW würde ich dann umbenennen. ein einheitliches muster der namen ist bei vielen anwendungen hilfreich.

ZitatKann ich in der REGEXP die events die "trig" enthalten ausschließen?
du kannst auf alle fälle im notify ausschliessen mit zb

if($EVENT !~ "trig") {...
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

Ralf9

Zitat von: frank am 13 Mai 2015, 11:28:39
HMW würde ich dann umbenennen. ein einheitliches muster der namen ist bei vielen anwendungen hilfreich.

Ich habe die HMW so umbenannt, daß sie mit TK_ oder FK_ beginnen.
Nun funktioniert es mit der REGEXP

(FK|TK)_.*(open|closed)


Danke

Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7