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

10_ZWave.pm: fix multiChannel issues with showSetInState (Forum #75742)

git-svn-id: https://svn.fhem.de/fhem/trunk@15064 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2017-09-14 18:34:05 +00:00
parent 3a9dd46481
commit 366e58b553

View File

@ -931,8 +931,7 @@ ZWave_Cmd($$@)
} }
my $id = $hash->{nodeIdHex}; my $id = $hash->{nodeIdHex};
my $isMc = ($id =~ m/(....)/); if($id !~ m/(....)/) { # not multiChannel
if(!$isMc) {
if($type eq "set") { if($type eq "set") {
$cmdList{neighborUpdate} = { fmt=>"48$id", id=>"", ctrlCmd=>1 }; $cmdList{neighborUpdate} = { fmt=>"48$id", id=>"", ctrlCmd=>1 };
$cmdList{returnRouteAdd} = { fmt=>"46$id%02x", id=>"", ctrlCmd=>1 }; $cmdList{returnRouteAdd} = { fmt=>"46$id%02x", id=>"", ctrlCmd=>1 };
@ -1039,6 +1038,7 @@ ZWave_Cmd($$@)
Log3 $name, 3, "ZWave $type $name $cmd ".join(" ", @a); Log3 $name, 3, "ZWave $type $name $cmd ".join(" ", @a);
my ($baseClasses, $baseHash) = ($classes, $hash); my ($baseClasses, $baseHash) = ($classes, $hash);
delete($hash->{lastChannelUsed});
if($id =~ m/(..)(..)/) { # Multi-Channel, encapsulate if($id =~ m/(..)(..)/) { # Multi-Channel, encapsulate
my ($baseId,$ch) = ($1, $2); my ($baseId,$ch) = ($1, $2);
$id = $baseId; $id = $baseId;
@ -1046,6 +1046,7 @@ ZWave_Cmd($$@)
$cmdId = "60"; # MULTI_CHANNEL $cmdId = "60"; # MULTI_CHANNEL
$baseHash = $modules{ZWave}{defptr}{"$hash->{homeId} $baseId"}; $baseHash = $modules{ZWave}{defptr}{"$hash->{homeId} $baseId"};
$baseClasses = AttrVal($baseHash->{NAME}, "classes", ""); $baseClasses = AttrVal($baseHash->{NAME}, "classes", "");
$baseHash->{lastChannelUsed} = $name;
} }
my $data; my $data;
@ -4700,13 +4701,16 @@ ZWave_Parse($$@)
ZWave_processSendStack($hash, "ack", $callbackid); ZWave_processSendStack($hash, "ack", $callbackid);
readingsSingleUpdate($hash, "transmit", $lmsg, 0); readingsSingleUpdate($hash, "transmit", $lmsg, 0);
if($iodev->{showSetInState}) { if($iodev->{showSetInState}) {
my $state = ReadingsVal($hash->{NAME}, "state", ""); my $lCU = $hash->{lastChannelUsed};
my $lname = $lCU ? $lCU : $hash->{NAME};
my $state = ReadingsVal($lname, "state", "");
if($state =~ m/^set_(.*)$/) { if($state =~ m/^set_(.*)$/) {
readingsSingleUpdate($hash, "state", $1, 1); readingsSingleUpdate($defs{$lname}, "state", $1, 1);
$name = $hash->{NAME}; $name = $lname;
} }
} }
} }
delete($hash->{lastChannelUsed});
return $name; return $name;
} else { # Wait for the retry timer to remove this cmd from the stack. } else { # Wait for the retry timer to remove this cmd from the stack.