10_ZWave.pm: fix showSetInState/setReadingOnAc for MULTI_CHANNEL (Forum #112955)

git-svn-id: https://svn.fhem.de/fhem/trunk@23160 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2020-11-15 10:06:55 +00:00
parent a970deca02
commit 7047ac9664

View File

@ -5100,31 +5100,39 @@ ZWave_Parse($$@)
my $name=""; my $name="";
if($hash) { if($hash) {
ZWave_processSendStack($hash, "ack", $callbackid); ZWave_processSendStack($hash, "ack", $callbackid);
readingsBeginUpdate($hash); readingsSingleUpdate($hash, "transmit", $lmsg, 0);
readingsBulkUpdate($hash, "transmit", $lmsg, 0);
my $lCU = $hash->{lastChannelUsed}; my $sos = ($iodev->{showSetInState} ||
my $lname = $lCU ? $lCU : $hash->{NAME}; $iodev->{setReadingOnAck});
if($iodev->{showSetInState}) { if($sos) {
my $state = ReadingsVal($lname, "state", ""); my $lCU = $hash->{lastChannelUsed};
if($state =~ m/^set_(.*)$/) { my $lname = $lCU ? $lCU : $hash->{NAME};
readingsBulkUpdate($defs{$lname}, "state", $1, 1); my $lhash = $defs{$lname} ? $defs{$lname} : $hash;
$name = $lname;
readingsBeginUpdate($lhash);
if($iodev->{showSetInState}) {
my $state = ReadingsVal($lname, "state", "");
if($state =~ m/^set_(.*)$/) {
readingsBulkUpdate($lhash, "state", $1, 1);
$name = $lname;
}
} }
}
if($iodev->{setReadingOnAck}) { if($iodev->{setReadingOnAck}) {
my $ackCmd = $zwave_cbid2cmd{$callbackid}; my $ackCmd = $zwave_cbid2cmd{$callbackid};
if($ackCmd) { if($ackCmd) {
#Log 1, "ACK: $callbackid => $ackCmd"; #Log 1, "ACK: $callbackid => $ackCmd";
my ($type, $reading, $val) = split(" ", $ackCmd, 3); my ($type, $reading, $val) = split(" ", $ackCmd, 3);
readingsBulkUpdate($defs{$lname}, $reading, $val, 1) readingsBulkUpdate($lhash, $reading, $val, 1)
if($type eq "set" && defined($val)); if($type eq "set" && defined($val));
$name = $lname;
}
} }
}
readingsEndUpdate($hash, 1); readingsEndUpdate($lhash, 1) if($sos);
}
} }
delete($hash->{lastChannelUsed}); delete($hash->{lastChannelUsed});
return $name; return $name;