ZWave API
Contents
Introduction
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.
IMPORTANT: all information added to this page _must_ have a reference to the source where it came from.
API
Frame specification
Karl Denning implemented basic ZWave support in his software "HomeDaemon". He advised that basic frame specification can be derived from his source code (http://www.intouchcontrolsforum.com/forums/showpost.php?s=e11a812b08256225ebb66a73d8f6d193&p=173&postcount=13).
Basic Classes
From the Leviton Z-Wave RS232 ASCII Interface Programming Guide (RZC0P-1LW, 10/9/2007):
Controller 1 Static controller 2 Slave 3 Routing Slave 4
that leads us to some definitions:
#define OZA_BASIC_CLASS_CONTROLLER 0x01 #define OZA_BASIC_CLASS_STATIC_CONTROLLER 0x02 #define OZA_BASIC_CLASS_SLAVE 0x03 #define OZA_BASIC_CLASS_ROUTING_SLAVE 0x04
Device Types
From the Z-Wave Configuration Information-1.pdf:
CONTROLLER 0x01 (like the ZTH200, Classes: ) SWITCH/APPLIANCE 0x10 (ZRP200, Classes: 25, 27, 75) DIMMER 0x11 (ZDP200, ZDW230, .., Classes: 26, 27, 75, ...) TRANSMITTER 0x12 THERMOSTAT 0x08 SHUTTER 0x09
Command and Device classes
From the Electronic Solutions, Inc. DBMZ Advanced User manual:
Command/Device Classes
Basic Slave Device
All
Multilevel Switch
- COMMAND_CLASS_SWITCH_MULTILEVEL
MULTILEVEL_SWITCH_GET MULTILEVEL_SWITCH_SET MULTILEVEL_SWITCH_START_LEVEL_CHANGE MULTILEVEL_SWITCH_STOP_LEVEL_CHANGE
additional information from http://zwaveworld.com/forum/index.php?showtopic=237:
>?FI003,017,000 //basic class 3 (slave), generic class 0x11 (multlevel switch), specific class 0
Basic
- COMMAND_CLASS_BASIC
BASIC_GET BASIC_SET
Mandatory
Multilevel Sensor
(from the Vizia RF Application Note)
- COMMAND_CLASS_SENSOR_MULTILEVEL
example get:
>N4SE49,4 (RZC0P Syntax)
sensor report:
<N004:049,005,001,009,075 049: device class 005: command report 001: value send is a temperature value 009: value represented with 1 byte in degrees fahrenheit 075: 75° F
Manufacturer Specific
- COMMAND_CLASS_MANUFACTURER_SPECIFIC
Show the ESI product data:
MANUFACTURER_SPECIFIC_GET
Example return message:
0x00 0x33 0x52 0x50 0x30 0x32 0x00: maunfacturer id high byte 0x33: manufacturer id low byte, ID: 0x0033 Product type ID "RP" Product ID "02"
Version
- COMMAND_CLASS_VERSION
VERSION_GET
Example return message:
0x04 0x02 0x06 0x01 0x01 0x5a 0x04: Library type 4 for basic slave device 0x02: Protocol version 2 0x06: Protocol sub version 6 0x01: Application version 1 0x01: Application sub version 1 0x5a: ?
All Switch
- COMMAND_CLASS_SWITCH_ALL
SWITCH_ALL_GET SWITCH_ALL_ON SWITCH_ALL_OFF
Configuration
- COMMAND_CLASS_CONFIGURATION
Each parameter is a single byte ("0" or "1")
CONFIGURATION_GET CONFIGURATION_SET
Power Level
- COMMAND_CLASS_POWERLEVEL
POWERLEVEL_TEST_NODE_SET POWERLEVEL_TEST_NODE_GET POWERLEVEL_TEST_NODE_REPORT
Example: POWERLEVEL_SET, 5, 60 set the ZWave node's power level to 5 for the length of 60 seconds
Device configuration data
Traces
Device --> <SOH> (001) <BS> (008) <NUL> (000) <EOT> (004) <EOT> (004) � (239) <STX> (002) ' (039) Device --> <EOT> (004) 9 (057) Device --> <SOH> (001) <BS> (008) <NUL> (000) <EOT> (004) <EOT> (004) � (239) <STX> (002) ' (039) <EOT> (004) 9 (057) Device --> <SOH> (001) <BS> (008) <NUL> (000) <EOT> (004) <EOT> (004) � (239) <STX> (002) ' (039) <EOT> (004) Device --> 9 (057) Device --> <SOH> (001) <BS> (008) <NUL> (000) <EOT> (004) <EOT> (004) � (239) Device --> <STX> (002) ' (039) <EOT> (004) 9 (057) Device --> <SOH> (001) <BS> (008) <NUL> (000) Device --> <EOT> (004) <NUL> (000) � (239) <STX> (002) ' (039) <EOT> (004) = (061) Device --> <SOH> (001) <BS> (008) <NUL> (000) <EOT> (004) <NUL> (000) � (239) <STX> (002) ' (039) <EOT> (004) = (061) Device --> <SOH> (001) <BS> (008) <NUL> (000) <EOT> (004) <NUL> (000) � (239) <STX> (002) ' (039) <EOT> (004) = (061) Device --> <SOH> (001) <BS> (008) <NUL> (000) <EOT> (004) <NUL> (000) � (239) <STX> (002) ' (039) Device --> <EOT> (004) = (061) Device --> <SOH> (001) <BS> (008) <NUL> (000) <EOT> (004) <EOT> (004) � (239) Device --> <STX> (002) ' (039) <ENQ> (005) 8 (056) Device --> <SOH> (001) <BS> (008) <NUL> (000) <EOT> (004) <EOT> (004) Device --> � (239) <STX> (002) ' (039) <ENQ> (005) 8 (056) Device --> <SOH> (001) <BS> (008) <NUL> (000) Device --> <EOT> (004) <EOT> (004) � (239) <STX> (002) ' (039) <ENQ> (005) 8 (056) Device --> <SOH> (001) <BS> (008) <NUL> (000) <EOT> (004) <EOT> (004) � (239) <STX> (002) ' (039) <ENQ> (005) 8 (056) Device --> <SOH> (001) <BS> (008) <NUL> (000) <EOT> (004) <NUL> (000) � (239) <STX> (002) ' (039) Device --> <ENQ> (005) < (060) Device --> <SOH> (001) <BS> (008) <NUL> (000) <EOT> (004) <NUL> (000) � (239) Device --> <STX> (002) ' (039) <ENQ> (005) < (060) Device --> <SOH> (001) <BS> (008) Device --> <NUL> (000) <EOT> (004) <NUL> (000) � (239) <STX> (002) ' (039) <ENQ> (005) < (060) Device --> <SOH> (001) <BS> (008) <NUL> (000) <EOT> (004) <NUL> (000) � (239) <STX> (002) ' (039) <ENQ> (005) < (060) Device --> <ACK> (006) Device --> <SOH> (001) <EOT> (004) <SOH> (001) <DC3> (019) <SOH> (001) � (232) Device --> <SOH> (001) <EOT> (004) <SOH> (001) <DC3> (019) <SOH> (001) � (232) Device --> <SOH> (001) <EOT> (004) <SOH> (001) <DC3> (019) <SOH> (001) Device --> � (232) Device --> <SOH> (001) <EOT> (004) <SOH> (001) Device --> <DC3> (019) <SOH> (001) � (232) Device --> <SOH> (001) <ENQ> (005) <NUL> (000) <DC3> (019) <ENQ> (005) <NUL> (000) � (236) Device --> <SOH> (001) <ENQ> (005) <NUL> (000) <DC3> (019) <ENQ> (005) <NUL> (000) � (236) Device --> <SOH> (001) <ENQ> (005) <NUL> (000) <DC3> (019) <ENQ> (005) Device --> <NUL> (000) � (236) Device --> <SOH> (001) <ENQ> (005) <NUL> (000) Device --> <DC3> (019) <ENQ> (005) <NUL> (000) � (236)
References
http://www.basshome.com/leviton_z-wave_documentation_1970_ctg.htm
http://zwaveworld.com/forum/index.php?showtopic=237
http://www.eilhk.com/en/product/Datasheet/Zensys/SDS10243-2%20-%20Z-Wave%20Protocol%20Overview.pdf
or
http://www.smarthus.info/support/download/zwave/Z-Wave%20Protocol%20Overview.pdf
or
http://www.smarthus.info/support/download/zwave/Z-Wave%20Node%20Type%20Overview%20and%20Network.pdf
http://www.smarthus.info/support/download/zwave/Z-Wave%20Configuration%20Information.pdf
http://www.ddj.com/embedded/193104353
Tools used
http://sourceforge.net/projects/slsnif/
Links
http://www.intouchcontrolsforum.com/forums/showthread.php?t=41&page=2
http://www.elec-solutions.com/docs/motor_controls/dbmz/DBMZ_v1+1_Advanced_User_Manual.pdf