10_ZWave.pm: fix the commands sent by configRequestAll (Forum #40854)
git-svn-id: svn://svn.code.sf.net/p/fhem/code/trunk@9241 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
@@ -570,8 +570,10 @@ ZWave_Cmd($$@)
|
|||||||
# Collect the commands from the distinct classes
|
# Collect the commands from the distinct classes
|
||||||
my %cmdList;
|
my %cmdList;
|
||||||
my $classes = AttrVal($name, "classes", "");
|
my $classes = AttrVal($name, "classes", "");
|
||||||
|
my $cfgReq = ($type eq "set" && $cmd =~ m/^config/ && @a&&$a[0] eq "request");
|
||||||
|
shift(@a) if($cfgReq);
|
||||||
foreach my $cl (split(" ", $classes)) {
|
foreach my $cl (split(" ", $classes)) {
|
||||||
my $ptr = ZWave_getHash($hash, $cl, $type);
|
my $ptr = ZWave_getHash($hash, $cl, $cfgReq ? "get" : $type);
|
||||||
next if(!$ptr);
|
next if(!$ptr);
|
||||||
|
|
||||||
foreach my $k (keys %{$ptr}) {
|
foreach my $k (keys %{$ptr}) {
|
||||||
@@ -654,7 +656,8 @@ ZWave_Cmd($$@)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if($cmd =~ m/^config/ && $cmd ne "configRequestAll") {
|
if($cmd =~ m/^config/ && $cmd ne "configRequestAll") {
|
||||||
my ($err, $cmd) = ZWave_configCheckParam($hash, $type, $cmd, $cmdFmt, @a);
|
my ($err, $cmd) =
|
||||||
|
ZWave_configCheckParam($hash, $cfgReq, $type, $cmd, $cmdFmt, @a);
|
||||||
return $err if($err);
|
return $err if($err);
|
||||||
$cmdFmt = $cmd;
|
$cmdFmt = $cmd;
|
||||||
} else {
|
} else {
|
||||||
@@ -1464,17 +1467,16 @@ ZWave_configGetHash($)
|
|||||||
}
|
}
|
||||||
|
|
||||||
sub
|
sub
|
||||||
ZWave_configCheckParam($$$$@)
|
ZWave_configCheckParam($$$$$@)
|
||||||
{
|
{
|
||||||
my ($hash, $type, $cmd, $fmt, @arg) = @_;
|
my ($hash, $cfgReq, $type, $cmd, $fmt, @arg) = @_;
|
||||||
my $mc = ZWave_configGetHash($hash);
|
my $mc = ZWave_configGetHash($hash);
|
||||||
return ("", sprintf($fmt, @arg)) if(!$mc);
|
return ("", sprintf($fmt, @arg)) if(!$mc);
|
||||||
my $h = $mc->{config}{$cmd};
|
my $h = $mc->{config}{$cmd};
|
||||||
return ("", sprintf($fmt, @arg)) if(!$h);
|
return ("", sprintf($fmt, @arg)) if(!$h);
|
||||||
|
|
||||||
# Support "set XX configYY request" for configRequestAll
|
# Support "set XX configYY request" for configRequestAll
|
||||||
return ("", sprintf("05%02x", $h->{index}))
|
return ("", sprintf("05%02x", $h->{index})) if($type eq "get" || $cfgReq);
|
||||||
if($type eq "get" || ($type eq "set" && $arg[0] eq "request"));
|
|
||||||
|
|
||||||
my $t = $h->{type};
|
my $t = $h->{type};
|
||||||
if($t eq "list") {
|
if($t eq "list") {
|
||||||
@@ -1704,7 +1706,7 @@ ZWave_configRequestAll($)
|
|||||||
if(!$mc || !$mc->{config});
|
if(!$mc || !$mc->{config});
|
||||||
#use Data::Dumper;
|
#use Data::Dumper;
|
||||||
#Log 1, Dumper $mc;
|
#Log 1, Dumper $mc;
|
||||||
foreach my $c (sort keys %{$mc->{config}}) {
|
foreach my $c (sort keys %{$mc->{get}}) {
|
||||||
my $r = ZWave_Cmd("set", $hash, $hash->{NAME}, $c, "request");
|
my $r = ZWave_Cmd("set", $hash, $hash->{NAME}, $c, "request");
|
||||||
Log 1, "$c: $r" if($r);
|
Log 1, "$c: $r" if($r);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user