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:
parent
219af9b3e1
commit
3d1b0c7545
@ -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" : ""));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user