<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.linuxmce.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dmurrle</id>
	<title>LinuxMCE - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.linuxmce.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dmurrle"/>
	<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php/Special:Contributions/Dmurrle"/>
	<updated>2026-07-21T23:35:28Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18303</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18303"/>
		<updated>2009-04-05T01:30:42Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* RZP03 Vizia Leviton Appliance Module dimmer 908.42Mhz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_INSTANCE                    0x60 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_MULTILEVEL                 0x31 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_BINARY                     0x25 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 60, 31, 70, 84, 85, 80, 72, 77, 86&lt;br /&gt;
 Manufacturer ID: 1E (HomeSeer) Type: 02 ID: 01&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6 or App: 1.7&lt;br /&gt;
 COMMAND_CLASS_MULTI_INSTANCE, 60&lt;br /&gt;
 COMMAND_CLASS_SENSOR_MULTILEVEL, 31&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_WAKE_UP, 84&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_BATTERY, 80&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_VERSION 86&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch 908.42Mhz ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82 &lt;br /&gt;
 manufacturer ID: 00 1D (Leviton) &lt;br /&gt;
 Type: 101 ID: 206&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 63 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch 908.42Mhz ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 301 ID: 206&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25 &lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer 908.42Mhz ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 00 1D(Leviton) Type: 201 ID: 206&lt;br /&gt;
 Lib: 2.6 App: 0.3&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== VRE06 Vizia Leviton Wallplate VRE06 908.40Mhz ====&lt;br /&gt;
&lt;br /&gt;
==== Intermatic HA04C Outdoor Lighting Module switch 908.42Mhz ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03&lt;br /&gt;
 version: Lib: 1.28 App: 2.0&lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Electronic Solutions Inc DBMZ DC motor controler ====&lt;br /&gt;
 Device supports classes: 26, 72, 86, 27, 70, 73&lt;br /&gt;
 Manufacturer ID: 00 33(Electronic Solutions Inc) Type: 5250 ID: 3032&lt;br /&gt;
 Lib: 2.24 App: 1.1&lt;br /&gt;
 The difference between a switch and a dimmer is the class 26 for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18302</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18302"/>
		<updated>2009-04-05T00:55:26Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* Intermatic HA04C Outdoor Lighting Module switch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_INSTANCE                    0x60 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_MULTILEVEL                 0x31 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_BINARY                     0x25 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 60, 31, 70, 84, 85, 80, 72, 77, 86&lt;br /&gt;
 Manufacturer ID: 1E (HomeSeer) Type: 02 ID: 01&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6 or App: 1.7&lt;br /&gt;
 COMMAND_CLASS_MULTI_INSTANCE, 60&lt;br /&gt;
 COMMAND_CLASS_SENSOR_MULTILEVEL, 31&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_WAKE_UP, 84&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_BATTERY, 80&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_VERSION 86&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch 908.42Mhz ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82 &lt;br /&gt;
 manufacturer ID: 00 1D (Leviton) &lt;br /&gt;
 Type: 101 ID: 206&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 63 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch 908.42Mhz ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 301 ID: 206&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25 &lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer 908.42Mhz ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 00 1D(Leviton) Type: 201 ID: 206&lt;br /&gt;
 Lib: 2.6 App: 0.3&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Intermatic HA04C Outdoor Lighting Module switch 908.42Mhz ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03&lt;br /&gt;
 version: Lib: 1.28 App: 2.0&lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Electronic Solutions Inc DBMZ DC motor controler ====&lt;br /&gt;
 Device supports classes: 26, 72, 86, 27, 70, 73&lt;br /&gt;
 Manufacturer ID: 00 33(Electronic Solutions Inc) Type: 5250 ID: 3032&lt;br /&gt;
 Lib: 2.24 App: 1.1&lt;br /&gt;
 The difference between a switch and a dimmer is the class 26 for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18301</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18301"/>
		<updated>2009-04-05T00:33:44Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* RZP15 Vizia Leviton Appliance Module switch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_INSTANCE                    0x60 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_MULTILEVEL                 0x31 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_BINARY                     0x25 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 60, 31, 70, 84, 85, 80, 72, 77, 86&lt;br /&gt;
 Manufacturer ID: 1E (HomeSeer) Type: 02 ID: 01&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6 or App: 1.7&lt;br /&gt;
 COMMAND_CLASS_MULTI_INSTANCE, 60&lt;br /&gt;
 COMMAND_CLASS_SENSOR_MULTILEVEL, 31&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_WAKE_UP, 84&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_BATTERY, 80&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_VERSION 86&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch 908.42Mhz ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82 &lt;br /&gt;
 manufacturer ID: 00 1D (Leviton) &lt;br /&gt;
 Type: 101 ID: 206&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 63 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch 908.42Mhz ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 301 ID: 206&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25 &lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer 908.42Mhz ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 00 1D(Leviton) Type: 201 ID: 206&lt;br /&gt;
 Lib: 2.6 App: 0.3&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Intermatic HA04C Outdoor Lighting Module switch ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03&lt;br /&gt;
 version: Lib: 1.28 App: 2.0&lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Electronic Solutions Inc DBMZ DC motor controler ====&lt;br /&gt;
 Device supports classes: 26, 72, 86, 27, 70, 73&lt;br /&gt;
 Manufacturer ID: 00 33(Electronic Solutions Inc) Type: 5250 ID: 3032&lt;br /&gt;
 Lib: 2.24 App: 1.1&lt;br /&gt;
 The difference between a switch and a dimmer is the class 26 for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18300</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18300"/>
		<updated>2009-04-05T00:33:23Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* RZS15 Vizia Leviton Wall switch 908.42 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_INSTANCE                    0x60 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_MULTILEVEL                 0x31 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_BINARY                     0x25 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 60, 31, 70, 84, 85, 80, 72, 77, 86&lt;br /&gt;
 Manufacturer ID: 1E (HomeSeer) Type: 02 ID: 01&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6 or App: 1.7&lt;br /&gt;
 COMMAND_CLASS_MULTI_INSTANCE, 60&lt;br /&gt;
 COMMAND_CLASS_SENSOR_MULTILEVEL, 31&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_WAKE_UP, 84&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_BATTERY, 80&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_VERSION 86&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82 &lt;br /&gt;
 manufacturer ID: 00 1D (Leviton) &lt;br /&gt;
 Type: 101 ID: 206&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 63 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch 908.42Mhz ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 301 ID: 206&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25 &lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer 908.42Mhz ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 00 1D(Leviton) Type: 201 ID: 206&lt;br /&gt;
 Lib: 2.6 App: 0.3&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Intermatic HA04C Outdoor Lighting Module switch ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03&lt;br /&gt;
 version: Lib: 1.28 App: 2.0&lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Electronic Solutions Inc DBMZ DC motor controler ====&lt;br /&gt;
 Device supports classes: 26, 72, 86, 27, 70, 73&lt;br /&gt;
 Manufacturer ID: 00 33(Electronic Solutions Inc) Type: 5250 ID: 3032&lt;br /&gt;
 Lib: 2.24 App: 1.1&lt;br /&gt;
 The difference between a switch and a dimmer is the class 26 for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18299</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18299"/>
		<updated>2009-04-05T00:33:08Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* RZS15 Vizia Leviton Wall switch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_INSTANCE                    0x60 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_MULTILEVEL                 0x31 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_BINARY                     0x25 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 60, 31, 70, 84, 85, 80, 72, 77, 86&lt;br /&gt;
 Manufacturer ID: 1E (HomeSeer) Type: 02 ID: 01&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6 or App: 1.7&lt;br /&gt;
 COMMAND_CLASS_MULTI_INSTANCE, 60&lt;br /&gt;
 COMMAND_CLASS_SENSOR_MULTILEVEL, 31&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_WAKE_UP, 84&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_BATTERY, 80&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_VERSION 86&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82 &lt;br /&gt;
 manufacturer ID: 00 1D (Leviton) &lt;br /&gt;
 Type: 101 ID: 206&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 63 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch 908.42 ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 301 ID: 206&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25 &lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer 908.42Mhz ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 00 1D(Leviton) Type: 201 ID: 206&lt;br /&gt;
 Lib: 2.6 App: 0.3&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Intermatic HA04C Outdoor Lighting Module switch ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03&lt;br /&gt;
 version: Lib: 1.28 App: 2.0&lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Electronic Solutions Inc DBMZ DC motor controler ====&lt;br /&gt;
 Device supports classes: 26, 72, 86, 27, 70, 73&lt;br /&gt;
 Manufacturer ID: 00 33(Electronic Solutions Inc) Type: 5250 ID: 3032&lt;br /&gt;
 Lib: 2.24 App: 1.1&lt;br /&gt;
 The difference between a switch and a dimmer is the class 26 for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18298</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18298"/>
		<updated>2009-04-05T00:32:42Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* RZP03 Vizia Leviton Appliance Module dimmer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_INSTANCE                    0x60 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_MULTILEVEL                 0x31 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_BINARY                     0x25 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 60, 31, 70, 84, 85, 80, 72, 77, 86&lt;br /&gt;
 Manufacturer ID: 1E (HomeSeer) Type: 02 ID: 01&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6 or App: 1.7&lt;br /&gt;
 COMMAND_CLASS_MULTI_INSTANCE, 60&lt;br /&gt;
 COMMAND_CLASS_SENSOR_MULTILEVEL, 31&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_WAKE_UP, 84&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_BATTERY, 80&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_VERSION 86&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82 &lt;br /&gt;
 manufacturer ID: 00 1D (Leviton) &lt;br /&gt;
 Type: 101 ID: 206&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 63 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 301 ID: 206&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25 &lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer 908.42Mhz ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 00 1D(Leviton) Type: 201 ID: 206&lt;br /&gt;
 Lib: 2.6 App: 0.3&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Intermatic HA04C Outdoor Lighting Module switch ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03&lt;br /&gt;
 version: Lib: 1.28 App: 2.0&lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Electronic Solutions Inc DBMZ DC motor controler ====&lt;br /&gt;
 Device supports classes: 26, 72, 86, 27, 70, 73&lt;br /&gt;
 Manufacturer ID: 00 33(Electronic Solutions Inc) Type: 5250 ID: 3032&lt;br /&gt;
 Lib: 2.24 App: 1.1&lt;br /&gt;
 The difference between a switch and a dimmer is the class 26 for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18236</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18236"/>
		<updated>2009-03-31T02:46:17Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* All the known classes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_INSTANCE                    0x60 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_MULTILEVEL                 0x31 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_BINARY                     0x25 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 60, 31, 70, 84, 85, 80, 72, 77, 86&lt;br /&gt;
 Manufacturer ID: 1E (HomeSeer) Type: 02 ID: 01&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6 or App: 1.7&lt;br /&gt;
 COMMAND_CLASS_MULTI_INSTANCE, 60&lt;br /&gt;
 COMMAND_CLASS_SENSOR_MULTILEVEL, 31&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_WAKE_UP, 84&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_BATTERY, 80&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_VERSION 86&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82 &lt;br /&gt;
 manufacturer ID: 00 1D (Leviton) &lt;br /&gt;
 Type: 101 ID: 206&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 63 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 301 ID: 206&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25 &lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 00 1D(Leviton) Type: 201 ID: 206&lt;br /&gt;
 Lib: 2.6 App: 0.3&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Intermatic HA04C Outdoor Lighting Module switch ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03&lt;br /&gt;
 version: Lib: 1.28 App: 2.0&lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Electronic Solutions Inc DBMZ DC motor controler ====&lt;br /&gt;
 Device supports classes: 26, 72, 86, 27, 70, 73&lt;br /&gt;
 Manufacturer ID: 00 33(Electronic Solutions Inc) Type: 5250 ID: 3032&lt;br /&gt;
 Lib: 2.24 App: 1.1&lt;br /&gt;
 The difference between a switch and a dimmer is the class 26 for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18235</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18235"/>
		<updated>2009-03-31T02:44:45Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* All the known classes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_INSTANCE                    0x60 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_MULTILEVEL                 0x31 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                           0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_BINARY                     0x25 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 60, 31, 70, 84, 85, 80, 72, 77, 86&lt;br /&gt;
 Manufacturer ID: 1E (HomeSeer) Type: 02 ID: 01&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6 or App: 1.7&lt;br /&gt;
 COMMAND_CLASS_MULTI_INSTANCE, 60&lt;br /&gt;
 COMMAND_CLASS_SENSOR_MULTILEVEL, 31&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_WAKE_UP, 84&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_BATTERY, 80&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_VERSION 86&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82 &lt;br /&gt;
 manufacturer ID: 00 1D (Leviton) &lt;br /&gt;
 Type: 101 ID: 206&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 63 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 301 ID: 206&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25 &lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 00 1D(Leviton) Type: 201 ID: 206&lt;br /&gt;
 Lib: 2.6 App: 0.3&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Intermatic HA04C Outdoor Lighting Module switch ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03&lt;br /&gt;
 version: Lib: 1.28 App: 2.0&lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Electronic Solutions Inc DBMZ DC motor controler ====&lt;br /&gt;
 Device supports classes: 26, 72, 86, 27, 70, 73&lt;br /&gt;
 Manufacturer ID: 00 33(Electronic Solutions Inc) Type: 5250 ID: 3032&lt;br /&gt;
 Lib: 2.24 App: 1.1&lt;br /&gt;
 The difference between a switch and a dimmer is the class 26 for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18234</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18234"/>
		<updated>2009-03-31T02:42:03Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* Electronic Solutions Inc DBMZ DC motor controler */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 60, 31, 70, 84, 85, 80, 72, 77, 86&lt;br /&gt;
 Manufacturer ID: 1E (HomeSeer) Type: 02 ID: 01&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6 or App: 1.7&lt;br /&gt;
 COMMAND_CLASS_MULTI_INSTANCE, 60&lt;br /&gt;
 COMMAND_CLASS_SENSOR_MULTILEVEL, 31&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_WAKE_UP, 84&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_BATTERY, 80&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_VERSION 86&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82 &lt;br /&gt;
 manufacturer ID: 00 1D (Leviton) &lt;br /&gt;
 Type: 101 ID: 206&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 63 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 301 ID: 206&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25 &lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 00 1D(Leviton) Type: 201 ID: 206&lt;br /&gt;
 Lib: 2.6 App: 0.3&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Intermatic HA04C Outdoor Lighting Module switch ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03&lt;br /&gt;
 version: Lib: 1.28 App: 2.0&lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Electronic Solutions Inc DBMZ DC motor controler ====&lt;br /&gt;
 Device supports classes: 26, 72, 86, 27, 70, 73&lt;br /&gt;
 Manufacturer ID: 00 33(Electronic Solutions Inc) Type: 5250 ID: 3032&lt;br /&gt;
 Lib: 2.24 App: 1.1&lt;br /&gt;
 The difference between a switch and a dimmer is the class 26 for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18233</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18233"/>
		<updated>2009-03-31T02:41:46Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* Intermatic HA04C Outdoor Lighting Module switch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 60, 31, 70, 84, 85, 80, 72, 77, 86&lt;br /&gt;
 Manufacturer ID: 1E (HomeSeer) Type: 02 ID: 01&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6 or App: 1.7&lt;br /&gt;
 COMMAND_CLASS_MULTI_INSTANCE, 60&lt;br /&gt;
 COMMAND_CLASS_SENSOR_MULTILEVEL, 31&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_WAKE_UP, 84&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_BATTERY, 80&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_VERSION 86&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82 &lt;br /&gt;
 manufacturer ID: 00 1D (Leviton) &lt;br /&gt;
 Type: 101 ID: 206&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 63 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 301 ID: 206&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25 &lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 00 1D(Leviton) Type: 201 ID: 206&lt;br /&gt;
 Lib: 2.6 App: 0.3&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Intermatic HA04C Outdoor Lighting Module switch ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03&lt;br /&gt;
 version: Lib: 1.28 App: 2.0&lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Electronic Solutions Inc DBMZ DC motor controler ====&lt;br /&gt;
 Device supports classes: 26, 72, 86, 27, 70, 73&lt;br /&gt;
 Manufacturer ID: 00 33(Electronic Solutions Inc) Type: 5250 ID: 3032&lt;br /&gt;
 Lib: 2.24 App: 1.1&lt;br /&gt;
 The difference between a switch and a dimmer is the class 26 for dimmer and 25 for switch&lt;br /&gt;
