1
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-05-04 22:19:38 +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 %list = map { $defs{$_}{nodeIdHex} => $_ }
grep { $defs{$_}{homeId} && $defs{$_}{homeId} eq $homeId }
grep { $defs{$_}{homeId} &&
$defs{$_}{nodeIdHex} &&
$defs{$_}{homeId} eq $homeId }
keys %defs;
$nodes = join(" ",
map { $list{$_} ? $list{$_} : "UNKNOWN_".hex($_); }
@ -3084,22 +3086,25 @@ ZWave_mcaReport($$$$)
{
my ($homeId, $gId, $max, $arg) = @_;
my %list = map { $defs{$_}{nodeIdHex} => $_ }
grep { $defs{$_}{homeId} && $defs{$_}{homeId} eq $homeId }
grep { $defs{$_}{homeId} &&
$defs{$_}{nodeIdHex} &&
$defs{$_}{homeId} eq $homeId }
keys %defs;
my $nodes="";
my $ep="";
my $marker = index($arg, "00");
if($marker<0) {
$nodes = substr($arg, 0, length($arg));
} else {
$nodes = substr($arg, 0, $marker);
$ep = substr($arg, $marker+2, length($arg));
my ($ret, $step) = ("", 1);
my @arg = ($arg =~ m/../g);
for(my $idx = 0; $idx < @arg; $idx += $step) {
my $a = $arg[$idx];
if($step == 1 && $a eq "00") {
$step = 2;
$idx--;
next;
}
my $n = ($list{$a} ? $list{$a} : sprintf("UNKNOWN_%d", hex($a)));
$ret .= " ".($step == 1 ? $n : ($n.":".hex($arg[$idx+1])));
}
$nodes = join(" ",
map { $list{$_} ? $list{$_} : "UNKNOWN_".hex($_); }
($nodes =~ m/../g));
return sprintf("mca_%d:Max %d Nodes %s Endpoints %s",
hex($gId),hex($max), $nodes, $ep);
return sprintf("mca_%d:Max %d %s",
hex($gId), hex($max), ($ret ? "Active$ret" : ""));
}