Dispatch an weiteres Modul.

Begonnen von bjoernh, 25 Oktober 2015, 13:17:53

Vorheriges Thema - Nächstes Thema

bjoernh

#15
Also ich bin bis jetzt kein Stück weiter.

Mir scheint es so, dass der anschließende Undefined im Nirwana versinkt.

Hier mal der Log Auszug:
Zitat2015.10.25 19:00:37 4: CUL_Parse: CUL1 oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAA37
2015.10.25 19:00:37 5: CUL1 ++++++++ dispatch oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAA37
2015.10.25 19:00:37 5: Loading ./FHEM/14_CUL_OTHER.pm
2015.10.25 19:00:37 1: PERL WARNING: Using a hash as a reference is deprecated at ./FHEM/14_CUL_OTHER.pm line 133.
2015.10.25 19:00:37 5: CUL_OTHER (o2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAA37) length: 44 RSSI: -46.5
2015.10.25 19:00:37 5: CUL_OTHER (o2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAA37) match Oregon 2 length: 44
2015.10.25 19:00:37 5: CUL_OTHER decode Oregon 2 (996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAA37)
2015.10.25 19:00:37 5: OSV2 protocol detected (996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAA37)
2015.10.25 19:00:37 5: CUL_OTHER: OSV2 protocol converted to hex: (501A2D20CB201120053400) with length (88) bits
2015.10.25 19:00:37 5: CUL1 Dispatch now to Oregon Module.
2015.10.25 19:00:37 5: converted Data to (501A2D20CB201120053400)
2015.10.25 19:00:37 5: CUL1 ++++++++ dispatch 501A2D20CB201120053400
2015.10.25 19:00:37 5: Loading ./FHEM/41_OREGON.pm
2015.10.25 19:00:37 5: OREGON: decoding delay=0 hex=501A2D20CB201120053400
2015.10.25 19:00:37 3: OREGON: Unknown device THGR228N_cb_2, please define it
2015.10.25 19:00:37 5: Loading ./FHEM/10_UNIRoll.pm
2015.10.25 19:00:37 3: CUL1: Trigger now UNKNOWNCODE Unknown code 501A2D20CB201120053400, help me!
2015.10.25 19:00:37 5: Triggering CUL1 (1 changes)
2015.10.25 19:00:37 5: Notify loop for CUL1 UNKNOWNCODE 501A2D20CB201120053400
2015.10.25 19:00:37 3: CUL1: *********Unknown code 501A2D20CB201120053400, help me!
2015.10.25 19:00:37 5: Return ""

So sollte es bei einem funktionierenden Modul aussehen:
2015.10.25 18:55:14 4: CUL_Parse: CUL1 s6380DEF470F2
2015.10.25 18:55:14 5: CUL1 ++++++++ dispatch s6380DEF470F2
2015.10.25 18:55:14 4: CUL_TCM97001 Unknown 99 (6380DEF470F2) length: 12 RSSI: -81
2015.10.25 18:55:14 2: CUL_TCM97001 Unknown EAS800 device 99, please define it
2015.10.25 18:55:14 5: Triggering global (1 changes)
2015.10.25 18:55:14 5: Notify loop for global UNDEFINED CUL_TCM97001_99 CUL_TCM97001 99
2015.10.25 18:55:14 2: autocreate: define CUL_TCM97001_99 CUL_TCM97001 99
2015.10.25 18:55:14 5: Triggering global (2 changes)
2015.10.25 18:55:14 2: autocreate: define FileLog_CUL_TCM97001_99 FileLog ./log/CUL_TCM97001_99-%Y.log CUL_TCM97001_99
2015.10.25 18:55:14 5: Triggering global (3 changes)
2015.10.25 18:55:14 2: autocreate: define SVG_CUL_TCM97001_99 SVG FileLog_CUL_TCM97001_99:temp4hum4:CURRENT
2015.10.25 18:55:14 5: Triggering global (4 changes)
2015.10.25 18:55:14 5: Triggering SVG_CUL_TCM97001_99 (1 changes)
2015.10.25 18:55:14 5: Notify loop for SVG_CUL_TCM97001_99 copyGplotFile
2015.10.25 18:55:14 5: Triggering global (5 changes)