&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18232</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18232"/>
		<updated>2009-03-31T02:41:26Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* RZP03 Vizia Leviton Appliance Module dimmer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 60, 31, 70, 84, 85, 80, 72, 77, 86&lt;br /&gt;
 Manufacturer ID: 1E (HomeSeer) Type: 02 ID: 01&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6 or App: 1.7&lt;br /&gt;
 COMMAND_CLASS_MULTI_INSTANCE, 60&lt;br /&gt;
 COMMAND_CLASS_SENSOR_MULTILEVEL, 31&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_WAKE_UP, 84&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_BATTERY, 80&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_VERSION 86&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82 &lt;br /&gt;
 manufacturer ID: 00 1D (Leviton) &lt;br /&gt;
 Type: 101 ID: 206&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 63 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 301 ID: 206&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25 &lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 00 1D(Leviton) Type: 201 ID: 206&lt;br /&gt;
 Lib: 2.6 App: 0.3&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Intermatic HA04C Outdoor Lighting Module switch ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03&lt;br /&gt;
 version: Lib: 1.28 App: 2.0&lt;br /&gt;
&lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Electronic Solutions Inc DBMZ DC motor controler ====&lt;br /&gt;
 Device supports classes: 26, 72, 86, 27, 70, 73&lt;br /&gt;
 Manufacturer ID: 00 33(Electronic Solutions Inc) Type: 5250 ID: 3032&lt;br /&gt;
 Lib: 2.24 App: 1.1&lt;br /&gt;
 The difference between a switch and a dimmer is the class 26 for dimmer and 25 for switch&lt;br /&gt;
&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18231</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18231"/>
		<updated>2009-03-31T02:38:51Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* Electronic Solutions Inc DBMZ DC motor controler */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 60, 31, 70, 84, 85, 80, 72, 77, 86&lt;br /&gt;
 Manufacturer ID: 1E (HomeSeer) Type: 02 ID: 01&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6 or App: 1.7&lt;br /&gt;
 COMMAND_CLASS_MULTI_INSTANCE, 60&lt;br /&gt;
 COMMAND_CLASS_SENSOR_MULTILEVEL, 31&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_WAKE_UP, 84&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_BATTERY, 80&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_VERSION 86&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82 &lt;br /&gt;
 manufacturer ID: 00 1D (Leviton) &lt;br /&gt;
 Type: 101 ID: 206&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 63 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 301 ID: 206&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25 &lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 00 1D(Leviton) Type: 101 ID: 206&lt;br /&gt;
 Lib: 2.24 App: 1.1&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Intermatic HA04C Outdoor Lighting Module switch ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03&lt;br /&gt;
 version: Lib: 1.28 App: 2.0&lt;br /&gt;
&lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Electronic Solutions Inc DBMZ DC motor controler ====&lt;br /&gt;
 Device supports classes: 26, 72, 86, 27, 70, 73&lt;br /&gt;
 Manufacturer ID: 00 33(Electronic Solutions Inc) Type: 5250 ID: 3032&lt;br /&gt;
 Lib: 2.24 App: 1.1&lt;br /&gt;
 The difference between a switch and a dimmer is the class 26 for dimmer and 25 for switch&lt;br /&gt;
&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18230</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18230"/>
		<updated>2009-03-31T02:38:31Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* Electronic Solutions Inc DBMZ DC motor controler */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 60, 31, 70, 84, 85, 80, 72, 77, 86&lt;br /&gt;
 Manufacturer ID: 1E (HomeSeer) Type: 02 ID: 01&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6 or App: 1.7&lt;br /&gt;
 COMMAND_CLASS_MULTI_INSTANCE, 60&lt;br /&gt;
 COMMAND_CLASS_SENSOR_MULTILEVEL, 31&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_WAKE_UP, 84&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_BATTERY, 80&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_VERSION 86&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82 &lt;br /&gt;
 manufacturer ID: 00 1D (Leviton) &lt;br /&gt;
 Type: 101 ID: 206&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 63 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 301 ID: 206&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25 &lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 00 1D(Leviton) Type: 101 ID: 206&lt;br /&gt;
 Lib: 2.24 App: 1.1&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Intermatic HA04C Outdoor Lighting Module switch ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03&lt;br /&gt;
 version: Lib: 1.28 App: 2.0&lt;br /&gt;
&lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Electronic Solutions Inc DBMZ DC motor controler ====&lt;br /&gt;
 Device supports classes: 26, 72, 86, 27, 70, 73&lt;br /&gt;
 Manufacturer ID: 00 33(Electronic Solutions Inc) Type: 5250 ID: 3032&lt;br /&gt;
 Lib: 2.24 App: 1.1&lt;br /&gt;
 The difference between a switch and a dimmer is the class 26 for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18229</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18229"/>
		<updated>2009-03-31T02:37:32Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* Intermatic HA04C Outdoor Lighting Module switch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 60, 31, 70, 84, 85, 80, 72, 77, 86&lt;br /&gt;
 Manufacturer ID: 1E (HomeSeer) Type: 02 ID: 01&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6 or App: 1.7&lt;br /&gt;
 COMMAND_CLASS_MULTI_INSTANCE, 60&lt;br /&gt;
 COMMAND_CLASS_SENSOR_MULTILEVEL, 31&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_WAKE_UP, 84&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_BATTERY, 80&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_VERSION 86&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82 &lt;br /&gt;
 manufacturer ID: 00 1D (Leviton) &lt;br /&gt;
 Type: 101 ID: 206&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 63 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 301 ID: 206&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25 &lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 00 1D(Leviton) Type: 101 ID: 206&lt;br /&gt;
 Lib: 2.24 App: 1.1&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Intermatic HA04C Outdoor Lighting Module switch ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03&lt;br /&gt;
 version: Lib: 1.28 App: 2.0&lt;br /&gt;
&lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Electronic Solutions Inc DBMZ DC motor controler ====&lt;br /&gt;
Device supports classes: 26, 72, 86, 27, 70, 73&lt;br /&gt;
Manufacturer ID: 00 33(Electronic Solutions Inc) Type: 5250 ID: 3032&lt;br /&gt;
Lib: 2.24 App: 1.1&lt;br /&gt;
The difference between a switch and a dimmer is the class 26 for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18228</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18228"/>
		<updated>2009-03-31T02:30:40Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* RZP03 Vizia Leviton Appliance Module dimmer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 60, 31, 70, 84, 85, 80, 72, 77, 86&lt;br /&gt;
 Manufacturer ID: 1E (HomeSeer) Type: 02 ID: 01&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6 or App: 1.7&lt;br /&gt;
 COMMAND_CLASS_MULTI_INSTANCE, 60&lt;br /&gt;
 COMMAND_CLASS_SENSOR_MULTILEVEL, 31&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_WAKE_UP, 84&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_BATTERY, 80&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_VERSION 86&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82 &lt;br /&gt;
 manufacturer ID: 00 1D (Leviton) &lt;br /&gt;
 Type: 101 ID: 206&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 63 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 301 ID: 206&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25 &lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 00 1D(Leviton) Type: 101 ID: 206&lt;br /&gt;
 Lib: 2.24 App: 1.1&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Intermatic HA04C Outdoor Lighting Module switch ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03&lt;br /&gt;
 version: Lib: 1.28 App: 2.0&lt;br /&gt;
&lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18227</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18227"/>
		<updated>2009-03-31T02:26:11Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* RZP15 Vizia Leviton Appliance Module switch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 60, 31, 70, 84, 85, 80, 72, 77, 86&lt;br /&gt;
 Manufacturer ID: 1E (HomeSeer) Type: 02 ID: 01&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6 or App: 1.7&lt;br /&gt;
 COMMAND_CLASS_MULTI_INSTANCE, 60&lt;br /&gt;
 COMMAND_CLASS_SENSOR_MULTILEVEL, 31&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_WAKE_UP, 84&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_BATTERY, 80&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_VERSION 86&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82 &lt;br /&gt;
 manufacturer ID: 00 1D (Leviton) &lt;br /&gt;
 Type: 101 ID: 206&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 63 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 301 ID: 206&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25 &lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intermatic HA04C Outdoor Lighting Module switch ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03&lt;br /&gt;
 version: Lib: 1.28 App: 2.0&lt;br /&gt;
&lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18224</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18224"/>
		<updated>2009-03-31T00:31:38Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* RZS15 Vizia Leviton Wall switch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 60, 31, 70, 84, 85, 80, 72, 77, 86&lt;br /&gt;
 Manufacturer ID: 1E (HomeSeer) Type: 02 ID: 01&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6 or App: 1.7&lt;br /&gt;
 COMMAND_CLASS_MULTI_INSTANCE, 60&lt;br /&gt;
 COMMAND_CLASS_SENSOR_MULTILEVEL, 31&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_WAKE_UP, 84&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_BATTERY, 80&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_VERSION 86&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 301 ID: 206&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25 &lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL, 82&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intermatic HA04C Outdoor Lighting Module switch ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03&lt;br /&gt;
 version: Lib: 1.28 App: 2.0&lt;br /&gt;
&lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18223</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18223"/>
		<updated>2009-03-31T00:24:51Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* Intermatic HA04C Outdoor Lighting Module switch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 60, 31, 70, 84, 85, 80, 72, 77, 86&lt;br /&gt;
 Manufacturer ID: 1E (HomeSeer) Type: 02 ID: 01&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6 or App: 1.7&lt;br /&gt;
 COMMAND_CLASS_MULTI_INSTANCE, 60&lt;br /&gt;
 COMMAND_CLASS_SENSOR_MULTILEVEL, 31&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_WAKE_UP, 84&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_BATTERY, 80&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_VERSION 86&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intermatic HA04C Outdoor Lighting Module switch ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03&lt;br /&gt;
 version: Lib: 1.28 App: 2.0&lt;br /&gt;
&lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18222</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18222"/>
		<updated>2009-03-31T00:23:43Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* Intermatic HA04C Outdoor Lighting Module switch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 60, 31, 70, 84, 85, 80, 72, 77, 86&lt;br /&gt;
 Manufacturer ID: 1E (HomeSeer) Type: 02 ID: 01&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6 or App: 1.7&lt;br /&gt;
 COMMAND_CLASS_MULTI_INSTANCE, 60&lt;br /&gt;
 COMMAND_CLASS_SENSOR_MULTILEVEL, 31&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_WAKE_UP, 84&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_BATTERY, 80&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_VERSION 86&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intermatic HA04C Outdoor Lighting Module switch ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03&lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 COMMAND_CLASS_SWITCH_BINARY, 25&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18221</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18221"/>
		<updated>2009-03-31T00:17:48Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* HSM100  (battery, temperature, motion, light) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 60, 31, 70, 84, 85, 80, 72, 77, 86&lt;br /&gt;
 Manufacturer ID: 1E (HomeSeer) Type: 02 ID: 01&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6 or App: 1.7&lt;br /&gt;
 COMMAND_CLASS_MULTI_INSTANCE, 60&lt;br /&gt;
 COMMAND_CLASS_SENSOR_MULTILEVEL, 31&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_WAKE_UP, 84&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_BATTERY, 80&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_VERSION 86&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intermatic HA04C Outdoor Lighting Module switch ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03 &lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 Class 25 ?????&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18220</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18220"/>
		<updated>2009-03-31T00:14:20Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* HSM100  (battery, temperature, motion, light) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 21, 01, 60, 31, 70, 84, 85, 80, 72, 77, 86&lt;br /&gt;
 Manufacturer ID: 1E (HomeSeer) Type: 02 ID: 01&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6 or App: 1.7&lt;br /&gt;
 COMMAND_CLASS_MULTI_INSTANCE, 60&lt;br /&gt;
 COMMAND_CLASS_SENSOR_MULTILEVEL, 31&lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 70&lt;br /&gt;
 COMMAND_CLASS_WAKE_UP, 84&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_BATTERY, 80&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_VERSION 86&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intermatic HA04C Outdoor Lighting Module switch ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03 &lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 Class 25 ?????&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18219</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18219"/>
		<updated>2009-03-31T00:12:30Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* HSM100  (battery, temperature, motion, light) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 21, 01, 60, 31, 70, 84, 85, 80, 72, 77, 86&lt;br /&gt;
 Manufacturer ID: 1E (HomeSeer) Type: 02 ID: 01&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6 or App: 1.7&lt;br /&gt;
 COMMAND_CLASS_MULTI_INSTANCE, 21&lt;br /&gt;
 COMMAND_CLASS_SENSOR_MULTILEVEL, 01  &lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 60&lt;br /&gt;
 COMMAND_CLASS_WAKE_UP, 31&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 70&lt;br /&gt;
 COMMAND_CLASS_BATTERY, 84&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 85&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 80&lt;br /&gt;
 COMMAND_CLASS_VERSION 72&lt;br /&gt;
 ??, 77&lt;br /&gt;
 ??, 86&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intermatic HA04C Outdoor Lighting Module switch ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03 &lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 Class 25 ?????&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18218</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18218"/>
		<updated>2009-03-31T00:00:27Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* HSM100  (battery, temperature, motion, light) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 1E (HomeSeer) Type: 02 ID: 01&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6 or App: 1.7&lt;br /&gt;
 COMMAND_CLASS_MULTI_INSTANCE, 26&lt;br /&gt;
 COMMAND_CLASS_SENSOR_MULTILEVEL, 27  &lt;br /&gt;
 COMMAND_CLASS_CONFIGURATION, 2B&lt;br /&gt;
 COMMAND_CLASS_WAKE_UP, 2C&lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION, 85&lt;br /&gt;
 COMMAND_CLASS_BATTERY, 72&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 86&lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 91&lt;br /&gt;
 COMMAND_CLASS_VERSION 77&lt;br /&gt;
 ??, 73&lt;br /&gt;
 ??, EF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intermatic HA04C Outdoor Lighting Module switch ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03 &lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 Class 25 ?????&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18213</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18213"/>
		<updated>2009-03-30T05:50:11Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* Intermatic outside module switch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intermatic HA04C Outdoor Lighting Module switch ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03 &lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 Class 25 ?????&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18212</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18212"/>
		<updated>2009-03-30T05:48:22Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* Intermatic outside module switch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intermatic outside module switch ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03 &lt;br /&gt;
 COMMAND_CLASS_BASIC, 20&lt;br /&gt;
 Class 25 ?????&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18211</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18211"/>
		<updated>2009-03-30T05:46:44Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* RZP03 Vizia Leviton Appliance Module dimmer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intermatic outside module switch ====&lt;br /&gt;
 Device supports classes:  20, 25, 27, 86, 72&lt;br /&gt;
 Brand 00 05 type 00 04  ID 00 03 &lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18210</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18210"/>
		<updated>2009-03-30T05:33:59Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* All the known classes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
-&amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73 &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF &amp;lt;BR&amp;gt;&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18209</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18209"/>
		<updated>2009-03-30T05:33:00Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* Basic */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== All the known classes ====&lt;br /&gt;
COMMAND_CLASS_BASIC				0x20&lt;br /&gt;
COMMAND_CLASS_BATTERY				0x80&lt;br /&gt;
COMMAND_CLASS_WAKE_UP                         	0x84&lt;br /&gt;
COMMAND_CLASS_CONTROLLER_REPLICATION          	0x21&lt;br /&gt;
COMMAND_CLASS_SWITCH_MULTILEVEL               	0x26&lt;br /&gt;
COMMAND_CLASS_SWITCH_ALL			0x27&lt;br /&gt;
COMMAND_CLASS_SENSOR_BINARY			0x30&lt;br /&gt;
COMMAND_CLASS_ALARM				0x71&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD                         0x8F&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE		0x46&lt;br /&gt;
COMMAND_CLASS_CLOCK				0x81&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION			0x85&lt;br /&gt;
COMMAND_CLASS_CONFIGURATION			0x70&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72&lt;br /&gt;
-&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTIVATION			0x2B&lt;br /&gt;
COMMAND_CLASS_SCENE_ACTUATOR_CONF		0x2C&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC		0x72&lt;br /&gt;
COMMAND_CLASS_VERSION				0x86&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_PROPRIETARY		0x91&lt;br /&gt;
COMMAND_CLASS_NODE_NAMING			0x77&lt;br /&gt;
COMMAND_CLASS_POWERLEVEL			0x73&lt;br /&gt;
COMMAND_CLASS_MARK				0xEF&lt;br /&gt;
COMMAND_CLASS_HAIL 				0x82&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18208</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18208"/>
		<updated>2009-03-30T05:21:57Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* RZP03 Vizia Leviton Appliance Module dimmer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18207</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=18207"/>
		<updated>2009-03-30T05:21:42Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* RZP03 Vizia Leviton Appliance Module dimmer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26, 27, 2B, 2C, 85, 72, 86, 91, 77, 73, EF, 82&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
&lt;br /&gt;
 COMMAND_CLASS_SWITCH_MULTILEVEL, 26&lt;br /&gt;
 COMMAND_CLASS_SWITCH_ALL, 27&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTIVATION, 2B&lt;br /&gt;
 COMMAND_CLASS_SCENE_ACTUATOR_CONF, 2C &lt;br /&gt;
 COMMAND_CLASS_ASSOCIATION,  85&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 72 &lt;br /&gt;
 COMMAND_CLASS_VERSION, 86&lt;br /&gt;
 COMMAND_CLASS_MANUFACTURER_PROPRIETARY, 91 &lt;br /&gt;
 COMMAND_CLASS_NODE_NAMING, 77&lt;br /&gt;
 COMMAND_CLASS_POWERLEVEL, 73&lt;br /&gt;
 COMMAND_CLASS_MARK, EF&lt;br /&gt;
 COMMAND_CLASS_HAIL 82&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=16952</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=16952"/>
		<updated>2009-01-05T00:20:48Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* HSM100  (battery, temperature, motion, light) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt;  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt;  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 0Ch to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 0Ch to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 0Ch led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 0Ch led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association for unit 0Ch&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 0Ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 0ch&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 0Ch&lt;br /&gt;
 01 05 00 48 0C 03 BD &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=16951</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=16951"/>
		<updated>2009-01-05T00:12:40Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* HSM100  (battery, temperature, motion, light) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 00  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 FF  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 12 to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 12 to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 12 led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;00&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 12 led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;U&amp;gt;FF&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
&lt;br /&gt;
 Get sofware association unit 12&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 12&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 12&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 12&lt;br /&gt;
 01 05 00 48 0C 03 BD  &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=16950</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=16950"/>
		<updated>2009-01-05T00:11:37Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* HSM100  (battery, temperature, motion, light) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 00  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 FF  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
set unit 12 to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;01&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 12 to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;02&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;U&amp;gt;04&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 12 led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;B&amp;gt;&amp;lt;U&amp;gt;00&amp;lt;/B&amp;gt;&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 12 led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;B&amp;gt;&amp;lt;U&amp;gt;FF&amp;lt;/B&amp;gt;&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
 Get sofware association unit 12&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 12&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 12&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 12&lt;br /&gt;
 01 05 00 48 0C 03 BD  &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=16949</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=16949"/>
		<updated>2009-01-05T00:10:23Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* HSM100  (battery, temperature, motion, light) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 00  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 FF  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 05 03 99 &lt;br /&gt;
