ZWave/ZWDongle: SUC/SIS Patches from krikan (Forum #53066)

git-svn-id: https://svn.fhem.de/fhem/trunk@11488 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig
2016-05-21 19:17:55 +00:00
parent 4513d94061
commit 79122d94c1
2 changed files with 63 additions and 9 deletions

View File

@@ -47,6 +47,8 @@ my %sets = (
# SERIAL_API_APPL_NODE_INFORMATION
"sucNodeId" => { cmd => "54%02x%02x00%02x@"},
# ZW_SET_SUC_NODE_ID
"sucRequestUpdate" => { cmd => "53%02x@"}, # ZW_REQUEST_NETWORK_UPDATE
"sucSendNodeId" => { cmd => "57%02x25@"}, # ZW_SEND_SUC_ID
"timeouts" => { cmd => "06%02x%02x" }, # SERIAL_API_SET_TIMEOUTS
);
@@ -943,6 +945,14 @@ ZWDongle_Ready($)
<capabilities>: 0 = basic SUC; 1 = SIS
</li>
<li>sucRequestUpdate &lt;decimal nodeId of SUC/SIS&gt;<br>
Request network updates from SUC/SIS. Primary do not need it.
</li>
<li>sucSendNodeId &lt;decimal nodeId&gt;<br>
Send SUC/SIS nodeId to the specified decimal controller nodeId.
</li>
</ul>
<br>
@@ -1015,7 +1025,13 @@ ZWDongle_Ready($)
<ul>
<br><b>General</b>
<li>UNDEFINED ZWave_${type6}_$id ZWave $homeId $id $classes"</li>
<li>UNDEFINED ZWave_${type6}_$id ZWave $homeId $id $classes</li>
<li>ZW_APPLICATION_UPDATE addDone $nodeId</li>
<li>ZW_APPLICATION_UPDATE deleteDone $nodeId</li>
<li>ZW_APPLICATION_UPDATE sudId $nodeId</li>
<br><b>addNode</b>
<li>ZW_ADD_NODE_TO_NETWORK [learnReady|nodeFound|slave|controller|
@@ -1053,15 +1069,28 @@ ZWDongle_Ready($)
failedNodeRemoveFail|nodeOk|failedNodeReplace|
failedNodeReplaceDone|failedNodeRemoveFailed]</li>
<br><b>sucNetworkUpdate</b>
<li>ZW_REQUEST_NETWORK_UPDATE [started|selfOrNoSUC|done|abort|wait|diabled|
overflow]</li>
<br><b>sucNodeId</b>
<li>ZW_SET_SUC_NODE_ID [ok|failed|callbackSucceeded|callbackFailed]</li>
</ul>
<br><b>sucRouteAdd / sucRouteDel</b>
<br><b>sucRouteAdd</b>
<li>ZW_ASSIGN_SUC_RETURN_ROUTE [started|alreadyActive|transmitOk|
transmitNoAck|transmitFail|transmitNotIdle|
transmitNoRoute]</li>
<br><b>sucRouteDel</b>
<li>ZW_DELETE_SUC_RETURN_ROUTE [started|alreadyActive|transmitOk|
transmitNoAck|transmitFail|transmitNotIdle|
transmitNoRoute]</li>
<br><b>sucSendNodeId</b>
<li>ZW_SEND_SUC_ID [started|alreadyActive|transmitOk|
transmitNoAck|transmitFail|transmitNotIdle|
transmitNoRoute]</li>
</ul>
</ul>

View File

@@ -3718,10 +3718,10 @@ ZWave_Parse($$@)
return "";
}
if($cmd eq "ZW_SET_SUC_NODE_ID") {
if($cmd eq "ZW_REQUEST_NETWORK_UPDATE") {
my $retval;
if($arg eq "00") { $retval = 'failed';
} elsif($arg eq "01") { $retval = 'ok';
if($arg eq "00") { $retval = 'selfOrNoSUC';
} elsif($arg eq "01") { $retval = 'started';
} else { $retval = 'unknown_'.$arg; # should never happen
}
DoTrigger($ioName, "$cmd $retval");
@@ -3729,7 +3729,8 @@ ZWave_Parse($$@)
}
if($cmd eq "ZW_ASSIGN_SUC_RETURN_ROUTE" ||
$cmd eq "ZW_DELETE_SUC_RETURN_ROUTE") {
$cmd eq "ZW_DELETE_SUC_RETURN_ROUTE" ||
$cmd eq "ZW_SEND_SUC_ID") {
my $retval;
if($arg eq "00") { $retval = 'alreadyActive';
} elsif($arg eq "01") { $retval = 'started';
@@ -3739,6 +3740,15 @@ ZWave_Parse($$@)
return "";
}
if($cmd eq "ZW_SET_SUC_NODE_ID") {
my $retval;
if($arg eq "00") { $retval = 'failed';
} elsif($arg eq "01") { $retval = 'ok';
} else { $retval = 'unknown_'.$arg; # should never happen
}
DoTrigger($ioName, "$cmd $retval");
return "";
}
Log3 $ioName, 4, "$ioName unhandled ANSWER: $cmd $arg";
return "";
@@ -3913,7 +3923,8 @@ ZWave_Parse($$@)
}
} elsif($cmd eq "ZW_ASSIGN_SUC_RETURN_ROUTE" ||
$cmd eq "ZW_DELETE_SUC_RETURN_ROUTE") {
$cmd eq "ZW_DELETE_SUC_RETURN_ROUTE" ||
$cmd eq "ZW_SEND_SUC_ID") {
if($id eq "00") { $evt = 'transmitOk';
} elsif($id eq "01") { $evt = 'transmitNoAck';
} elsif($id eq "02") { $evt = 'transmitFail';
@@ -3922,6 +3933,15 @@ ZWave_Parse($$@)
} else { $evt = 'unknown_'.$id; # should never happen
}
} elsif($cmd eq "ZW_REQUEST_NETWORK_UPDATE") {
if($id eq "00") { $evt = 'done';
} elsif($id eq "01") { $evt = 'abort';
} elsif($id eq "02") { $evt = 'wait';
} elsif($id eq "03") { $evt = 'disabled';
} elsif($id eq "04") { $evt = 'overflow';
} else { $evt = 'unknown_'.$id; # should never happen
}
} elsif($cmd eq "ZW_SET_SUC_NODE_ID") {
if($id eq "05") { $evt = 'callbackSucceeded';
} elsif($id eq "06") { $evt = 'callbackFailed';
@@ -5145,11 +5165,16 @@ s2Hex($)
<br><b>neighborUpdate</b>
<li>ZW_REQUEST_NODE_NEIGHBOR_UPDATE [started|done|failed]</li>
<br><b>sucRouteAdd / sucRouteDel</b>
<br><b>sucRouteAdd</b>
<li>ZW_ASSIGN_SUC_RETURN_ROUTE [started|alreadyActive|transmitOk|
transmitNoAck|transmitFail|transmitNotIdle|
transmitNoRoute]</li>
<br><b>sucRouteDel</b>
<li>ZW_DELETE_SUC_RETURN_ROUTE [started|alreadyActive|transmitOk|
transmitNoAck|transmitFail|transmitNotIdle|
transmitNoRoute]</li>
<br><b>Class ALARM</b>
<li>Devices with class version 1 support: alarm_type_X:level Y</li>
<li>For higher class versions more detailed events with 100+ different