Was kann ich denn jetzt noch probieren? (Bin echt langsam ratlos)

Anbei auch noch der Stand des jetzigen Moduls.

bjoernh

So, jetzt habe ich die fhem.pl mit Debugs vollgepflastert und habe das Problem gefunden.

Das Problem war mein match:
$hash->{MatchList}{"0:OREGON"} = "^(3[8-9A-F]|[4-6][0-9A-F]|7[0-8]).*";

Eigentlich bin ich davon ausgegangen, dass beim Match-Key (0:OREGON) die 0 die Reihenfolge vorgibt.
Dies mag ja auch so sein. Doch eine 0: gibt es ja bereits.

Im fhem.pl wird beim Dispatch bei if($dmsg =~ m/$h->{$m}/) { jeder Match der MatchList mit dem Code verglichen.
Genau hier in dieser Matchliste fehlte dann aber mein 0:OREGON.

Wenn ich es nun auf Z:OREGON andere funktioniert es.

@Rudi: Soll dass wirklich so dein, dass das Zeichen vor dem : nur 1x vorhanden sein darf? Ebenso darf es nicht mehr wie ein Zeichen sein, sonst geht es auch nicht.
Das ist meiner Meinung nach ja auch etwas schlecht, zumal erstens aufgepasst werden muss was bereits vergeben ist und zweitens sind nur 0-9 bzw. a-z möglich.
Sollte das nicht irgendwie verbessert werden?

rudolfkoenig

Zitat@Rudi: Soll dass wirklich so dein, dass das Zeichen vor dem : nur 1x vorhanden sein darf? Ebenso darf es nicht mehr wie ein Zeichen sein, sonst geht es auch nicht.

Beides ist sehr merkwuerdig. MatchList wird mWn nur im folgenden Code verwendet:
    my $h = $hash->{MatchList}; $h = $module->{MatchList} if(!$h);
    if(defined($h)) {
      foreach my $m (sort keys %{$h}) {
        if($dmsg =~ m/$h->{$m}/) {
          my ($order, $mname) = split(":", $m);

danach waere sowohl die Doppelbelegung, als auch mehr als ein Zeichen kein Problem.
Es wird halt nicht numerisch sortiert, aber das ist eie andere Baustelle.

bjoernh

#18
Zitat von: rudolfkoenig am 26 Oktober 2015, 11:55:38
Beides ist sehr merkwuerdig. MatchList wird mWn nur im folgenden Code verwendet:
    my $h = $hash->{MatchList}; $h = $module->{MatchList} if(!$h);
    if(defined($h)) {
      foreach my $m (sort keys %{$h}) {
        if($dmsg =~ m/$h->{$m}/) {
          my ($order, $mname) = split(":", $m);

danach waere sowohl die Doppelbelegung, als auch mehr als ein Zeichen kein Problem.
Es wird halt nicht numerisch sortiert, aber das ist eie andere Baustelle.

So wie ich es lese ist das mit der Doppelbelgung schon ein Problem, bzw. eine Eigenheit von den Perl HASH.
Laut Doku ist das der Key und dieser muss Eindeutig sein.

Ich habe jetzt auch noch ein wenig probiert, aber ich verstehe es immer noch nicht.


Wenn ich als Match
$hash->{MatchList}{"CUL_OTHER:OREGON"} = "^(3[8-9A-F]|[4-6][0-9A-F]|7[0-8]).*";
eintrage geht es nicht.

Wenn ich aber
$hash->{MatchList}{"ZCOLOTHER:OREGON"} = "^(3[8-9A-F]|[4-6][0-9A-F]|7[0-8]).*";
eintrage geht es.

Mit scheint so als ob das Problem irgendwie mit der Reihenfolge zu tun hat. Erklären kann ich es mir aber immer noch nicht.

Hier mal der Output.

Geht nicht:
2015.10.26 19:52:55 5: CUL/RAW: /oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB

2015.10.26 19:52:55 4: CUL_Parse: CUL1 oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB
2015.10.26 19:52:55 5: CUL1 dispatch oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB
2015.10.26 19:52:55 0: SEARCH MATCH: key: 1:USF1000 *** ^81..(04|0c)..0101a001a5ceaa00.... *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB
2015.10.26 19:52:55 0: SEARCH MATCH: key: 2:BS *** ^81..(04|0c)..0101a001a5cf *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB
2015.10.26 19:52:55 0: SEARCH MATCH: key: 3:FS20 *** ^81..(04|0c)..0101a001 *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB
2015.10.26 19:52:55 0: SEARCH MATCH: key: 4:FHT *** ^81..(04|09|0d)..(0909a001|83098301|c409c401).. *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB
2015.10.26 19:52:55 0: SEARCH MATCH: key: 5:KS300 *** ^810d04..4027a001 *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB
2015.10.26 19:52:55 0: SEARCH MATCH: key: 6:CUL_WS *** ^K..... *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB
2015.10.26 19:52:55 0: SEARCH MATCH: key: 7:CUL_EM *** ^E0.................$ *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB
2015.10.26 19:52:55 0: SEARCH MATCH: key: 8:HMS *** ^810e04....(1|5|9).a001 *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB
2015.10.26 19:52:55 0: SEARCH MATCH: key: 9:CUL_FHTTK *** ^T[A-F0-9]{8} *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB
2015.10.26 19:52:55 0: SEARCH MATCH: key: A:CUL_RFR *** ^[0-9A-F]{4}U. *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB
2015.10.26 19:52:55 0: SEARCH MATCH: key: B:CUL_HOERMANN *** ^R.......... *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB
2015.10.26 19:52:55 0: SEARCH MATCH: key: C:ESA2000 *** ^S................................$ *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB
2015.10.26 19:52:55 0: SEARCH MATCH: key: D:CUL_IR *** ^I............ *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB
2015.10.26 19:52:55 0: SEARCH MATCH: key: E:CUL_TX *** ^TX[A-F0-9]{10} *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB
2015.10.26 19:52:55 0: SEARCH MATCH: key: F:Revolt *** ^r......................$ *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB
2015.10.26 19:52:55 0: SEARCH MATCH: key: G:IT *** ^i...... *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB
2015.10.26 19:52:55 0: SEARCH MATCH: key: H:STACKABLE_CC *** ^\* *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB
2015.10.26 19:52:55 0: SEARCH MATCH: key: I:UNIRoll *** ^[0-9A-F]{5}(B|D|E) *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB
2015.10.26 19:52:55 0: SEARCH MATCH: key: J:SOMFY *** ^Y[r|t|s]:?[A-F0-9]+ *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB
2015.10.26 19:52:55 0: SEARCH MATCH: key: K:CUL_TCM97001 *** ^s[A-F0-9]+ *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB
2015.10.26 19:52:55 0: SEARCH MATCH: key: L:CUL_OTHER *** ^o+ *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB
2015.10.26 19:52:55 0: ***** FOUND: L:CUL_OTHER *** ^o+ *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB
2015.10.26 19:52:55 0: 11111111111111111111111
2015.10.26 19:52:55 5: Loading ./FHEM/14_CUL_OTHER.pm
2015.10.26 19:52:55 0: 222222222222222222222
2015.10.26 19:52:55 5: CUL_OTHER (o2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB) length: 44 RSSI: -76.5
2015.10.26 19:52:55 5: CUL_OTHER (o2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB) match Oregon 2 length: 44
2015.10.26 19:52:55 5: CUL_OTHER decode Oregon 2 (996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB)
2015.10.26 19:52:55 5: bitdata: 100110010110101001100101100110101010101010011010010110011010010110101010100110100110101001101010101010101001101001100110101010101010011001011010101010101010101011111011
2015.10.26 19:52:55 5: OSV2 protocol detected (996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFB)
2015.10.26 19:52:55 5: CUL_OTHER: OSV2 protocol converted to hex: (501A2D20CB201120053400) with length (88) bits

2015.10.26 19:52:55 5: CUL1 Dispatch now to Oregon Module.
2015.10.26 19:52:55 5: converted Data to (501A2D20CB201120053400)
2015.10.26 19:52:55 5: CUL1 dispatch 501A2D20CB201120053400
2015.10.26 19:52:55 0: SEARCH MATCH: key: 1:USF1000 *** ^81..(04|0c)..0101a001a5ceaa00.... *** 501A2D20CB201120053400
2015.10.26 19:52:55 0: SEARCH MATCH: key: 2:BS *** ^81..(04|0c)..0101a001a5cf *** 501A2D20CB201120053400
2015.10.26 19:52:55 0: SEARCH MATCH: key: 3:FS20 *** ^81..(04|0c)..0101a001 *** 501A2D20CB201120053400
2015.10.26 19:52:55 0: SEARCH MATCH: key: 4:FHT *** ^81..(04|09|0d)..(0909a001|83098301|c409c401).. *** 501A2D20CB201120053400
2015.10.26 19:52:55 0: SEARCH MATCH: key: 5:KS300 *** ^810d04..4027a001 *** 501A2D20CB201120053400
2015.10.26 19:52:55 0: SEARCH MATCH: key: 6:CUL_WS *** ^K..... *** 501A2D20CB201120053400
2015.10.26 19:52:55 0: SEARCH MATCH: key: 7:CUL_EM *** ^E0.................$ *** 501A2D20CB201120053400
2015.10.26 19:52:55 0: SEARCH MATCH: key: 8:HMS *** ^810e04....(1|5|9).a001 *** 501A2D20CB201120053400
2015.10.26 19:52:55 0: SEARCH MATCH: key: 9:CUL_FHTTK *** ^T[A-F0-9]{8} *** 501A2D20CB201120053400
2015.10.26 19:52:55 0: SEARCH MATCH: key: A:CUL_RFR *** ^[0-9A-F]{4}U. *** 501A2D20CB201120053400
2015.10.26 19:52:55 0: SEARCH MATCH: key: B:CUL_HOERMANN *** ^R.......... *** 501A2D20CB201120053400
2015.10.26 19:52:55 0: SEARCH MATCH: key: C:ESA2000 *** ^S................................$ *** 501A2D20CB201120053400
2015.10.26 19:52:55 0: SEARCH MATCH: key: COLOTHER:OREGON *** ^(3[8-9A-F]|[4-6][0-9A-F]|7[0-8]).* *** 501A2D20CB201120053400
2015.10.26 19:52:55 0: ***** FOUND: COLOTHER:OREGON *** ^(3[8-9A-F]|[4-6][0-9A-F]|7[0-8]).* *** 501A2D20CB201120053400
2015.10.26 19:52:55 0: 11111111111111111111111
2015.10.26 19:52:55 0: 222222222222222222222
2015.10.26 19:52:55 5: OREGON: decoding delay=0 hex=501A2D20CB201120053400
2015.10.26 19:52:55 3: OREGON: Unknown device THGR228N_cb_2, please define it
2015.10.26 19:52:55 0: SEARCH MATCH: key: D:CUL_IR *** ^I............ *** 501A2D20CB201120053400
2015.10.26 19:52:55 0: SEARCH MATCH: key: E:CUL_TX *** ^TX[A-F0-9]{10} *** 501A2D20CB201120053400
2015.10.26 19:52:55 0: SEARCH MATCH: key: F:Revolt *** ^r......................$ *** 501A2D20CB201120053400
2015.10.26 19:52:55 0: SEARCH MATCH: key: G:IT *** ^i...... *** 501A2D20CB201120053400
2015.10.26 19:52:55 0: SEARCH MATCH: key: H:STACKABLE_CC *** ^\* *** 501A2D20CB201120053400
2015.10.26 19:52:55 0: SEARCH MATCH: key: I:UNIRoll *** ^[0-9A-F]{5}(B|D|E) *** 501A2D20CB201120053400
2015.10.26 19:52:55 0: ***** FOUND: I:UNIRoll *** ^[0-9A-F]{5}(B|D|E) *** 501A2D20CB201120053400
2015.10.26 19:52:55 0: 11111111111111111111111
2015.10.26 19:52:55 5: Loading ./FHEM/10_UNIRoll.pm
2015.10.26 19:52:55 0: 222222222222222222222
2015.10.26 19:52:55 0: SEARCH MATCH: key: J:SOMFY *** ^Y[r|t|s]:?[A-F0-9]+ *** 501A2D20CB201120053400
2015.10.26 19:52:55 0: SEARCH MATCH: key: K:CUL_TCM97001 *** ^s[A-F0-9]+ *** 501A2D20CB201120053400
2015.10.26 19:52:55 0: SEARCH MATCH: key: L:CUL_OTHER *** ^o+ *** 501A2D20CB201120053400
2015.10.26 19:52:55 5: Triggering CUL1 (1 changes)
2015.10.26 19:52:55 5: Notify loop for CUL1 UNKNOWNCODE 501A2D20CB201120053400
2015.10.26 19:52:55 3: CUL1: Unknown code 501A2D20CB201120053400, help me!



Geht:
2015.10.26 19:55:14 5: CUL/RAW: /oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD

2015.10.26 19:55:14 4: CUL_Parse: CUL1 oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD
2015.10.26 19:55:14 5: CUL1 dispatch oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD
2015.10.26 19:55:14 0: SEARCH MATCH: key: 1:USF1000 *** ^81..(04|0c)..0101a001a5ceaa00.... *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD
2015.10.26 19:55:14 0: SEARCH MATCH: key: 2:BS *** ^81..(04|0c)..0101a001a5cf *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD
2015.10.26 19:55:14 0: SEARCH MATCH: key: 3:FS20 *** ^81..(04|0c)..0101a001 *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD
2015.10.26 19:55:14 0: SEARCH MATCH: key: 4:FHT *** ^81..(04|09|0d)..(0909a001|83098301|c409c401).. *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD
2015.10.26 19:55:14 0: SEARCH MATCH: key: 5:KS300 *** ^810d04..4027a001 *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD
2015.10.26 19:55:14 0: SEARCH MATCH: key: 6:CUL_WS *** ^K..... *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD
2015.10.26 19:55:14 0: SEARCH MATCH: key: 7:CUL_EM *** ^E0.................$ *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD
2015.10.26 19:55:14 0: SEARCH MATCH: key: 8:HMS *** ^810e04....(1|5|9).a001 *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD
2015.10.26 19:55:14 0: SEARCH MATCH: key: 9:CUL_FHTTK *** ^T[A-F0-9]{8} *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD
2015.10.26 19:55:14 0: SEARCH MATCH: key: A:CUL_RFR *** ^[0-9A-F]{4}U. *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD
2015.10.26 19:55:14 0: SEARCH MATCH: key: B:CUL_HOERMANN *** ^R.......... *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD
2015.10.26 19:55:14 0: SEARCH MATCH: key: C:ESA2000 *** ^S................................$ *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD
2015.10.26 19:55:14 0: SEARCH MATCH: key: D:CUL_IR *** ^I............ *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD
2015.10.26 19:55:14 0: SEARCH MATCH: key: E:CUL_TX *** ^TX[A-F0-9]{10} *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD
2015.10.26 19:55:14 0: SEARCH MATCH: key: F:Revolt *** ^r......................$ *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD
2015.10.26 19:55:14 0: SEARCH MATCH: key: G:IT *** ^i...... *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD
2015.10.26 19:55:14 0: SEARCH MATCH: key: H:STACKABLE_CC *** ^\* *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD
2015.10.26 19:55:14 0: SEARCH MATCH: key: I:UNIRoll *** ^[0-9A-F]{5}(B|D|E) *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD
2015.10.26 19:55:14 0: SEARCH MATCH: key: J:SOMFY *** ^Y[r|t|s]:?[A-F0-9]+ *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD
2015.10.26 19:55:14 0: SEARCH MATCH: key: K:CUL_TCM97001 *** ^s[A-F0-9]+ *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD
2015.10.26 19:55:14 0: SEARCH MATCH: key: L:CUL_OTHER *** ^o+ *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD
2015.10.26 19:55:14 0: ***** FOUND: L:CUL_OTHER *** ^o+ *** oo2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD
2015.10.26 19:55:14 0: 11111111111111111111111
2015.10.26 19:55:14 5: Loading ./FHEM/14_CUL_OTHER.pm
2015.10.26 19:55:14 0: 222222222222222222222
2015.10.26 19:55:14 5: CUL_OTHER (o2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD) length: 44 RSSI: -75.5
2015.10.26 19:55:14 5: CUL_OTHER (o2996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD) match Oregon 2 length: 44
2015.10.26 19:55:14 5: CUL_OTHER decode Oregon 2 (996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD)
2015.10.26 19:55:14 5: bitdata: 100110010110101001100101100110101010101010011010010110011010010110101010100110100110101001101010101010101001101001100110101010101010011001011010101010101010101011111101
2015.10.26 19:55:14 5: OSV2 protocol detected (996A659AAA9A59A5AA9A6A6AAA9A66AAA65AAAAAFD)
2015.10.26 19:55:14 5: CUL_OTHER: OSV2 protocol converted to hex: (501A2D20CB201120053400) with length (88) bits

2015.10.26 19:55:14 5: CUL1 Dispatch now to Oregon Module.
2015.10.26 19:55:14 5: converted Data to (501A2D20CB201120053400)
2015.10.26 19:55:14 5: CUL1 dispatch 501A2D20CB201120053400
2015.10.26 19:55:14 0: SEARCH MATCH: key: 1:USF1000 *** ^81..(04|0c)..0101a001a5ceaa00.... *** 501A2D20CB201120053400
2015.10.26 19:55:14 0: SEARCH MATCH: key: 2:BS *** ^81..(04|0c)..0101a001a5cf *** 501A2D20CB201120053400
2015.10.26 19:55:14 0: SEARCH MATCH: key: 3:FS20 *** ^81..(04|0c)..0101a001 *** 501A2D20CB201120053400
2015.10.26 19:55:14 0: SEARCH MATCH: key: 4:FHT *** ^81..(04|09|0d)..(0909a001|83098301|c409c401).. *** 501A2D20CB201120053400
2015.10.26 19:55:14 0: SEARCH MATCH: key: 5:KS300 *** ^810d04..4027a001 *** 501A2D20CB201120053400
2015.10.26 19:55:14 0: SEARCH MATCH: key: 6:CUL_WS *** ^K..... *** 501A2D20CB201120053400
2015.10.26 19:55:14 0: SEARCH MATCH: key: 7:CUL_EM *** ^E0.................$ *** 501A2D20CB201120053400
2015.10.26 19:55:14 0: SEARCH MATCH: key: 8:HMS *** ^810e04....(1|5|9).a001 *** 501A2D20CB201120053400
2015.10.26 19:55:14 0: SEARCH MATCH: key: 9:CUL_FHTTK *** ^T[A-F0-9]{8} *** 501A2D20CB201120053400
2015.10.26 19:55:14 0: SEARCH MATCH: key: A:CUL_RFR *** ^[0-9A-F]{4}U. *** 501A2D20CB201120053400
2015.10.26 19:55:14 0: SEARCH MATCH: key: B:CUL_HOERMANN *** ^R.......... *** 501A2D20CB201120053400
2015.10.26 19:55:14 0: SEARCH MATCH: key: C:ESA2000 *** ^S................................$ *** 501A2D20CB201120053400
2015.10.26 19:55:14 0: SEARCH MATCH: key: D:CUL_IR *** ^I............ *** 501A2D20CB201120053400
2015.10.26 19:55:14 0: SEARCH MATCH: key: E:CUL_TX *** ^TX[A-F0-9]{10} *** 501A2D20CB201120053400
2015.10.26 19:55:14 0: SEARCH MATCH: key: F:Revolt *** ^r......................$ *** 501A2D20CB201120053400
2015.10.26 19:55:14 0: SEARCH MATCH: key: G:IT *** ^i...... *** 501A2D20CB201120053400
2015.10.26 19:55:14 0: SEARCH MATCH: key: H:STACKABLE_CC *** ^\* *** 501A2D20CB201120053400
2015.10.26 19:55:14 0: SEARCH MATCH: key: I:UNIRoll *** ^[0-9A-F]{5}(B|D|E) *** 501A2D20CB201120053400
2015.10.26 19:55:14 0: ***** FOUND: I:UNIRoll *** ^[0-9A-F]{5}(B|D|E) *** 501A2D20CB201120053400
2015.10.26 19:55:14 0: 11111111111111111111111
2015.10.26 19:55:14 5: Loading ./FHEM/10_UNIRoll.pm
2015.10.26 19:55:14 0: 222222222222222222222
2015.10.26 19:55:14 0: SEARCH MATCH: key: J:SOMFY *** ^Y[r|t|s]:?[A-F0-9]+ *** 501A2D20CB201120053400
2015.10.26 19:55:14 0: SEARCH MATCH: key: K:CUL_TCM97001 *** ^s[A-F0-9]+ *** 501A2D20CB201120053400
2015.10.26 19:55:14 0: SEARCH MATCH: key: L:CUL_OTHER *** ^o+ *** 501A2D20CB201120053400
2015.10.26 19:55:14 0: SEARCH MATCH: key: ZCOLOTHER:OREGON *** ^(3[8-9A-F]|[4-6][0-9A-F]|7[0-8]).* *** 501A2D20CB201120053400
2015.10.26 19:55:14 0: ***** FOUND: ZCOLOTHER:OREGON *** ^(3[8-9A-F]|[4-6][0-9A-F]|7[0-8]).* *** 501A2D20CB201120053400
2015.10.26 19:55:14 0: 11111111111111111111111
2015.10.26 19:55:14 5: Loading ./FHEM/41_OREGON.pm
2015.10.26 19:55:14 0: 222222222222222222222
2015.10.26 19:55:14 5: OREGON: decoding delay=0 hex=501A2D20CB201120053400
2015.10.26 19:55:14 3: OREGON: Unknown device THGR228N_cb_2, please define it
2015.10.26 19:55:14 5: Triggering global (1 changes)
2015.10.26 19:55:14 5: Notify loop for global UNDEFINED THGR228N_cb_2 OREGON THGR228N_cb_2
2015.10.26 19:55:14 2: autocreate: define THGR228N_cb_2 OREGON THGR228N_cb_2
2015.10.26 19:55:14 5: Triggering global (2 changes)
2015.10.26 19:55:14 2: autocreate: define FileLog_THGR228N_cb_2 FileLog ./log/THGR228N_cb_2-%Y.log THGR228N_cb_2
2015.10.26 19:55:14 5: Triggering global (3 changes)
2015.10.26 19:55:14 2: autocreate: define SVG_THGR228N_cb_2 SVG FileLog_THGR228N_cb_2:temp4hum4:CURRENT
2015.10.26 19:55:14 5: Triggering global (4 changes)
2015.10.26 19:55:14 5: Triggering SVG_THGR228N_cb_2 (1 changes)
2015.10.26 19:55:14 5: Notify loop for SVG_THGR228N_cb_2 copyGplotFile
2015.10.26 19:55:14 5: Triggering global (5 changes)


Hier noch der abgeänderte fhem.pl code mit den Debug ausgaben:
if(!int(@found) || !defined($found[0])) {
    my $h = $hash->{MatchList}; $h = $module->{MatchList} if(!$h);
    if(defined($h)) {
      foreach my $m (sort keys %{$h}) {
        Log 0, "SEARCH MATCH: key: $m *** $h->{$m} *** $dmsg";
        if($dmsg =~ m/$h->{$m}/) {
          my ($order, $mname) = split(":", $m);
            Log 0, "***** FOUND: $m *** $h->{$m} *** $dmsg";
          if($attr{global}{autoload_undefined_devices}) {
            Log 0,  "11111111111111111111111";
            my $newm = LoadModule($mname);
            $mname = $newm if($newm ne "UNDEFINED");
            if($modules{$mname} && $modules{$mname}{ParseFn}) {
              Log 0,  "222222222222222222222";
              no strict "refs"; $readingsUpdateDelayTrigger = 1;
              @found = &{$modules{$mname}{ParseFn}}($hash,$dmsg);
              use strict "refs"; $readingsUpdateDelayTrigger = 0;
            } else {
              Log 0, "ERROR: Cannot autoload $mname";
            }

          } else {
            Log3 $name, 3, "$name: Unknown $mname device detected, " .
                        "define one to get detailed information.";
            return undef;

          }
        }
      }
    }
    if(!int(@found) || !defined($found[0])) {
      DoTrigger($name, "UNKNOWNCODE $dmsg");
      Log3 $name, 3, "$name: Unknown code $dmsg, help me!";
      return undef;
    }
  }


Hat jemand eine Idee wo hier der Bug ist?

rudolfkoenig

ZitatLaut Doku ist das der Key und dieser muss Eindeutig sein.
Nein, key ist sowas wie "1:CUL_HM", und das klappt, sieht man auch in deinem debug-Output.

Sonst hast du einen Bug ausgegraben: falls sich mehrere, per MatchList gesuchte Module sich fuer ein String zustaendig fuehlen, gewinnt nicht der Erste sondern der Letzte. Habs gefixt und eingecheckt.

bjoernh

#20
Zitat von: rudolfkoenig am 26 Oktober 2015, 20:21:55
Nein, key ist sowas wie "1:CUL_HM", und das klappt, sieht man auch in deinem debug-Output.

Sonst hast du einen Bug ausgegraben: falls sich mehrere, per MatchList gesuchte Module sich fuer ein String zustaendig fuehlen, gewinnt nicht der Erste sondern der Letzte. Habs gefixt und eingecheckt.

Ich hab den Fehler gefunden!

Das Problem liegt in der fhem.pl

Die Schleife in Zeile 3231 muss beim ersten Match beendet werden.
Ansonsten überschreibt der zweite Match des Uniroll Moduls den Match und es kommt zu dem Fehlverhalten.

Hier der geänderte Code:
foreach my $m (sort keys %{$h}) {
        if($dmsg =~ m/$h->{$m}/) {
          my ($order, $mname) = split(":", $m);

          if($attr{global}{autoload_undefined_devices}) {
            my $newm = LoadModule($mname);
            $mname = $newm if($newm ne "UNDEFINED");
            if($modules{$mname} && $modules{$mname}{ParseFn}) {
              no strict "refs"; $readingsUpdateDelayTrigger = 1;
              @found = &{$modules{$mname}{ParseFn}}($hash,$dmsg);
              use strict "refs"; $readingsUpdateDelayTrigger = 0;
              [b]last;[/b]
            } else {
              Log 0, "ERROR: Cannot autoload $mname";
            }

          } else {
            Log3 $name, 3, "$name: Unknown $mname device detected, " .
                        "define one to get detailed information.";
            return undef;

          }
        }


Das Fette "last;" ist die Lösung.
Sobald der Match erfolgreich war sollte die foreach Schleife beendet werden.

Sehe gerade, dass Du geschrieben hast, dass es gefixt ist, ich werde den Thread dann schließen.


Ich habe es gerade auch nochmals verifiziert, es kann jetzt auch ein bereits vorhandener Key verwendet werden.