set unit 12 to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;B&amp;gt;&amp;lt;U&amp;gt;01&amp;lt;/B&amp;gt;&amp;lt;/U&amp;gt; 68 01 05 03 05&lt;br /&gt;
set unit 12 to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;B&amp;gt;&amp;lt;U&amp;gt;02&amp;lt;/B&amp;gt;&amp;lt;/U&amp;gt; D0 01 05 03 BE&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 &amp;lt;B&amp;gt;&amp;lt;U&amp;gt;04&amp;lt;/B&amp;gt;&amp;lt;/U&amp;gt; 38 01 05 03 50&lt;br /&gt;
Set unit 12 led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;B&amp;gt;&amp;lt;U&amp;gt;00&amp;lt;/B&amp;gt;&amp;lt;/U&amp;gt; 05 03 99 &lt;br /&gt;
Set unit 12 led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &amp;lt;B&amp;gt;&amp;lt;U&amp;gt;FF&amp;lt;/B&amp;gt;&amp;lt;/U&amp;gt; 05 03 66&lt;br /&gt;
 Get sofware association unit 12&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 12&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 12&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 12&lt;br /&gt;
 01 05 00 48 0C 03 BD  &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=16948</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=16948"/>
		<updated>2009-01-04T23:51:07Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* HSM100  (battery, temperature, motion, light) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 00  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 FF  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N  HSM100&amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 05 03 99 &lt;br /&gt;
set unit 12 to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 01 68 01 05 03 05&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 02 D0 01 05 03 BE&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98   &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 04 38 01 05 03 50&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 00 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 FF 05 03 66&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Get sofware association unit 12&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 12&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 12&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 12&lt;br /&gt;
 01 05 00 48 0C 03 BD  &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=16947</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=16947"/>
		<updated>2009-01-04T23:19:52Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* HSM100  (battery, temperature, motion, light) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 00  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 FF  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N &amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 0Ch to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 05 03 99 &lt;br /&gt;
set unit 12 to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 01 68 01 05 03 05&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 02 D0 01 05 03 BE&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98   &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 04 38 01 05 03 50&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 00 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 FF 05 03 66&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Get sofware association unit 12&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 12&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 12&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 12&lt;br /&gt;
 01 05 00 48 0C 03 BD  &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=16944</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=16944"/>
		<updated>2009-01-04T22:49:15Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* RZP15 Vizia Leviton Appliance Module switch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 00  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 FF  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N &amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 12 to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 01 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98   &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C  &lt;br /&gt;
SET Unit 12 to report no move delay after 7 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 07 05 03 9F&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 01 68 01 05 03 05&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 02 D0 01 05 03 BE&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98   &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 04 38 01 05 03 50&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 00 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 FF 05 03 66&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Get sofware association unit 12&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 12&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 12&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 12&lt;br /&gt;
 01 05 00 48 0C 03 BD  &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 03 CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=16943</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=16943"/>
		<updated>2009-01-04T22:22:03Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* RZP15 Vizia Leviton Appliance Module switch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 00  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 FF  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N &amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 12 to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 01 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98   &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C  &lt;br /&gt;
SET Unit 12 to report no move delay after 7 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 07 05 03 9F&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 01 68 01 05 03 05&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 02 D0 01 05 03 BE&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98   &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 04 38 01 05 03 50&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 00 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 FF 05 03 66&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Get sofware association unit 12&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 12&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 12&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 12&lt;br /&gt;
 01 05 00 48 0C 03 BD  &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 UU CR&lt;br /&gt;
 &lt;br /&gt;
 Request: 01 04 00 41 UU CR&lt;br /&gt;
 Answer:&lt;br /&gt;
 &amp;lt;B&amp;gt;C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12&amp;lt;/B&amp;gt;&lt;br /&gt;
 01 09 01 41 C9 0C 00 04  11  04  62&lt;br /&gt;
 &lt;br /&gt;
 C2= Start&lt;br /&gt;
 C3= length&lt;br /&gt;
 C4=&lt;br /&gt;
 C5=&lt;br /&gt;
 C6=&lt;br /&gt;
 C7=&lt;br /&gt;
 C8=&lt;br /&gt;
 C9=  Basic class (1=controller, 2= static controller, 3=slave, 4=routing slave)&lt;br /&gt;
 C10= Device type (1=controller,  10=switch, 11=Dimmer, 12=transmitter, 8=Thermostat, 9=shutter,21=?)&lt;br /&gt;
 C11=&lt;br /&gt;
 C12= CRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=16942</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=16942"/>
		<updated>2009-01-04T16:27:32Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* Adding device 12h to the Z-TROLLER (vizia switch) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 00  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 FF  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N &amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 12 to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 01 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98   &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C  &lt;br /&gt;
SET Unit 12 to report no move delay after 7 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 07 05 03 9F&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 01 68 01 05 03 05&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 02 D0 01 05 03 BE&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98   &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 04 38 01 05 03 50&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 00 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 FF 05 03 66&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Get sofware association unit 12&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 12&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 12&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 12&lt;br /&gt;
 01 05 00 48 0C 03 BD  &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 UU CR&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
  Simple steps to add a device&lt;br /&gt;
  S 01 04 00 4A 01 B0             Request the z-trolle to START adding a device&lt;br /&gt;
  R 06 01 07 00 4A 02 01 00 00 B1 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 02 00 00 B2                          &lt;br /&gt;
  S 06                           &lt;br /&gt;
  R 01 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24  The button was pushed                            &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4A 02 06 12 00 A4    The device 12h was added&lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4             Send the z-troller a adding device completion&lt;br /&gt;
  ------------------- &lt;br /&gt;
  Simple steps to remove device 10h&lt;br /&gt;
  S 01 04 00 4B 01 B1              Send to the z-troller a START to remove a device&lt;br /&gt;
  R 06 01 07 00 4B 03 01 00 00 B1   &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 02 00 00 B2 &lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 16 00 4B 03 03 10 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 26  The button on the device was pushed&lt;br /&gt;
  S 06&lt;br /&gt;
  R 01 07 00 4B 03 06 00 00 B6                    &lt;br /&gt;
  S 06&lt;br /&gt;
  S 01 04 00 4A 05 B4              Send the z-troller a END remove device                   &lt;br /&gt;
  R 06&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=16925</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=16925"/>
		<updated>2009-01-02T06:26:26Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* Getting neighborood info for a unit (z-troller) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 00  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 FF  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N &amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 12 to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 01 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98   &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C  &lt;br /&gt;
SET Unit 12 to report no move delay after 7 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 07 05 03 9F&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 01 68 01 05 03 05&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 02 D0 01 05 03 BE&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98   &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 04 38 01 05 03 50&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 00 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 FF 05 03 66&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Get sofware association unit 12&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 12&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 12&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 12&lt;br /&gt;
 01 05 00 48 0C 03 BD  &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 UU CR&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborhood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Restart the z-troller ==== &lt;br /&gt;
 01 03 00 08 F4&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/svn/trunk/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=15098</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=15098"/>
		<updated>2008-07-28T03:37:23Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* HSM100  (battery, temperature, motion, light) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 00  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 FF  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N &amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 12 to report no move delay after 1 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 01 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98   &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C  &lt;br /&gt;
SET Unit 12 to report no move delay after 7 minute&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 07 05 03 9F&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to wake up every 6 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 01 68 01 05 03 05&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to wake up every 12 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 02 D0 01 05 03 BE&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98   &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to wake up every 18 minutes&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 04 38 01 05 03 50&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 00 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 FF 05 03 66&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Get sofware association unit 12&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 12&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 12&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 12&lt;br /&gt;
 01 05 00 48 0C 03 BD  &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 UU CR&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/pluto/branches/charon-merge/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=15097</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=15097"/>
		<updated>2008-07-27T21:18:24Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* HSM100  (battery, temperature, motion, light) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 00  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 FF  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N &amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 12 to 1 minute off delay&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 01 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98   &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C  &lt;br /&gt;
Set unit 12 to 7 minutes off delay&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 07 05 03 9F&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to 6 minutes wake up interval&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 01 68 01 05 03 05&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 to 12 minutes wake up interval&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 02 D0 01 05 03 BE&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98   &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to 18 minutes wake up interval&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 04 38 01 05 03 50&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 00 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 FF 05 03 66&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Get sofware association unit 12&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 12&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 12&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
Force to optimize Unit 12&lt;br /&gt;
 01 05 00 48 0C 03 BD  &lt;br /&gt;
 01 04 00 4A 05 B4&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 UU CR&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/pluto/branches/charon-merge/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=15096</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=15096"/>
		<updated>2008-07-27T21:09:11Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* HSM100  (battery, temperature, motion, light) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 00  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 FF  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N &amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 12 to 1 minute off delay&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 01 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98   &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C  &lt;br /&gt;
Set unit 12 to 7 minutes off delay&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 07 05 03 9F&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to 6 minutes wake up interval&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 01 68 01 05 03 05&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 to 12 minutes wake up interval&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 02 D0 01 05 03 BE&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98   &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to 18 minutes wake up interval&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 04 38 01 05 03 50&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 00 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 FF 05 03 66&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Get sofware association unit 12&lt;br /&gt;
 Write  01 0A 00 13 0C 03 85 02 01 05 03 69 &lt;br /&gt;
 Read   01 0C 00 04 00 0C 06 85 03 01 04 00 01 7F  // YES associated&lt;br /&gt;
 OR&lt;br /&gt;
 Read   01 0B 00 04 00 0C 05 85 03 01 04 00 7A     // NOT associated&lt;br /&gt;
Remove software association Unit 12&lt;br /&gt;
 01 0B 00 13 0C 04 85 04 01 01 05 03 68&lt;br /&gt;
Set software association Unit 12&lt;br /&gt;
 01 0B 00 13 0C 04 85 01 01 01 05 03 6D&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 UU CR&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/pluto/branches/charon-merge/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=15095</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=15095"/>
		<updated>2008-07-27T20:53:59Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* HSM100  (battery, temperature, motion, light) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 00  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 FF  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N &amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 12 to 1 minute off delay&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 01 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98   &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C  &lt;br /&gt;
Set unit 12 to 7 minutes off delay&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 07 05 03 9F&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to 6 minutes wake up interval&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 01 68 01 05 03 05&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 to 12 minutes wake up interval&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 02 D0 01 05 03 BE&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98   &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to 18 minutes wake up interval&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 04 38 01 05 03 50&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 led off&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &#039;&#039;&#039;00&#039;&#039;&#039; 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 led ON&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 03 01 &#039;&#039;&#039;FF&#039;&#039;&#039; 05 03 66&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 UU CR&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/pluto/branches/charon-merge/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=15094</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=15094"/>
		<updated>2008-07-27T20:44:30Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* HSM100  (battery, temperature, motion, light) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 00  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 FF  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N &amp;lt;BR&amp;gt;&lt;br /&gt;
SET Unit 12 to 1 minute off delay&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 01 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98   &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C  &lt;br /&gt;
Set unit 12 to 7 minutes off delay&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 07 05 03 9F&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 to 12 minutes wake up interval&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 02 D0 01 05 03 BE&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98   &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to 6 minutes wake up interval&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 01 68 01 05 03 05&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to 18 minutes wake up interval&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 04 38 01 05 03 50&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 UU CR&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/pluto/branches/charon-merge/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=15093</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=15093"/>
		<updated>2008-07-27T20:43:26Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* HSM100  (battery, temperature, motion, light) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 00  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 FF  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
C O N F I G U R A T I O N&lt;br /&gt;
SET Unit 12 to 1 minute off delay&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 01 05 03 99 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98   &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C  &lt;br /&gt;
Set unit 12 to 7 minutes off delay&lt;br /&gt;
 01 0C 00 13 0C 05 70 04 02 01 07 05 03 9F&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
Set unit 12 to 12 minutes wake up interval&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 02 D0 01 05 03 BE&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98   &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to 6 minutes wake up interval&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 01 68 01 05 03 05&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B&lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
set unit 12 to 18 minutes wake up interval&lt;br /&gt;
 01 0D 00 13 0C 06 84 04 00 04 38 01 05 03 50&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 02 05 03 98 &lt;br /&gt;
 01 0A 00 13 0C 03 70 05 03 05 03 99&lt;br /&gt;
 01 0A 00 13 0C 03 70 05 01 05 03 9B &lt;br /&gt;
 01 09 00 13 0C 02 84 05 05 03 6C&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 UU CR&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 232&lt;br /&gt;
