2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-01-31 18:59:33 +00:00

00_CUL.pm: WMBUS RSSI Patch (Forum #26829)

git-svn-id: https://svn.fhem.de/fhem/trunk@6511 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2014-09-07 06:37:48 +00:00
parent a683e0fa47
commit 549f08cbf9

View File

@ -786,7 +786,7 @@ CUL_Parse($$$$@)
my $dmsgLog = (AttrVal($name,"rfmode","") eq "HomeMatic") my $dmsgLog = (AttrVal($name,"rfmode","") eq "HomeMatic")
? join(" ",(unpack'A1A2A2A4A6A6A*',$rmsg)) ? join(" ",(unpack'A1A2A2A4A6A6A*',$rmsg))
:$dmsg; :$dmsg;
if($dmsg =~ m/^[AFTKEHRStZri]([A-F0-9][A-F0-9])+$/) { # RSSI if($dmsg =~ m/^[AFTKEHRStZrib]([A-F0-9][A-F0-9])+$/) { # RSSI
my $l = length($dmsg); my $l = length($dmsg);
$rssi = hex(substr($dmsg, $l-2, 2)); $rssi = hex(substr($dmsg, $l-2, 2));
$dmsg = substr($dmsg, 0, $l-2); $dmsg = substr($dmsg, 0, $l-2);
@ -878,7 +878,7 @@ CUL_Parse($$$$@)
} elsif($fn eq "Z" && $len >= 21) { # Moritz/Max } elsif($fn eq "Z" && $len >= 21) { # Moritz/Max
; ;
} elsif($fn eq "b" && $len >= 24) { # Wireless M-Bus } elsif($fn eq "b" && $len >= 24) { # Wireless M-Bus
; $dmsg .= "::$rssi" if (defined($rssi));
} elsif($fn eq "t" && $len >= 5) { # TX3 } elsif($fn eq "t" && $len >= 5) { # TX3
$dmsg = "TX".substr($dmsg,1); # t.* is occupied by FHTTK $dmsg = "TX".substr($dmsg,1); # t.* is occupied by FHTTK
} else { } else {
@ -1002,7 +1002,7 @@ CUL_Attr(@)
if($hash->{CMDS} =~ m/b/ || IsDummy($hash->{NAME}) || !$hash->{FD}) { if($hash->{CMDS} =~ m/b/ || IsDummy($hash->{NAME}) || !$hash->{FD}) {
$hash->{Clients} = $clientsWMBus; $hash->{Clients} = $clientsWMBus;
$hash->{MatchList} = \%matchListWMBus; $hash->{MatchList} = \%matchListWMBus;
$hash->{initString} = "brs"; # Use S-Mode $hash->{initString} = "X21\nbrs"; # Use S-Mode, X21 is needed for RSSI reporting
CUL_WriteInit($hash); CUL_WriteInit($hash);
} else { } else {
@ -1014,7 +1014,7 @@ CUL_Attr(@)
if($hash->{CMDS} =~ m/b/ || IsDummy($hash->{NAME}) || !$hash->{FD}) { if($hash->{CMDS} =~ m/b/ || IsDummy($hash->{NAME}) || !$hash->{FD}) {
$hash->{Clients} = $clientsWMBus; $hash->{Clients} = $clientsWMBus;
$hash->{MatchList} = \%matchListWMBus; $hash->{MatchList} = \%matchListWMBus;
$hash->{initString} = "brt"; # Use T-Mode $hash->{initString} = "X21\nbrt"; # Use T-Mode, X21 is needed for RSSI reporting
CUL_WriteInit($hash); CUL_WriteInit($hash);
} else { } else {