diff --git a/fhem/FHEM/00_ZWDongle.pm b/fhem/FHEM/00_ZWDongle.pm
index 826180ae1..9da39a01f 100755
--- a/fhem/FHEM/00_ZWDongle.pm
+++ b/fhem/FHEM/00_ZWDongle.pm
@@ -31,7 +31,7 @@ my %sets = (
param => {nwOn=>0xc1, on=>0x81, off=>0x05 } },
"createNode" => { cmd => "60%02x" }, # ZW_REQUEST_NODE_INFO'
"removeFailedNode" => { cmd => "61%02x@" }, # ZW_REMOVE_FAILED_NODE_ID
- "replaceFailedNode"=> { cmd => "63%02x" }, # ZW_REPLACE_FAILED_NODE
+ "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
"setNIF" => { cmd => "03%02x%02x%02x%02x" },
@@ -882,10 +882,14 @@ ZWDongle_Ready($)
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.
+ Remove a non-responding node -that must be on the failed Node list- from
+ the routing table in controller. Instead,always use removeNode if possible.
Note: the corresponding fhem device have to be deleted manually.
+ replaceFailedNode
+ Replace a non-responding node with a new one. The non-responding node
+ must be on the failed Node list.
+
reopen
First close and then open the device. Used for debugging purposes.
@@ -953,13 +957,19 @@ 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]
+ [failedNodeRemoveStarted|notPrimaryController|noCallbackFunction|
+ failedNodeNotFound|failedNodeRemoveProcessBusy|
+ failedNodeRemoveFail|nodeOk|nodeRemoved|nodeNotRemoved]
ZW_REMOVE_NODE_FROM_NETWORK
[learnReady|nodeFound|slave|controller|done|failed]
+ ZW_REPLACE_FAILED_NODE
+ [failedNodeRemoveStarted|notPrimaryController|noCallbackFunction|
+ failedNodeNotFound|failedNodeRemoveProcessBusy|
+ failedNodeRemoveFail|nodeOk|failedNodeReplace|
+ failedNodeReplaceDone|failedNodeRemoveFailed]
+
UNDEFINED ZWave_${type6}_$id ZWave $homeId $id $classes"
ZW_REQUEST_NODE_NEIGHBOR_UPDATE [started|done|failed]
diff --git a/fhem/FHEM/10_ZWave.pm b/fhem/FHEM/10_ZWave.pm
index 6aa0bab53..a4324c455 100755
--- a/fhem/FHEM/10_ZWave.pm
+++ b/fhem/FHEM/10_ZWave.pm
@@ -2525,22 +2525,16 @@ ZWave_Parse($$@)
Log3 $ioName, 2, "SERIAL_API_SET_TIMEOUTS: ACK:$1 BYTES:$2";
return "";
}
- if($cmd eq "ZW_REMOVE_FAILED_NODE_ID") {
+ if($cmd eq "ZW_REMOVE_FAILED_NODE_ID" ||
+ $cmd eq "ZW_REPLACE_FAILED_NODE") {
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
+ 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 "";
@@ -2656,25 +2650,25 @@ ZWave_Parse($$@)
}
} elsif($cmd eq "ZW_REQUEST_NODE_NEIGHBOR_UPDATE") {
- if ($id eq "21") {
- $evt = 'started';
- } elsif ($id eq "22") {
- $evt = 'done';
- } elsif ($id eq "23") {
- $evt = 'failed';
- } else {
- $evt = 'unknown'; # should never happen
+ if($id eq "21") { $evt = 'started';
+ } elsif($id eq "22") { $evt = 'done';
+ } elsif($id eq "23") { $evt = 'failed';
+ } else { $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($id eq "00") { $evt = 'nodeOk';
+ } elsif($id eq "01") { $evt = 'failedNodeRemoved';
+ } elsif($id eq "02") { $evt = 'failedNodeNotRemoved';
+ } else { $evt = 'unknown_'.$id; # should never happen
+ }
+
+ } elsif($cmd eq "ZW_REPLACE_FAILED_NODE") {
+ if($id eq "00") { $evt = 'nodeOk';
+ } elsif($id eq "03") { $evt = 'failedNodeReplace';
+ } elsif($id eq "04") { $evt = 'failedNodeReplaceDone';
+ } elsif($id eq "05") { $evt = 'failedNodeRemoveFailed';
+ } else { $evt = 'unknown_'.$id; # should never happen
}
}