&lt;br /&gt;
NOTE: this is a (already fixed) bug in the old version of the closed pluto Z-Wave driver. The actual closed driver and the new open source driver (http://svn.linuxmce.org/pluto/branches/charon-merge/src/ZWave) of course honor all 232 devices (29*8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
NOTE: if you look at an ascii table (man ascii) you see the following:&lt;br /&gt;
0x01    SOH (start of heading) &lt;br /&gt;
0x06    ACK (acknowledge)&lt;br /&gt;
0x15    NAK (negative ack.)&lt;br /&gt;
0x18    CAN (cancel)&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum code for c/c++&lt;br /&gt;
    char checksum(char *buf, int len) {&lt;br /&gt;
    	int ret = 0xff;&lt;br /&gt;
	for (int i=0;i&amp;lt;len;i++) ret ^= buf[i];&lt;br /&gt;
	return ret;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=15011</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=15011"/>
		<updated>2008-07-20T13:27:14Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* HSM100  (battery, temperature, motion, light) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
            &#039; in case °celsius are requested instead of °F&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 00  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 FF  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 UU CR&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 252&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=15010</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=15010"/>
		<updated>2008-07-20T13:05:11Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* HSM100  (battery, temperature, motion, light) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        j = InStr(temp, &amp;quot;06 03 31 05 01&amp;quot;)&lt;br /&gt;
        carac = Mid(temp, j + 18, 5)&lt;br /&gt;
        If carac &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            temperature1 = HexToDec(Mid(temp, j + 21, 2))&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 1 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 41.1&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
            tc = Format((5 / 9) * (temperature1 - 32), &amp;quot;##.#&amp;quot;)&lt;br /&gt;
            temp = temperature1&lt;br /&gt;
            calculate_temperature = temp&lt;br /&gt;
        End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 00  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 FF  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 UU CR&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 252&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=15008</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=15008"/>
		<updated>2008-07-19T20:50:44Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* Adding device 12h to the Z-TROLLER (vizia switch) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
           &#039;temperature in °F&lt;br /&gt;
           If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
           End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 00  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 FF  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 UU CR&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Getting neighborood info for a unit (z-troller) ====&lt;br /&gt;
&lt;br /&gt;
 01 07 00 80 UU 00 01 03 CR&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 252&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=14893</id>
		<title>ZWave API</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=ZWave_API&amp;diff=14893"/>
		<updated>2008-07-15T03:46:43Z</updated>

		<summary type="html">&lt;p&gt;Dmurrle: /* Removing device 5 from the Z-TROLLER */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware| ]]&lt;br /&gt;
[[Category: RF Control]]&lt;br /&gt;
[[Category: ZWave]]&lt;br /&gt;
[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The ZWave API is not available for free. You have to get the Zensys SDK for command specifications and device class definitions. This page tries to collect all the freely available information about ZWave. The final goal is to provide a header file with all necessary definitions for basic operation with open source software.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
== Frame specification ==&lt;br /&gt;
Karl Denning implemented basic ZWave support in his software &amp;quot;HomeDaemon&amp;quot;. He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&amp;amp;p=173&amp;amp;postcount=13).&lt;br /&gt;
&lt;br /&gt;
== Basic Classes ==&lt;br /&gt;
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):&lt;br /&gt;
 Controller         1&lt;br /&gt;
 Static controller  2&lt;br /&gt;
 Slave              3&lt;br /&gt;
 Routing Slave      4&lt;br /&gt;
that leads us to some definitions:&lt;br /&gt;
 #define OZA_BASIC_CLASS_CONTROLLER         0x01&lt;br /&gt;
 #define OZA_BASIC_CLASS_STATIC_CONTROLLER  0x02&lt;br /&gt;
 #define OZA_BASIC_CLASS_SLAVE              0x03&lt;br /&gt;
 #define OZA_BASIC_CLASS_ROUTING_SLAVE      0x04&lt;br /&gt;
&lt;br /&gt;
== Device Types ==&lt;br /&gt;
From the Z-Wave Configuration Information-1.pdf:&lt;br /&gt;
 CONTROLLER       0x01 (like the ZTH200,    Classes: )&lt;br /&gt;
 SWITCH/APPLIANCE 0x10 (ZRP200,             Classes: 25, 27, 75)&lt;br /&gt;
 DIMMER           0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...)&lt;br /&gt;
 TRANSMITTER      0x12&lt;br /&gt;
 THERMOSTAT       0x08&lt;br /&gt;
 SHUTTER          0x09&lt;br /&gt;
&lt;br /&gt;
== Command and Device classes ==&lt;br /&gt;
From the Electronic Solutions, Inc. DBMZ Advanced User manual:&lt;br /&gt;
&lt;br /&gt;
=== Command/Device Classes ===&lt;br /&gt;
==== Basic Slave Device ====&lt;br /&gt;
==== All ====&lt;br /&gt;
==== Multilevel Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_MULTILEVEL&lt;br /&gt;
 MULTILEVEL_SWITCH_GET&lt;br /&gt;
 MULTILEVEL_SWITCH_SET&lt;br /&gt;
 MULTILEVEL_SWITCH_START_LEVEL_CHANGE&lt;br /&gt;
 MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE&lt;br /&gt;
&lt;br /&gt;
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:&lt;br /&gt;
 &amp;gt;?FI003,017,000  //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0&lt;br /&gt;
&lt;br /&gt;
==== Basic ====&lt;br /&gt;
* COMMAND_CLASS_BASIC&lt;br /&gt;
 BASIC_GET&lt;br /&gt;
 BASIC_SET&lt;br /&gt;
==== Mandatory ====&lt;br /&gt;
==== Multilevel Sensor ====&lt;br /&gt;
(from the Vizia RF Application Note)&lt;br /&gt;
* COMMAND_CLASS_SENSOR_MULTILEVEL&lt;br /&gt;
example get:&lt;br /&gt;
 &amp;gt;N4SE49,4 (RZC0P Syntax)&lt;br /&gt;
sensor report:&lt;br /&gt;
 &amp;lt;N004:049,005,001,009,075&lt;br /&gt;
   049: device class&lt;br /&gt;
   005: command report&lt;br /&gt;
   001: value send is a temperature value&lt;br /&gt;
   009: value represented with 1 byte in degrees fahrenheit &lt;br /&gt;
   075: 75° F&lt;br /&gt;
==== Setback schedule thermostat ====&lt;br /&gt;
from http://www.innovus.dk/fileadmin/user_upload/manual/VD2_standard_01_RA-PLUS.pdf&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
COMMAND_CLASS_ASSOCIATION&lt;br /&gt;
COMMAND_CLASS_BATTERY&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
COMMAND_CLASS_VERSION&lt;br /&gt;
COMMAND_CLASS_WAKE_UP&lt;br /&gt;
Controlled:&lt;br /&gt;
COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE&lt;br /&gt;
COMMAND_CLASS_CLOCK&lt;br /&gt;
COMMAND_CLASS_MULTI_CMD&lt;br /&gt;
&lt;br /&gt;
==== HSM100  (battery, temperature, motion, light) ====&lt;br /&gt;
The HSM100 is a motion sensor (probably the best as for now) (2008)&lt;br /&gt;
&lt;br /&gt;
 Device supports classes: 31,60,70,72,77,80,84,85,86&lt;br /&gt;
 Manufacturer ID: 0 1E (HomeSeer) Type: 0 2 ID: 0 1&lt;br /&gt;
 Lib: 2.31 App: 1.4 Also know with Lib: 2.40 App: 1.6&lt;br /&gt;
&lt;br /&gt;
The following frame from personal observations is described below&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0030.354&amp;lt;01 05 00 13 03 00 EA                                         &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.344&amp;lt;06 01 04 01 13 01 E8                                         &amp;lt;BR&amp;gt;                   &lt;br /&gt;
0030.244&amp;lt;01 09 00 04 00 0A 03 80 03 &amp;lt;B&amp;gt;64&amp;lt;/B&amp;gt; 1C  &amp;lt;I&amp;gt;BATTERY 100%&amp;lt;/I&amp;gt;        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.233&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.223&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.193&amp;lt;06 02 31 05 03 &amp;lt;B&amp;gt;01&amp;lt;/B&amp;gt; 00 A5      &amp;lt;I&amp;gt;LIGHT  1%&amp;lt;/I&amp;gt;         &amp;lt;BR&amp;gt;         &lt;br /&gt;
0030.193&amp;lt;01 0E 00 04 00 0A 08 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.183&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.173&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.163&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0030.063&amp;lt;06 03 31 05 01 2A 02 D5 5A   &amp;lt;I&amp;gt;TEMPERATURE   72.5F&amp;lt;/I&amp;gt;       &amp;lt;BR&amp;gt;            &lt;br /&gt;
0030.063&amp;lt;01 0F 00 04 00 0A 09 60                        &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.743&amp;lt;01 05 00 13 03 00 EA                           &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;01 04 01 13 01 E8                              &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.733&amp;lt;06                                             &amp;lt;BR&amp;gt;&lt;br /&gt;
0029.593&amp;lt;01 08 00 04 00 0A 02 84 07 78                  &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The HSM100 when awake send a frame and stay awake for about 2.5 seconds to answer to request.&lt;br /&gt;
 01 08 00 UU 00 03 02 84 07 CR &lt;br /&gt;
 when this frame is received if we need to get the temperature we have to send&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 03 31 04 05 03&lt;br /&gt;
 ...and to get the light %&lt;br /&gt;
 01 0C 00 13 UU 05 60 06 02 31 04 05 03&lt;br /&gt;
 if there is a change in light level or temperature a frame will be answered by the HSM100 &lt;br /&gt;
 to indicate the temperature or / and the light level&lt;br /&gt;
&lt;br /&gt;
Light % level&lt;br /&gt;
Let&#039;s take the frame&lt;br /&gt;
&lt;br /&gt;
06 02 31 05 03 01 02 A7&lt;br /&gt;
      &lt;br /&gt;
       &#039;VB express 2008 sample code to get the light level in %&lt;br /&gt;
        If InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;) Then&lt;br /&gt;
            j = InStr(temp, &amp;quot;06 02 31 05 03&amp;quot;)&lt;br /&gt;
            carac = Mid(temp, j + 18, 5)&lt;br /&gt;
            resultat = carac &amp;amp; &amp;quot;-&amp;quot; &amp;amp; HexToDec(Mid(temp, j + 18, 2)) &amp;amp; &amp;quot;%&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Temperature measure&lt;br /&gt;
&lt;br /&gt;
06 03 31 05 01 2A 02 E2 6D &lt;br /&gt;
           &#039;temperature in °F&lt;br /&gt;
           If HexToDec(Mid(temp, j + 18, 2)) = 3 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 25) / 10) + 79.3&lt;br /&gt;
           End If&lt;br /&gt;
&lt;br /&gt;
            If HexToDec(Mid(temp, j + 18, 2)) = 2 Then&lt;br /&gt;
                temperature1 = ((temperature1 - 170) / 10) + 68.2&lt;br /&gt;
            End If&lt;br /&gt;
  &lt;br /&gt;
Motion detection for module with address 7    &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 00  no move &amp;lt;BR&amp;gt;&lt;br /&gt;
01 09 00 04 00 07 03 20 01 FF  move &amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== RZP15 Vizia Leviton Appliance Module switch ====&lt;br /&gt;
&lt;br /&gt;
 supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 1 1 ID: 2 6&lt;br /&gt;
 version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
 Frame to send ON&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Frame to send OFF&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 FF 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes&lt;br /&gt;
 01 04 00 41 UU CR  &lt;br /&gt;
&lt;br /&gt;
 Supported classes response&lt;br /&gt;
 01 09 01 41 C9 0C 00 04 10 UU CR&lt;br /&gt;
&lt;br /&gt;
Where UU is the unit number to switch ON - OFF and CR is the XORING AND checksum for the frame&lt;br /&gt;
&lt;br /&gt;
==== RZS15 Vizia Leviton Wall switch ====&lt;br /&gt;
&lt;br /&gt;
 Supports classes: 25,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D (Leviton) &lt;br /&gt;
 Type: 3 1 ID: 2 6&lt;br /&gt;
 Version: Lib: 2.6 App: 0.3&lt;br /&gt;
