1
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-05-07 22:29:19 +00:00

10_ZWave.pm: better mca parsing (Forum #50176)

git-svn-id: https://svn.fhem.de/fhem/trunk@12616 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2016-11-21 13:50:42 +00:00
parent 219af9b3e1
commit 3d1b0c7545

View File

@ -3071,7 +3071,9 @@ ZWave_assocGroup($$$$)
{ {
my ($homeId, $gId, $max, $nodes) = @_; my ($homeId, $gId, $max, $nodes) = @_;
my %list = map { $defs{$_}{nodeIdHex} => $_ } my %list = map { $defs{$_}{nodeIdHex} => $_ }
grep { $defs{$_}{homeId} && $defs{$_}{homeId} eq $homeId } grep { $defs{$_}{homeId} &&
$defs{$_}{nodeIdHex} &&
$defs{$_}{homeId} eq $homeId }
keys %defs; keys %defs;
$nodes = join(" ", $nodes = join(" ",
map { $list{$_} ? $list{$_} : "UNKNOWN_".hex($_); } map { $list{$_} ? $list{$_} : "UNKNOWN_".hex($_); }
@ -3084,22 +3086,25 @@ ZWave_mcaReport($$$$)
{ {
my ($homeId, $gId, $max, $arg) = @_; my ($homeId, $gId, $max, $arg) = @_;
my %list = map { $defs{$_}{nodeIdHex} => $_ } my %list = map { $defs{$_}{nodeIdHex} => $_ }
grep { $defs{$_}{homeId} && $defs{$_}{homeId} eq $homeId } grep { $defs{$_}{homeId} &&
$defs{$_}{nodeIdHex} &&
$defs{$_}{homeId} eq $homeId }
keys %defs; keys %defs;
my $nodes="";
my $ep=""; my ($ret, $step) = ("", 1);
my $marker = index($arg, "00"); my @arg = ($arg =~ m/../g);
if($marker<0) { for(my $idx = 0; $idx < @arg; $idx += $step) {
$nodes = substr($arg, 0, length($arg)); my $a = $arg[$idx];
} else { if($step == 1 && $a eq "00") {
$nodes = substr($arg, 0, $marker); $step = 2;
$ep = substr($arg, $marker+2, length($arg)); $idx--;
next;
} }
$nodes = join(" ", my $n = ($list{$a} ? $list{$a} : sprintf("UNKNOWN_%d", hex($a)));
map { $list{$_} ? $list{$_} : "UNKNOWN_".hex($_); } $ret .= " ".($step == 1 ? $n : ($n.":".hex($arg[$idx+1])));
($nodes =~ m/../g)); }
return sprintf("mca_%d:Max %d Nodes %s Endpoints %s", return sprintf("mca_%d:Max %d %s",
hex($gId),hex($max), $nodes, $ep); hex($gId), hex($max), ($ret ? "Active$ret" : ""));
} }