2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-08 07:24:21 +00:00

10_ZWDongle.pm: replaceFailedNode.patch (Forum #41701)

git-svn-id: https://svn.fhem.de/fhem/trunk@9348 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2015-10-03 10:17:03 +00:00
parent 3d4e85bdeb
commit 1ec9a63eb5
2 changed files with 41 additions and 37 deletions

View File

@ -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.</li>
<li>removeFailedNode<br>
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.</li>
<li>replaceFailedNode<br>
Replace a non-responding node with a new one. The non-responding node
must be on the failed Node list.</li>
<li>reopen<br>
First close and then open the device. Used for debugging purposes.
</li>
@ -953,13 +957,19 @@ ZWDongle_Ready($)
<li>ZW_ADD_NODE_TO_NETWORK [learnReady|nodeFound|controller|done|failed]
</li>
<li>ZW_REMOVE_FAILED_NODE_ID
[notPrimaryController|noCallbackFunction|failedNodeNotFound|
failedNodeProcessBusy|failedNodeRemoveFail|nodeOk|nodeRemoved|
nodeNotRemoved]
[failedNodeRemoveStarted|notPrimaryController|noCallbackFunction|
failedNodeNotFound|failedNodeRemoveProcessBusy|
failedNodeRemoveFail|nodeOk|nodeRemoved|nodeNotRemoved]
</li>
<li>ZW_REMOVE_NODE_FROM_NETWORK
[learnReady|nodeFound|slave|controller|done|failed]
</li>
<li>ZW_REPLACE_FAILED_NODE
[failedNodeRemoveStarted|notPrimaryController|noCallbackFunction|
failedNodeNotFound|failedNodeRemoveProcessBusy|
failedNodeRemoveFail|nodeOk|failedNodeReplace|
failedNodeReplaceDone|failedNodeRemoveFailed]
</li>
<li>UNDEFINED ZWave_${type6}_$id ZWave $homeId $id $classes"
</li>
<li>ZW_REQUEST_NODE_NEIGHBOR_UPDATE [started|done|failed]

View File

@ -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
}
}