&lt;br /&gt;
==== RZP03 Vizia Leviton Appliance Module dimmer ====&lt;br /&gt;
 Device supports classes: 26,27,2B,2C,72,73,77,82,85,86,91,EF&lt;br /&gt;
 Manufacturer ID: 0 1D(Leviton) Type: 2 1 ID: 2 6&lt;br /&gt;
 The difference between a switch and a dimmer is the class &amp;lt;B&amp;gt;26&amp;lt;/B&amp;gt; for dimmer and 25 for switch&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 9% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 09 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to send: to light ON with 95% &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 5F 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt; Frame to switch off &amp;lt;/B&amp;gt;&lt;br /&gt;
 01 0A 00 13 UU 03 20 01 00 05 03 CR&lt;br /&gt;
&lt;br /&gt;
 Request supported classes unit 02&lt;br /&gt;
 01 04 00 41 02 B8  &lt;br /&gt;
 Supported classes response&lt;br /&gt;
 06 01 09 01 41 C9 0C 00 04 11 04 62&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;B&amp;gt;With UU is equal to the unit ID and CR is the checksum (XORING)&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Removing device 05h from the Z-TROLLER ====&lt;br /&gt;
&lt;br /&gt;
 029178: 14.07.2008 17:48:28.899 +0.0 W 01 04 00 4B 01 B1   Waiting a unit button get pressed&lt;br /&gt;
 029181: 14.07.2008 17:48:28.914 +0.0 R 06 01 07 00 4B 02 01 00 00 B0&lt;br /&gt;
 029182: 14.07.2008 17:48:28.914 +0.0 W 06            &lt;br /&gt;
 029461: 14.07.2008 17:48:33.242 +0.0 R 01 07 00 4B 02 02 00 00 B3    &lt;br /&gt;
 029464: 14.07.2008 17:48:33.257 +0.0 W 06   &lt;br /&gt;
 029491: 14.07.2008 17:48:33.648 +0.0 R 01 16 00 4B 02 03 05 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 32      &lt;br /&gt;
 029494: 14.07.2008 17:48:33.663 +0.0 W 06   &lt;br /&gt;
 029501: 14.07.2008 17:48:33.741 +0.0 R 01 07 00 4B 02 06 00 00 B7&lt;br /&gt;
 029504: 14.07.2008 17:48:33.757 +0.0 W 06 &lt;br /&gt;
 029590: 14.07.2008 17:48:35.069 +0.0 W 01 04 00 4A 05 B4 Confirm unit 5 has been removed&lt;br /&gt;
&lt;br /&gt;
==== Adding device 12h to the Z-TROLLER (vizia switch) ====&lt;br /&gt;
&lt;br /&gt;
  104436: 14.07.2008 18:07:46.521 +0.0 W 01 04 00 4A 01 B0                                 ...J.°&lt;br /&gt;
  104439: 14.07.2008 18:07:46.536 +0.0 R 06 01 07 00 4A 02 01 00 00 B1                     ....J....±&lt;br /&gt;
  104440: 14.07.2008 18:07:46.536 +0.0 W 06 &lt;br /&gt;
  104589: 14.07.2008 18:07:48.833 +0.0 R 01                                                .&lt;br /&gt;
  104591: 14.07.2008 18:07:48.848 +0.0 R 07 00 4A 02 02 00 00 B2                           ..J....²&lt;br /&gt;
  104592: 14.07.2008 18:07:48.848 +0.0 W 06&lt;br /&gt;
  104601: 14.07.2008 18:07:48.958 +0.0 R 01                                                .&lt;br /&gt;
  104603: 14.07.2008 18:07:48.973 +0.0 R 16 00 4A 02 03 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 24                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;$&lt;br /&gt;
  104604: 14.07.2008 18:07:48.973 +0.0 W 06   &lt;br /&gt;
  104647: 14.07.2008 18:07:49.614 +0.0 R 01 07 00 4A 02 06 12 00 A4                        ...J....¤&lt;br /&gt;
  104648: 14.07.2008 18:07:49.614 +0.0 W 06  &lt;br /&gt;
  104714: 14.07.2008 18:07:50.614 +0.0 W 01 04 00 4A 05 B4                                 ...J.´&lt;br /&gt;
  104717: 14.07.2008 18:07:50.629 +0.0 R 06 &lt;br /&gt;
  104914: 14.07.2008 18:07:53.691 +0.0 W 01 03 00 02 FE  &lt;br /&gt;
  104917: 14.07.2008 18:07:53.707 +0.0 R 06                                                .&lt;br /&gt;
  104919: 14.07.2008 18:07:53.722 +0.0 R 01                                                .&lt;br /&gt;
  104921: 14.07.2008 18:07:53.738 +0.0 R 25 01 02 04 00 1D 6F BB 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;br /&gt;
  104923: 14.07.2008 18:07:53.754 +0.0 R 00 00 00 00 00 00 00 00 00 00 02 01 15&lt;br /&gt;
  104924: 14.07.2008 18:07:53.754 +0.0 W 06                                                .&lt;br /&gt;
  104928: 14.07.2008 18:07:53.785 +0.0 W 01 04 00 41 01 BB                                 ...A.»&lt;br /&gt;
  104931: 14.07.2008 18:07:53.801 +0.0 R 06 01 09 01 41 92 06 00 02 02 00 22 &lt;br /&gt;
  104932: 14.07.2008 18:07:53.801 +0.0 W 06                                                .&lt;br /&gt;
  104936: 14.07.2008 18:07:53.832 +0.0 W 01 04 00 41 02 B8                                 ...A.¸&lt;br /&gt;
  104939: 14.07.2008 18:07:53.847 +0.0 R 06 01 09 01 41 C9 0C 00 04 11 04 62 &lt;br /&gt;
  104940: 14.07.2008 18:07:53.847 +0.0 W 06                                                .&lt;br /&gt;
  104944: 14.07.2008 18:07:53.879 +0.0 W 01 04 00 41 03 B9                                 ...A.¹&lt;br /&gt;
  104947: 14.07.2008 18:07:53.894 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104948: 14.07.2008 18:07:53.894 +0.0 W 06                                                .&lt;br /&gt;
  104952: 14.07.2008 18:07:53.926 +0.0 W 01 04 00 41 04 BE                                 ...A.¾&lt;br /&gt;
  104955: 14.07.2008 18:07:53.941 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64&lt;br /&gt;
  104956: 14.07.2008 18:07:53.941 +0.0 W 06                                                .&lt;br /&gt;
  104960: 14.07.2008 18:07:53.972 +0.0 W 01 04 00 41 06 BC                                 ...A.¼&lt;br /&gt;
  104963: 14.07.2008 18:07:53.988 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  104964: 14.07.2008 18:07:53.988 +0.0 W 06                                                .&lt;br /&gt;
  104968: 14.07.2008 18:07:54.019 +0.0 W 01 04 00 41 07 BD                                 ...A.½&lt;br /&gt;
  104971: 14.07.2008 18:07:54.035 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  104972: 14.07.2008 18:07:54.035 +0.0 W 06                                                .&lt;br /&gt;
  104976: 14.07.2008 18:07:54.066 +0.0 W 01 04 00 41 09 B3                                 ...A.³&lt;br /&gt;
  104979: 14.07.2008 18:07:54.082 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104980: 14.07.2008 18:07:54.082 +0.0 W 06                                                .&lt;br /&gt;
  104984: 14.07.2008 18:07:54.113 +0.0 W 01 04 00 41 0A B0                                 ...A.°&lt;br /&gt;
  104987: 14.07.2008 18:07:54.129 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104988: 14.07.2008 18:07:54.129 +0.0 w 06                                                .&lt;br /&gt;
  104992: 14.07.2008 18:07:54.160 +0.0 W 01 04 00 41 0C B6                                 ...A.¶&lt;br /&gt;
  104995: 14.07.2008 18:07:54.176 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  104996: 14.07.2008 18:07:54.176 +0.0 W 06                                                .&lt;br /&gt;
  105000: 14.07.2008 18:07:54.207 +0.0 W 01 04 00 41 0D B7                                 ...A.·&lt;br /&gt;
  105003: 14.07.2008 18:07:54.222 +0.0 R 06 01 09 01 41 51 0C 00 04 21 01 CF               ....AQ...!.Ï&lt;br /&gt;
  105004: 14.07.2008 18:07:54.222 +0.0 W 06                                                .&lt;br /&gt;
  105008: 14.07.2008 18:07:54.254 +0.0 W 01 04 00 41 0E B4                                 ...A.´&lt;br /&gt;
  105011: 14.07.2008 18:07:54.269 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105012: 14.07.2008 18:07:54.269 +0.0 W 06                                                .&lt;br /&gt;
  105016: 14.07.2008 18:07:54.301 +0.0 W 01 04 00 41 10 AA                                 ...A.ª&lt;br /&gt;
  105019: 14.07.2008 18:07:54.316 +0.0 R 06 01 09 01 41 49 0C 00 04 21 01 D7               ....AI...!.×&lt;br /&gt;
  105020: 14.07.2008 18:07:54.316 +0.0 W 06                                                .&lt;br /&gt;
  105024: 14.07.2008 18:07:54.347 +0.0 W 01 04 00 41 12 A8                                 ...A.¨&lt;br /&gt;
  105027: 14.07.2008 18:07:54.363 +0.0 R 06 01 09 01 41 C9 0C 00 04 10 03 64               ....AÉ.....d&lt;br /&gt;
  105028: 14.07.2008 18:07:54.363 +0.0 W 06                                                .&lt;br /&gt;
  105032: 14.07.2008 18:07:54.394 +0.0 W 01 07 00 03 01 02 00 00 F8                        ........ø&lt;br /&gt;
  105035: 14.07.2008 18:07:54.410 +0.0 R 06                                                .&lt;br /&gt;
  105038: 14.07.2008 18:07:54.441 +0.0 W 01 03 00 20 DC                                    ... Ü&lt;br /&gt;
  105041: 14.07.2008 18:07:54.457 +0.0 R 06 01 08 01 20 00 3D 0C 9E 01 78                  .... .=.&amp;amp;#158;.x&lt;br /&gt;
  105042: 14.07.2008 18:07:54.457 +0.0 W 06                                                .&lt;br /&gt;
  105046: 14.07.2008 18:07:54.488 +0.0 W 01 04 00 60 12 89                                 ...`.&amp;amp;#137;&lt;br /&gt;
  105049: 14.07.2008 18:07:54.504 +0.0 R 06 01 04 01 60 01 9B                              ....`.&amp;amp;#155;&lt;br /&gt;
  105050: 14.07.2008 18:07:54.504 +0.0 W 06                                                .&lt;br /&gt;
  105057: 14.07.2008 18:07:54.582 +0.0 R 01 15 00 49 84 12 0F 04 10 03 25 27 2B 2C 85 72 86 91 77 73 EF 82 A1                              &amp;amp;#134;&amp;amp;#145;wsï&amp;amp;#130;¡&lt;br /&gt;
  105058: 14.07.2008 18:07:54.582 +0.0 W 06                                                .&lt;br /&gt;
  105062: 14.07.2008 18:07:54.613 +0.0 W 01 09 00 13 12 02 72 04 05 03 85                  ......r...&amp;amp;#133;&lt;br /&gt;
  105065: 14.07.2008 18:07:54.629 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105066: 14.07.2008 18:07:54.629 +0.0 W 06                                                .&lt;br /&gt;
  105071: 14.07.2008 18:07:54.675 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105072: 14.07.2008 18:07:54.675 +0.0 W 06                                                .&lt;br /&gt;
  105075: 14.07.2008 18:07:54.691 +0.0 R 01 0E 00 04 00 12 08 72 05 00 1D 01 01 02 06 81   .......r.......&lt;br /&gt;
  105076: 14.07.2008 18:07:54.691 +0.0 W 06                                                .&lt;br /&gt;
  105080: 14.07.2008 18:07:54.722 +0.0 W 01 09 00 13 12 02 86 11 05 03 64                  ......&amp;amp;#134;...d&lt;br /&gt;
  105083: 14.07.2008 18:07:54.738 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105084: 14.07.2008 18:07:54.738 +0.0 W 06                                                .&lt;br /&gt;
  105089: 14.07.2008 18:07:54.785 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105090: 14.07.2008 18:07:54.785 +0.0 W 06                                                .&lt;br /&gt;
  105093: 14.07.2008 18:07:54.800 +0.0 R 01 0D 00 04 00 12 07 86 12 03 02 06 00 03 73      .......&amp;amp;#134;......s&lt;br /&gt;
  105094: 14.07.2008 18:07:54.800 +0.0 W 06                                                .&lt;br /&gt;
  105098: 14.07.2008 18:07:54.832 +0.0 W 01 09 00 13 12 02 85 05 05 03 73                  ......&amp;amp;#133;...s&lt;br /&gt;
  105101: 14.07.2008 18:07:54.847 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105102: 14.07.2008 18:07:54.847 +0.0 W 06                                                .&lt;br /&gt;
  105107: 14.07.2008 18:07:54.894 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105108: 14.07.2008 18:07:54.894 +0.0 W 06                                                .&lt;br /&gt;
  105111: 14.07.2008 18:07:54.910 +0.0 R 01 09 00 04 00 12 03 85 06 01 61                  .......&amp;amp;#133;..a&lt;br /&gt;
  105112: 14.07.2008 18:07:54.910 +0.0 W 06                                                .&lt;br /&gt;
  105116: 14.07.2008 18:07:54.941 +0.0 W 01 0B 00 13 12 04 85 01 01 01 05 03 73            ......&amp;amp;#133;.....s&lt;br /&gt;
  105119: 14.07.2008 18:07:54.957 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105120: 14.07.2008 18:07:54.957 +0.0 W 06                                                .&lt;br /&gt;
  105125: 14.07.2008 18:07:55.004 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105126: 14.07.2008 18:07:55.004 +0.0 W 06                                                .&lt;br /&gt;
  105130: 14.07.2008 18:07:55.035 +0.0 W 01 04 00 47 12 AE                                 ...G.®&lt;br /&gt;
  105133: 14.07.2008 18:07:55.050 +0.0 R 06 01 04 01 47 01 BC                              ....G.¼&lt;br /&gt;
  105134: 14.07.2008 18:07:55.050 +0.0 W 06                                                .&lt;br /&gt;
  105147: 14.07.2008 18:07:55.222 +0.0 R 01                                                .&lt;br /&gt;
  105149: 14.07.2008 18:07:55.238 +0.0 R 05 00 47 04 00 B9                                 ..G..¹&lt;br /&gt;
  105150: 14.07.2008 18:07:55.238 +0.0 W 06                                                .&lt;br /&gt;
  105154: 14.07.2008 18:07:55.269 +0.0 W 01 05 00 46 12 01 AF                              ...F..¯&lt;br /&gt;
  105157: 14.07.2008 18:07:55.285 +0.0 R 06 01 04 01 46 01 BD                              ....F.½&lt;br /&gt;
  105158: 14.07.2008 18:07:55.285 +0.0 W 06                                                .&lt;br /&gt;
  105173: 14.07.2008 18:07:55.488 +0.0 R 01 05 00 46 85 00 39                              ...F&amp;amp;#133;.9&lt;br /&gt;
  105174: 14.07.2008 18:07:55.488 +0.0 W 06                                                .&lt;br /&gt;
  105178: 14.07.2008 18:07:55.519 +0.0 W 01 09 00 13 12 02 77 05 05 03 81                  ......w...&lt;br /&gt;
  105181: 14.07.2008 18:07:55.535 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105182: 14.07.2008 18:07:55.535 +0.0 W 06                                                .&lt;br /&gt;
  105187: 14.07.2008 18:07:55.582 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105188: 14.07.2008 18:07:55.582 +0.0 W 06                                                .&lt;br /&gt;
  105191: 14.07.2008 18:07:55.597 +0.0 R 01 08 00 04 00 12 02 77 06 92                     .......w.&amp;amp;#146;&lt;br /&gt;
  105192: 14.07.2008 18:07:55.597 +0.0 W 06                                                .&lt;br /&gt;
  105196: 14.07.2008 18:07:55.628 +0.0 W 01 09 00 13 12 02 77 02 05 03 86                  ......w...&amp;amp;#134;&lt;br /&gt;
  105199: 14.07.2008 18:07:55.644 +0.0 R 06 01 04 01 13 01 E8                              ......è&lt;br /&gt;
  105200: 14.07.2008 18:07:55.644 +0.0 W 06                                                .&lt;br /&gt;
  105205: 14.07.2008 18:07:55.691 +0.0 R 01 05 00 13 03 00 EA                              ......ê&lt;br /&gt;
  105206: 14.07.2008 18:07:55.691 +0.0 W 06                                                .&lt;br /&gt;
  105209: 14.07.2008 18:07:55.707 +0.0 R 01 08 00 04 00 12 02 77 03 97                     .......w.&amp;amp;#151;&lt;br /&gt;
  105210: 14.07.2008 18:07:55.707 +0.0 W 06                                                .&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific ====&lt;br /&gt;
