diff --git a/fhem/FHEM/00_ZWDongle.pm b/fhem/FHEM/00_ZWDongle.pm
index 4e43d807f..826180ae1 100755
--- a/fhem/FHEM/00_ZWDongle.pm
+++ b/fhem/FHEM/00_ZWDongle.pm
@@ -30,7 +30,7 @@ my %sets = (
"removeNode" => { cmd => "4b%02x@", # ZW_REMOVE_NODE_FROM_NETWORK'
param => {nwOn=>0xc1, on=>0x81, off=>0x05 } },
"createNode" => { cmd => "60%02x" }, # ZW_REQUEST_NODE_INFO'
- "removeFailedNode" => { cmd => "61%02x" }, # ZW_REMOVE_FAILED_NODE_ID
+ "removeFailedNode" => { cmd => "61%02x@" }, # ZW_REMOVE_FAILED_NODE_ID
"replaceFailedNode"=> { cmd => "63%02x" }, # ZW_REPLACE_FAILED_NODE
"neighborUpdate" => { cmd => "48%02x" }, # ZW_REQUEST_NODE_NEIGHBOR_UPDATE
"sendNIF" => { cmd => "12%02x05@" },# ZW_SEND_NODE_INFORMATION
@@ -443,6 +443,9 @@ ZWDongle_Get($@)
return "$name: Cannot generate" if($ret !~ m/^011c01(..)(.*)$/);
$msg = $2; @a = ();
+ } elsif($type eq "isFailedNode") { ############################
+ $msg = ($r[2]==1)?"yes":"no";
+
}
$type .= "_".join("_", @a) if(@a);
@@ -878,6 +881,11 @@ ZWDongle_Ready($)
update process. To read node's neighbor list see neighborList get
below.
+
removeFailedNode
+ Remove a non-responding node that must be on the failed Node list from
+ the node list in controller. Instead, always use removeNode if possible.
+ Note: the corresponding fhem device have to be deleted manually.
+
reopen
First close and then open the device. Used for debugging purposes.
@@ -895,6 +903,9 @@ ZWDongle_Ready($)
homeId
return the six hex-digit homeId of the controller.
+ isFailedNode
+ return if a node is stored in the failed node List.
+
caps, ctrlCaps, version
return different controller specific information. Needed by developers
only.
@@ -941,6 +952,11 @@ ZWDongle_Ready($)
- ZW_ADD_NODE_TO_NETWORK [learnReady|nodeFound|controller|done|failed]
+ - ZW_REMOVE_FAILED_NODE_ID
+ [notPrimaryController|noCallbackFunction|failedNodeNotFound|
+ failedNodeProcessBusy|failedNodeRemoveFail|nodeOk|nodeRemoved|
+ nodeNotRemoved]
+
- ZW_REMOVE_NODE_FROM_NETWORK
[learnReady|nodeFound|slave|controller|done|failed]
diff --git a/fhem/FHEM/10_ZWave.pm b/fhem/FHEM/10_ZWave.pm
index 0ad794dcb..24dbd633b 100755
--- a/fhem/FHEM/10_ZWave.pm
+++ b/fhem/FHEM/10_ZWave.pm
@@ -2523,6 +2523,27 @@ ZWave_Parse($$@)
Log3 $ioName, 2, "SERIAL_API_SET_TIMEOUTS: ACK:$1 BYTES:$2";
return "";
}
+ if($cmd eq "ZW_REMOVE_FAILED_NODE_ID") {
+ my $retval;
+ if ($arg eq "00") {
+ $retval = 'failedNodeRemoveStarted';
+ } elsif ($arg eq "02") {
+ $retval = 'notPrimaryController';
+ } elsif ($arg eq "04") {
+ $retval = 'noCallbackFunction';
+ } elsif ($arg eq "08") {
+ $retval = 'failedNodeNotFound';
+ } elsif ($arg eq "10") {
+ $retval = 'failedNodeRemoveProcessBusy';
+ } elsif ($arg eq "20") {
+ $retval = 'failedNodeRemoveFail';
+ } else {
+ $retval = 'unknown_'.$arg; # should never happen
+ }
+ DoTrigger($ioName, "$cmd $retval");
+ return "";
+ }
+
Log3 $ioName, 4, "$ioName unhandled ANSWER: $cmd $arg";
return "";
}
@@ -2643,6 +2664,17 @@ ZWave_Parse($$@)
$evt = 'unknown'; # should never happen
}
+ } elsif($cmd eq "ZW_REMOVE_FAILED_NODE_ID") {
+ if ($id eq "00") {
+ $evt = 'nodeOk';
+ } elsif ($id eq "01") {
+ $evt = 'failedNodeRemoved';
+ } elsif ($id eq "02") {
+ $evt = 'failedNodeNotRemoved';
+ } else {
+ $evt = 'unknown_'.$id; # should never happen
+ }
+
}
if($evt) {
@@ -3187,7 +3219,7 @@ s2Hex($)
Class COLOR_CONTROL
- - ccCapabilities
+ - ccCapability
return capabilities.
- ccStatus channelId
return status of channel ChannelId.
@@ -3470,7 +3502,7 @@ s2Hex($)
- clock:[mon|tue|wed|thu|fri|sat|sun] HH:MM
Class COLOR_CONTROL
- - ccCapabilities:XY
+ - ccCapability:XY
- ccStatus_X:Y
Class CONFIGURATION