* COMMAND_CLASS_MANUFACTURER_SPECIFIC&lt;br /&gt;
Show the ESI product data:&lt;br /&gt;
 MANUFACTURER_SPECIFIC_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x00 0x33 0x52 0x50 0x30 0x32&lt;br /&gt;
  0x00: maunfacturer id high byte&lt;br /&gt;
  0x33: manufacturer id low byte, ID: 0x0033&lt;br /&gt;
 Product type ID &amp;quot;RP&amp;quot;&lt;br /&gt;
 Product ID &amp;quot;02&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
* COMMAND_CLASS_VERSION&lt;br /&gt;
 VERSION_GET&lt;br /&gt;
Example return message:&lt;br /&gt;
 0x04 0x02 0x06 0x01 0x01 0x5a&lt;br /&gt;
  0x04: Library type 4 for basic slave device&lt;br /&gt;
  0x02: Protocol version 2&lt;br /&gt;
  0x06: Protocol sub version 6&lt;br /&gt;
  0x01: Application version 1&lt;br /&gt;
  0x01: Application sub version 1&lt;br /&gt;
  0x5a: ?&lt;br /&gt;
&lt;br /&gt;
==== All Switch ====&lt;br /&gt;
* COMMAND_CLASS_SWITCH_ALL&lt;br /&gt;
 SWITCH_ALL_GET&lt;br /&gt;
 SWITCH_ALL_ON&lt;br /&gt;
 SWITCH_ALL_OFF&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
* COMMAND_CLASS_CONFIGURATION&lt;br /&gt;
Each parameter is a single byte (&amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;)&lt;br /&gt;
 CONFIGURATION_GET&lt;br /&gt;
 CONFIGURATION_SET&lt;br /&gt;
==== Power Level ====&lt;br /&gt;
* COMMAND_CLASS_POWERLEVEL&lt;br /&gt;
 POWERLEVEL_TEST_NODE_SET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_GET&lt;br /&gt;
 POWERLEVEL_TEST_NODE_REPORT&lt;br /&gt;
Example: POWERLEVEL_SET, 5, 60&lt;br /&gt;
set the ZWave node&#039;s power level to 5 for the length of 60 seconds&lt;br /&gt;
&lt;br /&gt;
== Device configuration data ==&lt;br /&gt;
= Traces =&lt;br /&gt;
Starting the ZWave device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40    03/28/08 15:53:34.590           0x1 0x3 0x0 0x15 0xe9 (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:34.741           0x6 0x1 0x10 0x1 0x15 0x5a 0x2d 0x57 0x61 0x76 0x65 0x20 0x32 0x2e 0x33 0x31 0x0 0x1 0x96 (#####Z-Wave 2.31###) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:34.792           0x1 0x3 0x0 0x20 0xdc (### #) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.042           0x6 0x1 0x8 0x1 0x20 0x0 0x0 0x55 0x28 0x2 0xa9 (#### ##U(##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.092           0x1 0x3 0x0 0x2 0xfe (#####) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.342           0x6 0x1 0x25 0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x1 0xc4 (##%#) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.393           0x1 0x4 0x0 0x52 0x1 0xa8 (###R##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.643           0x6 0x1 0x4 0x1 0x52 0x1 0xa9 (####R##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.694           0x1 0x3 0x0 0x56 0xaa (###V#) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:35.944           0x6 0x1 0x4 0x1 0x56 0x0 0xac (####V##) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:35.995           0x1 0x4 0x0 0x41 0x1 0xbb (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.245           0x6 0x1 0x9 0x1 0x41 0xc9 0x0 0x0 0x3 0x11 0x0 0x6d (####A######m) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
40      03/28/08 15:53:36.296           0x1 0x4 0x0 0x41 0x2 0xb8 (###A##) &amp;lt;0xb698bb90&amp;gt;&lt;br /&gt;
41      03/28/08 15:53:36.545           0x6 0x1 0x9 0x1 0x41 0xd2 0x6 0x0 0x2 0x2 0x0 0x62 (####A######b) &amp;lt;0xb718cb90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interesting string: &lt;br /&gt;
  0x1 0x2 0x4 0x4 0x1d 0x3 0x0 0x0 0x0 ...&lt;br /&gt;
  0x1 means it is a response&lt;br /&gt;
  0x2 means it is initialization data&lt;br /&gt;
  0x4 is the version&lt;br /&gt;
  0x4 is the capabilities&lt;br /&gt;
LMCE will look for the next 4 bytes to get the list of devices. It seems to be a bit map. In this case, the first byte is 0x3 or in binary 00000011 so devices ID 1 and 2 are present. It is unclear to me why we only look at 4 bytes (32 zwave devices) while the protocol supports 252&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching on a ZDP200 lamp plug from the Orbiter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      03/28/08 15:49:20.707           0x1 0xa 0x0 0x13 0x1 0x3 0x26 0x1 0x63 0x5 0x6 0xa3 (#\n####&amp;amp;#c###) &amp;lt;0xb68f3b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.007           0x6 0x1 0x4 0x1 0x13 0x1 0xe8 (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:49:21.307           0x1 0x5 0x0 0x13 0x6 0x0 0xef (#######) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units on&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.553           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x4 0x39 (#######&#039;#9) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:50:58.854           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x4 0x3d (#######&#039;#=) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;all units off&amp;quot; on the ZTH200:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:43.713           0x1 0x8 0x0 0x4 0x4 0xef 0x2 0x27 0x5 0x38 (#######&#039;#8) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
41      03/28/08 15:51:44.014           0x1 0x8 0x0 0x4 0x0 0xef 0x2 0x27 0x5 0x3c (#######&#039;#&amp;lt;) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pressing the local switch on the ZDP200 (toggling from off to on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      03/28/08 15:52:37.284           0x1 0xc 0x0 0x49 0x84 0x1 0x6 0x3 0x11 0x0 0x26 0x27 0x75 0x5f (###I######&amp;amp;&#039;u_) &amp;lt;0xb70f4b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Learn Mode ==&lt;br /&gt;
=== Start ===&lt;br /&gt;
We send:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
40      04/11/08 18:25:26.852           0x1 0x4 0x0 0x50 0x1 0xaa (###P##) &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:27.052           0x6 (#) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
41      04/11/08 18:25:29.763           0x1 0x7 0x0 0x50 0x2 0x1 0xef 0x0 0x44 (###P####D) &amp;lt;0xb70dab90&amp;gt;&lt;br /&gt;
35      04/11/08 18:25:29.763           ZWJobSetLearnMode:  len = 6 buf = 0x00 0x50 0x02 0x01 0xef 0x00  &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
36      04/11/08 18:25:29.763           ZWJobSetLearnMode: start learning &amp;lt;0xb68d9b90&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Simple configuration download ===&lt;br /&gt;
A ZTH200 with a ZDP Lamp plug (id 2) in group 2 (named &amp;quot;Wohnzimmer&amp;quot; also gives us some group information:&lt;br /&gt;
&lt;br /&gt;
this seems to be the group membership:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0xb 0x0 0x4 0x2 0xef 0x5 0x21 0x31 0x8 0x2 0x2 0x0 (#######!1####)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this is the scene information:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x16 0x0 0x4 0x2 0xef 0x10 0x21 0x32 0x9 0x2 0x57 0x4f 0x48 0x4e 0x5a 0x49 0x4d 0x4d 0x45 0x52 0x20 0x20 0x12 (#######!2##WOHNZIMMER  #)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery Powered devices ==&lt;br /&gt;
&lt;br /&gt;
unsolicited wake up frame:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1 0x8 0x0 0x4 0x4 0x2 0x2 0x84 0x7 0x74 (#########t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pluto Source Code =&lt;br /&gt;
The pluto project at one point in time included zwave control classes.  The source code for these classes was published for some time at svn.plutohome.com.  These classes are no longer published.  However, substantial details of framing formats were derivable from that source code.  &lt;br /&gt;
&lt;br /&gt;
Some snippets that explain how to construct some interesting PDUs are the following (all snippets from code that was labelled GPLed at the top.  Full interpretation of this code requires access to the z-wave SDK headers, which are labelled proprietary and thus are not included here):&lt;br /&gt;
&lt;br /&gt;
* JobSwitchChangeLevel&lt;br /&gt;
        setState(ZWaveJob::RUNNING);&lt;br /&gt;
  	size_t len = 9;&lt;br /&gt;
  	char data[9];&lt;br /&gt;
  	data[0] = REQUEST;&lt;br /&gt;
  	data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
  	data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
  	data[3] = DATA_LEN;  // 3&lt;br /&gt;
  	data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
  	data[5] = SWITCH_MULTILEVEL_SET;&lt;br /&gt;
  	data[6] = d-&amp;gt;level;&lt;br /&gt;
  	data[7] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
  	data[8] = 1;&lt;br /&gt;
&lt;br /&gt;
* JobSwitchBinaryGet&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
    size_t len = 8;&lt;br /&gt;
    char data[8];&lt;br /&gt;
    data[0] = REQUEST;&lt;br /&gt;
    data[1] = FUNC_ID_ZW_SEND_DATA;&lt;br /&gt;
    data[2] = (char)d-&amp;gt;nodeID;&lt;br /&gt;
    data[3] = DATA_LEN;&lt;br /&gt;
    data[4] = COMMAND_CLASS_SWITCH_MULTILEVEL;&lt;br /&gt;
    data[5] = SWITCH_BINARY_GET;&lt;br /&gt;
    data[6] = TRANSMIT_OPTION_ACK | TRANSMIT_OPTION_AUTO_ROUTE;&lt;br /&gt;
    data[7] = 2;&lt;br /&gt;
    return handler()-&amp;gt;sendData(data, len);&lt;br /&gt;
&lt;br /&gt;
* JobSetLearnNodeState&lt;br /&gt;
    char buffer[10];&lt;br /&gt;
&lt;br /&gt;
    buffer[0] = REQUEST;&lt;br /&gt;
    buffer[1] = FUNC_ID_ZW_SET_LEARN_NODE_STATE;&lt;br /&gt;
    buffer[2] = mode();&lt;br /&gt;
    buffer[3] = 1; // Callback FunctionID&lt;br /&gt;
    buffer[4] = 0;&lt;br /&gt;
&lt;br /&gt;
    setState(ZWaveJob::RUNNING);&lt;br /&gt;
&lt;br /&gt;
    d-&amp;gt;failed = false;&lt;br /&gt;
&lt;br /&gt;
    return handler()-&amp;gt;sendData(buffer, 3);&lt;br /&gt;
&lt;br /&gt;
Z-Wave protocol Reset:&lt;br /&gt;
&lt;br /&gt;
  First command: /** */&lt;br /&gt;
&lt;br /&gt;
  01 08 00 03 01 02 01 01 21 D6&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  03 = FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION&lt;br /&gt;
  01 = listening /** not moving */&lt;br /&gt;
  02 = node generic type, GENERIC_TYPE_STATIC_CONTROLLER&lt;br /&gt;
  01 = node specific type, SPECIFIC_TYPE_PORTABLE_REMOTE_CONTROLLER&lt;br /&gt;
  01 = param length&lt;br /&gt;
  21 = COMMAND_CLASS_CONTROLLER_REPLICATION&lt;br /&gt;
&lt;br /&gt;
// wait for ACK&lt;br /&gt;
  ________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
  Second command: /** Reset to factory default. */&lt;br /&gt;
&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  00 = request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
&lt;br /&gt;
  Answer:&lt;br /&gt;
&lt;br /&gt;
  06&lt;br /&gt;
  01 04 00 42 01 B8&lt;br /&gt;
&lt;br /&gt;
  06 = ACK&lt;br /&gt;
&lt;br /&gt;
  01 = SOF&lt;br /&gt;
  04 = Length&lt;br /&gt;
  00 = Request&lt;br /&gt;
  42 = FUNC_ID_ZW_SET_DEFAULT&lt;br /&gt;
  01 = Callback FunctionID&lt;br /&gt;
  B8 = checksum&lt;br /&gt;
&lt;br /&gt;
=Framing=&lt;br /&gt;
Serial PDUs are framed with a simple framing protocol.  Byte value 0x01 is start of frame, or SOF.  The second octet is the length in bytes of the frame, excluding the SOF or the length octet.  Assume that value was n for this frame.  The next n - 1 octets are the framed payload.  The last octet is a checksum computed by xoring a 0xff seed with all octets of the payload.  The checksum includes the length field, but not the SOF byte or the checksum byte itself.&lt;br /&gt;
&lt;br /&gt;
Each frame is acknowledged by the remote end with 0x06.&lt;br /&gt;
&lt;br /&gt;
This information is derived from the pluto source code, along with observation of the serial protocol from existing commercial software.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;Truth Table XOR  A ⊕ B &amp;lt;/B&amp;gt;  &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;B&amp;gt;&lt;br /&gt;
 A &amp;amp;nbsp;   B     Result &amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 0 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   0     &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 1 &amp;amp;nbsp;   1     &amp;lt;B&amp;gt;0&amp;lt;/B&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
 &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 XORING description for the zwave (z-wave) checksum calculation&lt;br /&gt;
 let s say you have the frame 01 08 00 04 00 0A 02 84 07 &amp;lt;B&amp;gt;78&amp;lt;/B&amp;gt; &lt;br /&gt;
 You will have to take &lt;br /&gt;
 08 XOR 00 XOR 04 XOR 00 XOR 0A XOR 02 XOR 84 XOR 07= 87  &lt;br /&gt;
 NOT 87 =&amp;gt; 78 So in that case your checksum will be &amp;lt;b&amp;gt;78&amp;lt;/B&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &#039;Checksum (XORING NOT) code for visual basic 2008 express&lt;br /&gt;
    Public Function checksumZ(ByVal chaine As String) As String&lt;br /&gt;
        Dim result As Integer&lt;br /&gt;
        Dim resultS As String&lt;br /&gt;
        Dim result2 As Integer&lt;br /&gt;
        Dim result2s As String&lt;br /&gt;
        resultS = Replace(chaine, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        chaine = resultS&lt;br /&gt;
        resultS = Mid(chaine, 3, 2)&lt;br /&gt;
        result = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; resultS)&lt;br /&gt;
        For i = 5 To (Len(chaine)) Step 2&lt;br /&gt;
            result2s = (Mid(chaine, i, 2))&lt;br /&gt;
            result2 = Val(&amp;quot;&amp;amp;H&amp;quot; &amp;amp; result2s)&lt;br /&gt;
            result = result Xor result2&lt;br /&gt;
        Next&lt;br /&gt;
        result = Not (result)&lt;br /&gt;
        resultS = Hex(result)&lt;br /&gt;
        checksumZ = Mid(resultS, Len(resultS) - 1, 2)&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
=Capturing your own sample transactions=&lt;br /&gt;
These notes are for Microsoft Windows.  Linux should be easier.&lt;br /&gt;
&lt;br /&gt;
Get a copy of Device Monitoring Studio.  These instructions were written with version 5.11.  Use an HA22 device or other serial or usb-to-serial Z-wave dongle.  Monitor the serial port for an event.  Add the &amp;quot;Request&amp;quot; view in DMS.  Do your operations in the software that will interact with the HA22.  No click on the &amp;quot;complete&amp;quot; tab in the request view.  Right click and choose &amp;quot;export&amp;quot;.  Save the .htm file that results.&lt;br /&gt;
&lt;br /&gt;
The resulting HTML is pretty verbose.  Some simple regexps can pull out interesting details.  That results in transcriptions like the ones you see below.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a session with an established Homeseer installation starting up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d ff 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 38 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the 29 bytes after 1d (length, thats 29 in decimal) represent a node bitmask (29*8 = 232 devices).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
now it&#039;s iterating over the nodes and asking for supported classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R: 06 01 09 01 41 12 06 00 01 01 01 a3 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 04 be &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 05 bf &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 11 04 62 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 06 bc &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 07 bd &lt;br /&gt;
R: 06 01 09 01 41 c9 0c 00 04 10 03 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 00 7a &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 07 00 03 01 02 00 00 f8 &lt;br /&gt;
R: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 98 a2 94 08 70 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
00 98 a2 94 == home id&lt;br /&gt;
08 == node id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 64 &lt;br /&gt;
W: 06&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the first bits of what HomeZiX did when started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
W: 01 03 00 15 e9 &lt;br /&gt;
R: 06 01 10 01 15 5a 2d 57 61 76 65 20 32 2e 30 39 00 01 9d &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 06 0f 0a f9 &lt;br /&gt;
R: 06 01 05 01 06 96 0f 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 17 00 ec &lt;br /&gt;
R: 06 01 04 01 17 00 ed &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 07 fb &lt;br /&gt;
R: 06 01 20 01 07 02 2d 00 00 00 01 00 01 7f 80 fe 00 8f 00 00 00 7b 9f ff 00 87 00 00 00 00 00 80 00 00 &lt;br /&gt;
R: 64 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 20 dc &lt;br /&gt;
R: 06 01 08 01 20 00 7a 7a af 02 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 02 fe &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 25 01 02 04 04 1d 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;br /&gt;
R: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 40 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 03 00 56 aa &lt;br /&gt;
R: 06 01 04 01 56 00 ac &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 01 bb &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 02 b8 &lt;br /&gt;
R: 06 01 09 01 41 ca 06 00 02 02 01 7b &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 03 b9 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 04 00 41 08 b2 &lt;br /&gt;
R: 06 01 09 01 41 c9 04 00 03 10 00 68 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 00 db &lt;br /&gt;
R: 06 01 04 01 21 42 99 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 21 00 01 da &lt;br /&gt;
R: 06 01 04 01 21 06 dd &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 06 00 23 00 02 06 de &lt;br /&gt;
R: 06 01 09 01 23 21 72 86 82 2b 87 2f &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 08 00 13 ff 01 00 00 01 1b &lt;br /&gt;
R: 06 01 04 01 13 01 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
R: 01 05 00 13 01 00 e8 &lt;br /&gt;
W: 06 &lt;br /&gt;
W: 01 05 00 50 ff 01 54 &lt;br /&gt;
R: 06 &lt;br /&gt;
R: 01 07 00 50 01 01 ef 00 47 &lt;br /&gt;
W: 06 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=237&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eilhk.com/en/product/Datasheet/Zensys/INS10244-3%20-%20Z-Wave%20Node%20Type%20Overview%20and%20Network%20Installation%20Guide.pdf&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ddj.com/embedded/193104353&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/abmhz/ABMHZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
(since pulled, but still visible as of April 26, 2008 in the Google cache)&lt;br /&gt;
&lt;br /&gt;
= Tools used =&lt;br /&gt;
http://sourceforge.net/projects/slsnif/&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&amp;amp;page=2&lt;br /&gt;
&lt;br /&gt;
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf&lt;br /&gt;
&lt;br /&gt;
http://zwaveworld.com/forum/index.php?showtopic=227&amp;amp;st=20&lt;br /&gt;
&lt;br /&gt;
http://www.denninger.net/homedaemon.htm&lt;br /&gt;
&lt;br /&gt;
http://forums.controlthink.com/&lt;/div&gt;</summary>
		<author><name>Dmurrle</name></author>
	</entry>
</feed>