Z-Way C, HTTP REST and WebSocket API documentation
v5.0
© Trident IoT, 2025
Z-Way is a software platform for managing smart home devices using the Z-Wave protocol. It provides tools for developers and users to integrate, monitor, and control various devices within a Z-Wave network. Key features include:
Z-Way is suitable for both end users looking to automate their homes and developers building Z-Wave-based controllers and gateways.
![]() |
Z-Way offers multiple Application Program Interfaces (API) that are partly built on each other. Figure 1.1 shows the general structure of Z-Way with focus on the APIs. The most important part of Z-Way is the Z-Way library that uses the standard Z-Wave Serial API to communicate with a Z-Wave compatible transceiver hardware but enhanced with some Z-Way specific functions such as frequency change.
The Z-Wave library services can be accessed directly using the Z-Wave API. There are two Z-Wave API versions available:
The Z-Wave API only allows the management of the Z-Wave network and the control and management of the devices as such. No higher order logic except the so-called Z-Wave associations between two Z-Wave devices can be used.
The Z-Wave API implements the direct access to the Z-Wave network. All Z-Wave devices are referred to by their unique identification in the wireless network—the Node ID. Z-Wave devices may have different instances of the same function, also called channels (for example sockets in a power strip). The Z-Wave API refers to them as daughter objects of the physical device object identified by an instance ID. In case there is only one instance, the instance ID = 0 is used.
All device variables and available commands in a Z-Wave device are grouped in the so-called command classes. The Z-Wave API allows direct access to all parameters, values and commands of these command class structures. Annex gives you the complete reference of the implemented command classes.
Beside the devices the Z-Wave API also offers access to the management interface of the network. Annex gives you a full reference of the implemented function classes.
The Z-Wave API can be accessed on the JSON with any standard web browser using the URL
http://YOURIP:8083/ZWaveAPI/*
Device objects or commands of these objects are accessed by
http://YOURIP:8083/ZWaveAPI/Run/devices[*].*
http://YOURIP:8083/ZWaveAPI/Run/devices[x].instances[y].*
http://YOURIP:8083/ZWaveAPI/Run/devices[x].instances[y].commandClasses[z].*
The whole data tree of the Z-Wave network is accessed using
http://YOURIP:8083/ZWaveAPI/Data/*
Please refer to the Z-Way for information about the context, the commands, and the data used. Section 11.3 provides more information about the API and the underlying data structure.
All access of the webserver require authentication of the user. Please refer to Chapter AUTHENTICATION for details how to authenticate.
This chapter describes the Z-Wave API and it's use in detail. All examples will use the JSON notation. Please note that the C library notation offers equal functionality.
The Z-Wave API is the north-bound interface of the Z-Wave library. This Z-Wave library implement the whole control logic of the Z-Wave network. The two main functions are
The description of function classes and command Cclasses and their access using the JSON complete the description of the Z-Wave API. For a full reference of function classes and command classes please refer to the Annex.
Z-Way holds all data of the Z-Way network in a data holder structure. The data holder structure is a hierarchical tree of data elements.
Following the object-oriented software paradigm the different commands targeting the network or individual devices are also embedded into the data objects as object methods.
Each data element is handled in a data object that contains the data element and some contextual data.
Each Data element such as devices[nodeID].data.nodeId is an object with the following child elements:
Every time a command is issued that will have impact on a certain data holder value the time of the request is stored in "invalidateTime". This allows tracking when a new data value is requested from the network and when this new data value is provided by the network.
This is particularly true if Z-Way is sending a SET command. In this case the data value is invalidated with the "SET" commands and gets validated back when the result of the GET command was finally stored in the data model.
|
The root of the data tree has two important child objects:
Easily to explore the data tree using the Chrome extension JSON Formatter.
To access to the Z-Wave full tree use this path:
http://192.168.1.108:8083/ZWaveAPI/Data/0
To get incremental data at the end of the path, specify the time in unix timestamp format:
http://192.168.1.108:8083/ZWaveAPI/Data/1739361821
You can access any element of the tree for debugging.http://192.168.1.108:8083/ZWaveAPI/Run/devices
Command Classes list of the device 7
http://192.168.1.108:8083/ZWaveAPI/Run/devices[7].instances[0].commandClasses
To access the command classes you can use a number or a name.
instances[0] can be omitted to access the zero channel.
http://192.168.1.108:8083/ZWaveAPI/Run/devices[7].Basic
The same for Basic
http://192.168.1.108:8083/ZWaveAPI/Run/devices[7].instances[0].commandClasses[32]
http://192.168.1.108:8083/ZWaveAPI/Run/devices[7].SwitchMultilevel
The same for SwitchMultilevel
http://192.168.1.108:8083/ZWaveAPI/Run/devices[7].instances[0].commandClasses[38]
The full list of command classes is in the Reference.
Please note that all status variables accessible on the Z-Wave APIs are only proxy of the real value in the network.
To transport data between the real wireless device and the GUI multiple communication instances are involved. The complexity of this communication chain will be explained in the following example:
![]() |
Assuming the GUI shows the status of a remote switch and allows changing the switching state of this device. When the user hits the switching button, he expects to see the result of his action as a changing status of the device in the GUI. The first step is to hand over the command (SET) from the GUI to Z-Way using the JSON interface. Z-Way receives the command and will confirm the reception to the GUI. Z-Way recognizes that the execution of the switching command will likely result in a change of the status variable However Z-Way will not immediately change the status variable but invalidate the actual value (mark as outdated). This is the correct action because at the moment when the command was received the status on the remote device has not been changed yet but the status of the switch is now unknown. If the GUI polls the value it will still see the old value but marked as invalid. Z-Way will now hand over the switching command to the Z-Wave transceiver chip. Since it is possible that there are other command waiting for execution (sending) by the Z-Wave transceiver chip the job queue is queuing them and will handle certain priorities if needed. Z-Way has recognized that the command will likely change the status of the remote device and is therefore adding another command to call the actual status after the switching command was issued. The transceiver is confirming the reception of the command and this confirmation is noted in the job queue. This confirmation however only means that the transceiver (Z-Wave chip) has accepted the command and does neither indicate that the remote device has receives it nor even confirming that the remote device has executed accordingly. The transceiver will now try to send the command wirelessly to the remote device. A successful confirmation of the reception from the remote device is the only valid indicator that the remote device has received the command (again, not that it was executed!). The second command (GET) is now transmitted the very same way and confirmed by the remote device. This device will now sent a REPORT command back to Z-Way reporting the new status of the switching device. Now the transceiver has to confirm the reception. The transceiver will then send the new value to the Z-Way engine by issuing commands via the serial interface. Z-Way receives the report and will update the switching state and validate the value. From now on the GUI will receive a new state when polling.
JSON API allows executing commands on the server side using HTTP POST or GET requests. The command to execute is taken from the URL.
All functions are executed in form
http://YOURIP:8083/Run/ZWaveAPI*
The best way to learn about the commands and the data is to use the Z-Wave Expert User Interface . Additionally the Z-Wave Expert User Interface provides nice and convenient vizualization of all commends (both command classes and function classes).
All access to the webserver require authentication of the user. Please refer to Chapter AUTHENTICATION for details how to authenticate.
![]() |
Figure 1.4 shows the Controller Info Page in Network menu with a list of all function classes implemented. The complete reference of the parameters and return values of the functions classes you find in Annex.
Assuming there is a function class “SerialAPIGetInitData’’ it is possible to call the function by calling the URL
/ZWaveAPI/Run/SerialAPIGetInitData(0)
in the web browser. In case the function was completed successfully, a simple “null’’ is returned; otherwise, an error code is provided.
![]() |
In the same manner, it is possible to send a command to a device using one of it's command classes. The Z-Wave Expert User Interface provides a general menu item called Expert Commands as shown in Figure 1.5. Z-Way reads out all command classes and it's functions and provides here a complete list of command lass-specific commands. The debug window will reveal the syntax if the complete command class reference in Annex is not available or too inconvenient to use.
For example, to switch ON a device #2 using the command class BASIC, it is possible to write:
/ZWaveAPI/Run/devices[2].instances[0].commandClasses[0x20].Set(255)
or
/ZWaveAPI/Run/devices[2].instances[0].Basic.Set(255)
The usual way to access a command class is using the format
devices[nodeId].instances[instanceId].commandClasses[commandclassId]
There are ways to simplify the syntax:
devices[nodeId].instances[instanceId].Basic
is equivalent to
devices[nodeId].instances[instanceId].commandClasses[0x20]
the instances[0] can be obmitted:
devices[nodeId].instances[instanceId].Basic
then turns into
devices[nodeId].Basic
The data model or data holder object as described is Section 11.3.1 can be accessed completely using the Z-Wave Expert User Interface . The two buttons Show controller Data and Show controllers device data in Network > Controller Info of Z-Wave Expert User Interface as shown in Figure 1.4 lists all variables of the controller as such. One structure is controller-specific and one other structure is the data of the controller as node of the Z-Wave network. All nodes of the Z-Wave network have the very same data structure beside their individual array of instances and command classes per instance. This data model for the individual devices can be access using Configuration > Show Interview results in Z-Wave Expert User Interface . Figure 1.6 shows this dialog. On the top of the window there is a button with the devices name. This button reveals the data structure of the individual device as shown in Figure 1.7.
![]() |
![]() |
The dialog has the list of all command classes and clicking on the name of the command class will open a sub dialog showing the data of the commend class. Each command class has some permanent values:
Any data holder object has properties value, updateTime, invalidateTime, name, but for compatibility with JS and previous versions we have valueOf() method (allows omitting .value in JS code, hence write "data.level == 255"), updated (alias to updateTime), invalidated (alias to invalidateTime).
Returns an associative array of changes in Z-Way data tree since <timestamp>. The array consists of (<path>: <JSON object>) object pairs. The client is supposed to assign the new <JSON object> to the subtree with the <path> discarding previous content of that subtree. Zero (0) can be used instead of <timestamp> to obtain the full Z-Way data tree.
The tree have same structure as the backend tree (Figure 1.2) with one additional root element "updateTime" which contains the time of latest update. This "updateTime" value should be used in the next request for changes. All timestamps (including updateTime) corresponds to server local time.
The object looks like:
[JSON Data Structure]{
"[path from the root]": [updated subtree],
"[path from the root]": [updated subtree],
...
updateTime: [current timestamp]
}
Examples for Commands to update the data tree look like:
Get all data:/ZWaveAPI/Data/0
Get updates since 134500000 (Unix timestamp):
/ZWaveAPI/Data/134500000
Please note that during data updates some values are updated by big subtrees. For example, in Meter Command Class value of a scale is always updated as a scale subtree by [scale].val object (containing scale and type descriptions).
This function is used to visualize the Z-Way job queue. This is for debugging only but very useful to understand the current state of Z-Way engine.
The information given on this page is only relevant for advanced Z-Wave developers and for debugging.
The table shows the active jobs with their respective status and additional information.
|
Table 11.2 summarizes the different values displayed on the Job Queue visualization. While this info is certainly not relevant for end users of the system it is a great debug tool.
Security S2 inclusion process require additional interaction with the user during inclusion process. In addition to putting the device in Learn Mode and Z-Way in Add mode the user will be asked to grant different Security S2 keys and enter the PIN code.
To implement Security S2 inclusion process in your own app follow the steps below:
Z-Way keeps all files in one folder with exception of the log files. In Unix based platforms such as Linux PC, Raspberry Pi or OpenWRT the standard install folder is usually /opt/z-way-server. The logfile is typically placed in /var/log/z-way-server.log but this location of the log file can be reconfigured in the config file.
On Windows, the installation wizard asked where to place Z-Way and where to place the log file.
Right after installation, the standard folder has the following content:
/opt/z-way-server:
.
|-- automation
|-- ChangeLog
|-- colorize-log.sh
|-- config
|-- config.xml
|-- htdocs
|-- libs
|-- libzbee
|-- libzenocean
|-- libzmatter
|-- libzway
|-- libzwaysrv
|-- modules
|-- modules-includes
|-- reset-z-way.sh
|-- translations
|-- ZDDX
|-- z-get-tty
|-- z-get-tty-config
`-- z-way-server
The main config file in the root folder has XML file format. If only allows setting the log level (0 = log all, 9 = log almost nothing), the path to the log file and a debug port if needed. Don't change the setting for automation folder unless you really know what you do and why.
This is an example for the standard config.xml displaying all log right into the console.
[config.xml]<config>
<automation-dir>automation</automation-dir>
<log-file>0</log-file>
<log-level>0</log-level>
<debug-port>0</debug-port>
</config>
This subfolder has the following structure:
/opt/z-way-server/config:
.
|-- Defaults.xml
|-- Profiles.xml
`-- zddx
|-- e8ed2d2c-DevicesData.xml
`-- known_dsk
The file Defaults.xml allows defining various behavior of Z-Way, among them the appearance of Z-Way as secondary controller:
The file Profiles.xml contains the EnOcean profile definition. This clearly reflects the official profile definitions published by the EnOcean alliance.
/opt/z-way-server/translations:
.
|-- AEC.xml
|-- Alarms.xml
|-- BarrierSignals.xml
|-- ColorCapabilities.xml
|-- DeviceClasses.xml
|-- DoorLock.xml
|-- Indicators.xml
|-- LockEvents.xml
|-- Scales.xml
|-- SDKIds.xml
|-- ThermostatModes.xml
|-- UpdateVendors.sh
|-- UserCode.xml
|-- VendorIds.xml
`-- ZWavePlus.xml
All files in this subfolder are XML files and some of them require local language translations, as described in Chapter 10.3.
ZDDX files (Z-Wave Device Description XML Files) are XML files containing verbal description of a specific Z-Wave device that cannot be called from the device itself during the interview process: They are:
It is possible to add your own ZDDX files, but Z-Way uses an index file ZDDX.indx to access them. Once a new file is added, run python MakeIndex.py.
Chapter 13.5 explain how to add and to submit new own ZDDX files and how to extend them.
/opt/z-way-server/htdocs:
.
|-- config -> ../config
|-- expert
|-- index.html
|-- lite
|-- smarthome
|-- translations -> ../translations
|-- ZDDX -> ../ZDDX
`-- zigxpert
This subfolder is the root folder of the embedded webserver. The index.html redirects to smarthome/index.html.
/opt/z-way-server:
.
|-- libzbee
|-- libzenocean
|-- libzmatter
|-- libzway
|-- libzwaysrv
The Z-Way library is a middleware between Z-Wave transceiver and your application. Z-Way offers pretty high level API to control Z-Wave devices and manage wireless network.
Interaction with the library covers three aspects:
Every command request generates an outgoing packet (job). Before generating a packet, library will validate parameters and check whether the command is supported by the recipient. In case of failure command will return error immediately.
Once a job is generated, it is placed into outgoing queue for future send. The queued jobs are handled internally by Z-Way engine according to commands priorities, nodes states and capabilities, transceiver state etc.
Once the job is sent, it must be first confirmed it was successfully delivered to the Z-Wave stack, and then confirmed it was delivered to the recipient. All these operations are performed asynchronously, so command may provide a callback function to call in case of success or failure if it is needed to know delivery result.
After the delivery was confirmed, command is considered executed. If it was a state request command (i.e. SensorMultilevel Get), response packet may be delayed (or even not sent at all), so command's success/failure callbacks cannot be used to get requested state immediately.
All incoming packets from the Z-Wave network are automatically parsed by Z-Way and stored in special variables called data holders. Data holder is a named variable that stores a value along with it's data type and time the value was last updated and "invalidated". Each data holder may also contain a set of child data holders, so they form a hierarchical data storage. Data holders also support callbacks, so custom code may be executed each time the value is updated.
For example, level data holder stores dimming level of a dimmer. Once application executes a Get command for that dimmer, Z-Way will update invalidateTime property on the level data holder, so application knows the current value is assumed to be outdated, but the new one was not received yet.
Once Z-Way received a packet with new value of the dimmer, it will store it in level data holder and update updateTime property. Since updateTime is greater that invalidateTime, the value is considered valid now.
Z-Wave device can also send unsolicited state reports to controller (without a request from controller's side; e.g. due to local operation or periodically). Due to asynchronous nature of Z-Wave protocol, controller can't tell whether the packet was sent unsolicited or it is a response to the previous command. So unsolicited packet will be handled the same way exactly.
Z-Way inherits structure of Z-Wave protocol and divides data holders and commanda on different Command Classes (CC). Command Classes are building blocks of Z-Wave functionality. For example, dimming is provided by Command Class SwitchMultilevel, relay operation by Command Class SwitchBinary, sensors by command class SensorMultilevel and SensorBinary etc. Please consult Z-Wave protocol basics to understand Z-Wave Command Classes.
All Command Classes share a minimal subset of common data holders:
All the other data holders are specific to each Command Class. For example, SwitchMultilevel Command Class contains level data holder, SensorBinary has two-level storage, grouping data by sensor types: 0 -> sensorTypeString, level, 5 -> sensorTypeString, level, ... where type identifiers are Z-Wave specific constants. Every Z-Wave specific constant value will have corresponding verbal description (in case of SensorBinary it is in sensorTypeString data holder).
Some Command Classes are hidden under the hood of Z-Way: MultiCmd, Security, CRC16, MultiChannel, ApplicationStatus. They're handled internally by Z-Way software, and shouldn't be used directly.
Some Command Classes have no public APIs, but their data holders may be very useful in your application: AssociationGroupInformation, DeviceResetLocally, ManufacturerSpecific, Version, ZWavePlusInfo.
All the remaing Command Classes have their Get and Set commands specific to functionality of the Command Class. Consult CommandClassesPublic.h header file for more info about available commands for different Command Classes and their meaning.
Z-Way offers API for network management operations: include new devices, exclude devices, discover neighbor devices, remove failed nodes, frequency selection, controller reset etc. These functions are described in ZWayLib.h header file.
Z-Way also provides a low level access to Z-Wave transceiver functionality through Z-Wave Serial API. These functions are provided by Function Classes. You should use them only if you have deep knowledge of Z-Wave networking. Check FunctionClassesPublic.h for more info.
To use Z-Way one need to include few header files:
#include <ZWayLib.h>
#include <ZLogging.h>
Z-Way will need to know where to write the log to, so first of all you need to create logging context using zlog_create() call. You can disable logging by passing NULL instead of logging context to Z-Way.
Then create new a Z-Way context using zway_init(). It will only allocate memory, open log files, initialize internal structures. At this point you can already attach your handlers on new device/instance/Command Class creation (you will also be able to do it at any time later). Do it using zway_device_add_callback() call.
Warning: you should initialize ZWay pointer with NULL before passing it to zway_init!
Executing zway_start() will open serial port and start a new thread that will handle all communications with the transceiver. From now Z-Way can receive packets from the network, but can not parse them yet, since devices were not discovered yet. All received packets will just be queued to be parsed later after discovery process.
Last step to run Z-Way is zway_discover() call. It will start communications with the Z-Wave transceiver and ask about devices in the network, their capabilities, network state etc. During discovery phase Z-Way will create structures for all devices and load saved data from file stored in config/zddx folder.
From now on, Z-Way is ready to operate. Incoming events will trigger callback functions attached by application, and executing commands will put new packets in the queue.
You will also need few other functions zway_is_running(), zway_is_idle(), zway_stop(), zway_terminate() to handler termination process.
Security S0 inclusion is completely handled by the Z-Way library.
Security S2 inclusion with Z-Way library requires user interaction. Z-Way offers various options:
Add the device DSK using zway_node_provisioning_dsk_add() with a pointer to 16 bytes DSK and filled the NodeProvisioningData structure (instead of filling it one can fill it with zeros).
The inclusion and key exchange will happen automatically on the device's power-up.
All keys will be granted to the device.
zway_dsk_string_to_bytes() can be used to convert AAAAA-BBBBB-...-HHHHH into 16 bytes.
After inclusion start subscribe to Command Classes creation (using zway_device_add_callback() with CommandAdded flag) and wait for SecurityS2 creation. Then subscribe to the change of requestedKeys and puclickKey data holders on SecurityS2 Command Class data (using zdata_add_callback()).
On requestedKeys change inspect inner data holders for the list of requested keys and fill all grantedKeys inner data holders (by setting TRUE or FALSE).
Once done, set grantedKeys data holder to TRUE.
Alternatively, set grantedKeys to an integer value as Granted Key mask (0x80 (S0) | 0x01 (S2 Unauthenticated) | 0x02 (S2 Authenticated) | 0x04 (S2 Access Control)).
On puclickKey update check it against the DSK on the device (it is good to show the full key to the customer to allow full check).
Copy the key in the puclickKeyVerified data holder to confirm. If publicKeyVerificationRequires is set to TRUE, the user should also be asked for the PIN code. This two-bytes code should replace the two leading zero bytes of the puclickKey.
Just before starting the inclusion process with zway_controller_add_node_to_network set data holders on the controller S2AutoInclude.pin=XXXXX (PIN number) and S2AutoInclude.keys=Y (-1 for all keys, 0x80 for S0 only, 0x01 for S2 Unauthenticated, 0x02 for S2 Authenticated, 0x04 for S2 Access, or any ORed combination to provide multiple keys)
If there is no need for S2 Authentication or S2 Access keys, just specify pin=0 and keys=0x01. This will give S2Unauthenticated without entering the PIN code. keys=0x81 will grant S0 and S2 Unauthenticated.
ZWLog logger = zlog_create(stdout, Debug); ZWErr err; ZWay zway; err = zway_init(&zway, ZSTR("/dev/ttyACM0"), 0, NULL, NULL, NULL, NULL, logger); err = zway_start(zway, NULL, NULL); err = zway_discover(zway);
ZWError zway_cc_switch_binary_get(zway, nodeId, 0, NULL, NULL, NULL);
ZWError zway_cc_switch_binary_set(zway, nodeId, 0, TRUE, 0xFF, NULL, NULL, NULL);
zway_device_add_callback(zway, DeviceAdded | CommandAdded, onDeviceAdded, NULL);
ZDataHolder dh = zway_find_device_instance_cc_data(zway, nodeId, 0, SENSOR_MULTILEVEL, "1.val"); err = zdata_get_integer(dh, ∫_val); zdata_add_callback(dh, onLevelChange, FALSE, NULL);
To access data holders one can use zdata_...
functions defined in ZData.h
(e.g. zdata_get_integer_array()
, zdata_get_binary()
, zdata_get_string()
). zdata_get_...
functions return pointers to the memory inside data holders. The caller should never directly alter or free that memory in any case. Instead use zdata_set_...
functions.
A lock should always be aquired before working with data holders and held until the value is not used anymore (using zway_aquire_lock()
and zway_release_lock()
). For long term usage copy the value in your own memory.
Z-Way is storing network topology and devices' information in memory. To remember that data over restarts, Z-Way is storing this information in a special XML file config/zddx/xxxxxxxx-DevicesData.xml, where xxxxxxxx is the Z-Wave Home ID. This file contains the fill datas holder tree for all devices and of the controller.
This file is updated on topology changes, device's interview steps as well as on Z-Way stop. Daily changes (devices' status updates) might be lost on inappropriate Z-Way stop or hardware power off. To reduce the impact of old values stored in the offline storage, it is recommended to save this information hourly using the call zddx_save_to_xml()
.
Z-Way C library API changes are registered in the Z-Way Change Log. In addition to the C API, sometimes the data holder structre is also changed. This affects the format of the offline stroage. To transform Z-Way offline storage from the old format to the new one the z-cfg-update tool can be used. It updates the format of xxxxxxxx-DevicesData.xml file. It should be called before Z-Way start after each update or on each Z-Way start.
To test open Chrome web console and connect to the Z-Way WebSocket server. You must be on the page you are connecting to.
All events will be displayed in the log.
const ws = new WebSocket("ws://192.168.8.55:8083", "http-only");
ws.onmessage = (event) => {
console.log(event.data);
};
Another way to test is to use a extension "Simple WebSocket Client" for Chrome.
Examples of access to various command classes can be found in the section View Data Tree.
Get the tree for Basic CC on device 2:
ws.send(JSON.stringify({method: "ZWave.Command", params: "devices[2].Basic.data"}));
Answer:
{
"result": {
"value": null,
"type": "empty",
"supported": {
"value": true,
"type": "bool",
"invalidateTime": 1738868568,
"updateTime": 1738868569
},
"version": {
"value": 2,
"type": "int",
"invalidateTime": 1738868571,
"updateTime": 1738868572
},
"security": {
"value": true,
"type": "bool",
"invalidateTime": 1738868568,
"updateTime": 1738868571
},
"interviewDone": {
"value": true,
"type": "bool",
"invalidateTime": 1738868568,
"updateTime": 1738868574
},
"interviewCounter": {
"value": 9,
"type": "int",
"invalidateTime": 1738868568,
"updateTime": 1738868574
},
"level": {
"value": 0,
"type": "int",
"invalidateTime": 1738868573,
"updateTime": 1738868574
},
"invalidateTime": 1738868568,
"updateTime": 1738868569
}, "id": 0}
Get Z-Way version:
ws.send(JSON.stringify({method: "ZWave.GetStatus"}));
Answer:
{"result": {"fw":"v5.0.1-trident-certification-26-gef20ab88","nodes":2,"sleeping":0,"online":2}, "id": 0}
Turn On device #2 for SwitchBinary CC
ws.send(JSON.stringify({method: "ZWave.Command", params: "devices[2].instances[0].commandClasses[37].Set(255)"}));
Turn Off device #2 for SwitchBinary CC
ws.send(JSON.stringify({method: "ZWave.Command", params: "devices[2].instances[0].commandClasses[37].Set(0)"}));
Set dimmer level to 10% for SwitchMultilevel CC
ws.send(JSON.stringify({method: "ZWave.Command", params: "devices[2].instances[0].commandClasses[38].Set(10)"}));
Start inclusion:
ws.send(JSON.stringify({method: "ZWave.Command", params: "controller.AddNodeToNetwork(true)"}));
Stop inclusion:
ws.send(JSON.stringify({method: "ZWave.Command", params: "controller.AddNodeToNetwork(false)"}));
Start exclusion:
ws.send(JSON.stringify({method: "ZWave.Command", params: "controller.RemoveNodeFromNetwork(true)"}));
Stop exclusion:
ws.send(JSON.stringify({method: "ZWave.Command", params: "controller.RemoveNodeFromNetwork(false)"}));
For S2 devices you will have to grant keys.
Call this prior to starting the inclusion to add a device with PIN 12345 and grant all keys requested by the device:
ws.send(JSON.stringify({method: "ZWave.Command", params: "controller.data.S2AutoInclude.pin=12345"}));
ws.send(JSON.stringify({method: "ZWave.Command", params: "controller.data.S2AutoInclude.keys=-1"}));
and start inclusion using
ws.send(JSON.stringify({method: "ZWave.Command", params: "controller.AddNodeToNetwork(true)"}));
To add device via SmartStart you need to add full DSC to dskProvisioningList
ws.send(JSON.stringify({method: "ZWave.Command", params: "controller.data.smartStart.dskProvisioningList=[\"12345-67890-12345-67890-12345-67890-12345-67890\"]"}));
and no need to do anything - the device will be automatically detected and added on power-on
This is the description of the data object (called Data Holder or DH).
You can access the data elements of "controller" in the Z-Wave Expert User Interface in menu Network > Controller Info using the buttons Show controller data and Show controller's device data.
Function classes as shown in section
are called as methods of the object zway.controller.
The devices object contains the array of the device objects. Each device in the network - including the controller itself - has a device object in Z-Way.
The data object can be accesses in the Z-Wave Expert User Interface in advanced mode of 'Configuration'
Each device may have multiple instances (similar functions like switches, same type sensors, ...) If only one instance is present the id of this instance is 0. Command classes are located in instances only.
m | : instance object |
This is the Command Class object. It contains public methods and public data elements that are described in chapter
Command Classes are groups of wireless commands that allow using certain functions of a Z-Wave device. In Z-Way each Z-Wave device has a data holder entry for each Command Class supported. During the inclusion and interview of the device the Command Class structure is instantiated in the data holder and filled with certain data. Command Class commands change values of the corresponding data holder structure. The follow list shows the public commands of the Command Classes supported with their parameters and the data holder objects changed.
In Z-Wave Expert User Interface navigate to Configuration > Expert Commands to execute commands of the supported Command Classes and visualizes all data holder elements in as tree in a simplified user interface.
Version 1, Supported and Controlled
The Basic Command Class is the wildcard command class. Almost all Z-Wave devices support this command class but they interpret it's commands in different ways. A thermostat will handle a Basic Set Command in a different way than a Dimmer but both accept the Basic Set command and act. Used for generic interoperability between devices. You should always use more specific Command Classes where possible.
Data holders:
Syntax: Get(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_basic_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Basic Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: level updated
Syntax: Set(value, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_basic_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE value, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Basic Set
Parameter value: Value
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: level updated
Version 3, Controlled
Allows to manage periodical wakeup of sleeping battery operated device. Upon wakeup device will notify one node listed in nodeId. NB! If the device can wake up by interrupt (user interaction, button press, sensor trigger), it might happen that the device never wakes up. This can happen if you wake up the device by interrupe each time before internal chip wakeup period (usually from 1 to 4 minutes) reaches. (Z-Wave chip can not count for remaining time to next wakeup, so will restart timer again). This means that strictly speaking you can not rely on long time no wake up as an indicator of lost/damaged device or battery empty. NB! To save battery it is recommended to tune wakeup period to one week or even more for devices that do only need to report battery on wakeup (remote controls). For sensors it is recommended to have at least one hour wakeup period.
Data holders:
Syntax: Get(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_wakeup_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Wakeup Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: interval and nodeId updated
Syntax: CapabilitiesGet(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_wakeup_capabilities_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Wakeup CapabilityGet
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: min, max, default, step updated
Syntax: Sleep(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_wakeup_sleep(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Wakeup NoMoreInformation (Sleep)
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: lastSleep updated
Syntax: Set(interval, notificationNodeId, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_wakeup_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, int interval, ZWNODE notification_node_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Wakeup Set
Parameter interval: Wakeup interval in seconds
Parameter notificationNodeId: Node Id to be notified about wakeup
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: interval and nodeId updated
Used to check if device is reachable by sending empty packet.
Version 1, Controlled
Allows monitoring the battery charging level of a device.
Data holders:
Syntax: Get(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_battery_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Battery Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: last updated. lastChange updated if battery level is way higher than it was before, history updated if reached next 10% step
Version 2, Supported and Controlled
Reports vendor information, product type and ID and device serial number.
Data holders:
Syntax: Get(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_manufacturer_specific_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send ManufacturerSpecific Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: DeviceIdGet(type, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_manufacturer_specific_device_id_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE type, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send ManufacturerSpecific Device Id Get
Parameter type: Device Id type to request
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Version 1, Controlled
Allows to transfer manufacturer proprietary data. Data format is manufacturer specific.
Data holders:
Syntax: Get(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_proprietary_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Proprietary Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: Set(data, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_proprietary_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE length, const ZWBYTE * data, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Proprietary Set
Parameter data: Data to set
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Version 4, Controlled
Used to set certian configuration valeus that change the behavior of the device. Z-Wave requires that every device works out of the box without further configuration. However different configuration value significantly enhance the value a device. Z-Wave does not provide any information about the configuration values by wireless commands. User have to look into the device manual to learn about configuration parameters. The Device Description Record (ZDDX), incoprotated by Z-Way gives information about valid parameters and the meaning of the values to be set.
Data holders:
Syntax: Get(parameter, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_configuration_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, unsigned short int parameter, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Configuration Get
Parameter parameter: Parameter number
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: parameter subtree updated or created if absent
Syntax: Set(parameter, value, size = 0, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_configuration_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, unsigned short int parameter, int value, ZWBYTE size, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Configuration Set
Parameter parameter: Parameter number
Parameter value: Value to be sent (negative and positive values are accepted, but will be stripped to size)
Parameter size: Size of the value (1, 2 or 4 bytes). Use 0 to guess from previously reported value if any. 0 means use size previously obtained Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: parameter subtree updated or created if absent
Syntax: SetDefault(parameter, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_configuration_set_default(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, unsigned short int parameter, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Configuration SetDefault
Parameter parameter: Parameter number to be set to device default
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: parameter subtree updated or created if absent
Syntax: DefaultReset(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_configuration_default_reset(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Configuration DefaultReset
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: parameter subtree updated or created if absent
Version 2, Controlled
Allows receive binary sensor states.
Data holders:
Syntax: Get(sensorType = -1, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_sensor_binary_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, int sensorType, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SensorBinary Get
Parameter sensorType: Type of sensor to query information for. 0xFF to query information for the first available sensor type. -1 to query information for all supported sensor types
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: sensorType subtree updated
Version 2, Supported and Controlled
Allows to manage the association groups: adding and removing nodeIDs in the association groups.
Data holders:
Syntax: Get(groupId = 0, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_association_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE group_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Association Get
Parameter groupId: Group Id (from 1 to 255). 0 requests all groups
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: Subtree corresponding to the group updated
Syntax: Set(groupId, includeNode, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_association_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE group_id, ZWNODE include_node, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Association Set (Add)
Parameter groupId: Group Id (from 1 to 255)
Parameter includeNode: Node to be added to the group
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: Subtree corresponding to the group updated
Syntax: Remove(groupId, excludeNode, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_association_remove(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE group_id, ZWNODE exclude_node, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Association Remove
Parameter groupId: Group Id (from 1 to 255)
Parameter excludeNode: Node to be removed from the group
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: Subtree corresponding to the group updated
Syntax: GroupingsGet(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_association_groupings_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Association GroupingsGet
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: Update number of supported groups and interview all groups
Version 4, Controlled
Allows to read different kind of meters. Z-Wave differentiates different meter types and different meter scales. Please refer to the file translations/Scales.xml for details about possible meter types and values.
Data holders:
Syntax: Get(scale = -1, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_meter_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, int scale, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Meter Get
Parameter scale: Desired scale. -1 for all scales
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: scale subtree updated
Syntax: Reset(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_meter_reset(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Meter Reset
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: scale subtree updated
Syntax: Supported(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_meter_supported(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Meter SupportedGet
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Version 1, Controlled
Allows to gather information from pulse meters.
Data holders:
Syntax: Get(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_meter_pulse_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send MeterPulse Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Version 11, Controlled
Allows to read different kind of sensor. Z-Wave differentiates different sensor types and different scales of this sensor. Please refer to the file /translations/scales.xml for details about possible sensor types and values.
Data holders:
Syntax: Get(sensorType = -1, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_sensor_multilevel_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, int sensor_type, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SensorMultilevel Get
Parameter sensorType: Type of sensor to be requested. -1 means all sensor types supported by the device
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: sensorTypeId subtree updated
Version 1, Controlled
Allows to configure senors specific configuration like trigger level. Works in conjunction with SensorMultilevel Command Class. In modern devices replaced by Configuration Command Class.
Data holders:
Syntax: Get(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_sensor_configuration_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SensorConfiguration Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: all dataholders are updated
Syntax: Set(mode, value, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_sensor_configuration_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE mode, float value, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SensorConfiguration Set
Parameter mode: Value set mode
Parameter value: Value
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: all dataholders are updated
Version 1, Supported and Controlled
Controls the behavior of a actuator on Switch All commands. Also allows to send Switch All commands.
Data holders:
Syntax: Get(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_switch_all_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SwitchAll Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: mode updated
Syntax: Set(mode, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_switch_all_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE mode, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SwitchAll Set
Parameter mode: SwitchAll Mode: see definitions below
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: mode updated
Syntax: SetOn(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_switch_all_set_on(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SwitchAll Set On
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: SetOff(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_switch_all_set_off(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SwitchAll Set Off
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Version 1, Supported and Controlled
Allows to control On/Off switches, actuators, electrical power switches and trap On/Off control commands from other devices.
Data holders:
Syntax: Get(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_switch_binary_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SwitchBinary Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: level updated
Syntax: Set(value, duration = 0xff, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_switch_binary_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBOOL value, ZWBYTE duration, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SwitchBinary Set
Parameter value: Value
Parameter duration: Duration of change:. 0 instantly. 0x01...0x7f in seconds. 0x80...0xfe in minutes mapped to 1...127 (value 0x80=128 is 1 minute). 0xff use device factory default
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: level updated
Version 1, Supported and Controlled
Allows to control all actuators with multilevel switching functions, primarily Dimmers and Motor Controlling devices as well as trap dim events sent by remotes.
Data holders:
Syntax: Get(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_switch_multilevel_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SwitchMultilevel Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: level updated
Syntax: Set(level, duration = 0xff, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_switch_multilevel_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE level, ZWBYTE duration, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SwitchMultilevel Set
Parameter level: Level to be set
Parameter duration: Duration of change:. 0 instantly. 0x01...0x7f in seconds. 0x80...0xfe in minutes mapped to 1...127 (value 0x80=128 is 1 minute). 0xff use device factory default
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: level updated
Syntax: StartLevelChange(dir, duration = 0xff, ignoreStartLevel = TRUE, startLevel = 50, incdec = 0, step = 0xff, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_switch_multilevel_start_level_change(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE dir, ZWBYTE duration, ZWBOOL ignoreStartLevel, ZWBYTE startLevel, ZWBYTE incdec, ZWBYTE step, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SwitchMultilevel StartLevelChange
Parameter dir: Direction of change: 0 to incrase, 1 to decrase
Parameter duration: Duration of change:. 0 instantly. 0x01...0x7f in seconds. 0x80...0xfe in minutes mapped to 1...127 (value 0x80=128 is 1 minute). 0xff use device factory default
Parameter ignoreStartLevel: If set to True, device will ignore start level value and will use it's curent value
Parameter startLevel: Start level to change from
Parameter incdec: Increment/decrement type for step:. 0 Increment. 1 Decrement. 2 Reserved. 3 No Inc/Dec
Parameter step: Step to be used in level change in percentage. 0...99 mapped to 1...100%. 0xff uses device factory default
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: level updated
Syntax: StopLevelChange(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_switch_multilevel_stop_level_change(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SwitchMultilevel StopLevelChange
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: level updated
Version 3, Supported and Controlled
This is an extention to the Association Command Class. It follows the same logic as the Association Command Class and has the same commands but accepts different instance values.
Data holders:
Syntax: Get(groupId = 0, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_multichannel_association_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE group_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send MultiChannelAssociation Get
Parameter groupId: Group Id (from 1 to 255). 0 requests all groups
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: Subtree corresponding to the group updated
Syntax: Set(groupId, includeNode, includeInstance, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_multichannel_association_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE group_id, ZWNODE include_node, ZWBYTE include_instance, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send MultiChannelAssociation Set (Add)
Parameter groupId: Group Id (from 1 to 255)
Parameter includeNode: Node to be added to the group
Parameter includeInstance: Instance of the node to be added to the group
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: Subtree corresponding to the group updated
Syntax: Remove(groupId, excludeNode, excludeInstance, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_multichannel_association_remove(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE group_id, ZWNODE exclude_node, ZWBYTE exclude_instance, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send MultiChannelAssociation Remove
Parameter groupId: Group Id (from 1 to 255)
Parameter excludeNode: Node to be removed from the group
Parameter excludeInstance: Instance of the node to be removed from the group
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: Subtree corresponding to the group updated
Syntax: GroupingsGet(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_multichannel_association_groupings_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send MultiChannelAssociation GroupingsGet
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Version 4, Supported and Controlled
Allows to communicate with internal parts of device called channels or instances. Implemented transparently by the library.
Data holders:
Syntax: Get(ccId, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_multichannel_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE cc_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send MultiChannel Get (MultiInstance V1 command). Reports number of channels supporting a defined Command Class. Depricated by MutliChannel V2, needed for old devices only
Parameter ccId: Command Class Id in question
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: EndpointFind(generic, specific, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_multichannel_endpoint_find(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE generic, ZWBYTE specific, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send MultiChannel Endpoint Find. Note that MultiChannel EndpointFind Report is not supported as useless. But one can still trap the response packet in logs
Parameter generic: Generic type in search
Parameter specific: Specific type in search
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: EndpointGet(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_multichannel_endpoint_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send MultiChannel Endpoint Get. Get the number of available endpoints
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: CapabilitiesGet(endpoint, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_multichannel_capabilities_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE endpoint, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send MultiChannel Capabilities Get. Request information about the specified endpoint
Parameter endpoint: Endpoint in question
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: AggregatedMembersGet(endpoint, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_multichannel_aggregated_members_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE endpoint, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send MultiChannel Aggregated Members Get. Request information about endpoints in the specified aggregated endpoint (v4 and above)
Parameter endpoint: Aggregated endpoint in question
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Version 1, Supported and Controlled
Allows assigning a readable string for a name and a location to a physical device. The two strings are stored inside the device and can be obtained upon request. There are no restrictions to the name except the maximum length up to 16 characters.
Data holders:
Syntax: Get(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_node_naming_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send NodeNaming GetName and GetLocation
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: nodename, nameEncoding, location and locationEncoding updated
Syntax: GetName(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_node_naming_get_name(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send NodeNaming GetName
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: nodename and nameEncoding updated
Syntax: GetLocation(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_node_naming_get_location(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send NodeNaming GetLocation
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: location and locationEncoding updated
Syntax: SetName(name, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_node_naming_set_name(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWCSTR name, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send NodeNaming SetName
Parameter name: Value
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: nodename and nameEncoding updated
Syntax: SetLocation(location, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_node_naming_set_location(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWCSTR location, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send NodeNaming SetLocation
Parameter location: Value
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: location and locationEncoding updated
Version 3, Controlled
Allows to set a certain setpoint to a thermostat (set temperature to maintain). The command class can be applied to different kind of thermostats (heating, cooling, ...), hence it has various modes.
Data holders:
Syntax: Get(mode = -1, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_thermostat_setpoint_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, int mode, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send ThermostatSetPoint Get
Parameter mode: Thermostat Mode. -1 requests for all modes
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: modeId subtree updated
Syntax: Set(mode, value, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_thermostat_setpoint_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, int mode, float value, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send ThermostatSetPoint Set
Parameter mode: Thermostat Mode
Parameter value: temperature
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: modeId subtree updated
Version 3, Controlled
Allows to switch a heating/cooling actuator in different modes.
Data holders:
Syntax: Get(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_thermostat_mode_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send ThermostatMode Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: mode updated
Syntax: Set(mode, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_thermostat_mode_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE mode, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send ThermostatMode Set
Parameter mode: Thermostat Mode
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: mode updated
Syntax: SetManufacturerSpecific(manufacturerSpecifc, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_thermostat_mode_set_manufacturer_specific(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, size_t manufacturerSpecifcSize, const ZWBYTE * manufacturerSpecifc, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send ThermostatMode Set Manufacturer Specific
Parameter manufacturerSpecifc: Manufacturer specific data
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: mode updated
Version 4, Controlled
Allows to controls fan modes in thermostats.
Data holders:
Syntax: Get(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_thermostat_fan_mode_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send ThermostatFanMode Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: mode and on updated
Syntax: Set(on, mode, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_thermostat_fan_mode_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBOOL on, ZWBYTE mode, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send ThermostatFanMode Set
Parameter on: TRUE to turn fan on (and set mode), FALSE to comletely turn off (mode is ignored)
Parameter mode: Thermostat Fan Mode
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: mode and on updated
Version 2, Controlled
Allows to determine the operating state of the fan. V2 is not yet implemented.
Data holders:
Syntax: Get(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_thermostat_fan_state_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send ThermostatFanState Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: state and on updated
Version 2, Controlled
Allows to determine the operating state of the thermostat and state change history.
Data holders:
Syntax: Get(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_thermostat_operating_state_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send ThermostatOperatingState Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: state updated
Syntax: LoggingGet(state, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_thermostat_operating_state_logging_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE state, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send ThermostatOperatingState Logging Get
Parameter state: State number to get logging for. 0 to get log for all supported states
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: stateId subtree updated updated
Version 1, Controlled
Allows to override a certain setpoint in a thermostat.
Data holders:
Syntax: Get(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_thermostat_setback_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send ThermostatSetBack Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: overrideType, state, val
Syntax: Set(overrideType, state, value, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_thermostat_setback_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, int overrideType, int state, float value, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send ThermostatSetBack Set
Parameter overrideType: Override type (0 = No override, 1 = Temporary override, 2 = Permanent override)
Parameter state: State (1 = Temperature shift is used, 2 = Frost protection, 3 = Energy Saving, 4 = Unused)
Parameter value: temperature shift in Kelvin degree
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: overrideType, state, val updated
Version 1, Controlled
Deprecated Command Class. Now Alarm/Notification is used instead.
Data holders:
Syntax: SupportedGet(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_alarm_sensor_supported_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send AlarmSensor SupportedGet
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: List of supported types updated
Syntax: Get(type = -1, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_alarm_sensor_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, int type, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send AlarmSensor Get. Requests the status of the alarm sensor of a given type
Parameter type: Alarm type to get. -1 means get all types
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: Alarm type subtree updated
Version 2, Controlled
Allows to operate an electronic door lock. This Command Class is ALWAYS encapsulated in Security. Door lock modes are the following:.
- 0x00 Door Unsecured (Open).
- 0x01 Door Unsecured with timeout.
- 0x10 Door Unsecured for inside Door Handles.
- 0x11 Door Unsecured for inside Door Handles with timeout.
- 0x20 Door Unsecured for outside Door Handles.
- 0x21 Door Unsecured for outside Door Handles with timeout.
- 0xFE Door/Lock Mode Unknown (bolt not fully retracted/engaged).
- 0xFF Door Secured (closed).
Data holders:
Syntax: Get(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_door_lock_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send DoorLock Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: mode, insideHandlesMode, outsideHandlesMode, latchLocked, boltLocked, doorClosed, remainingLockTimeout, targetMode, duration updated
Syntax: ConfigurationGet(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_door_lock_configuration_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send DoorLock Configuration Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: operationType, outsideHandlesEnabled, insideHandlesEnabled, lockTimeout, autolockTime, holdReleaseTime, twistAssist, blockToBlock updated
Syntax: Set(mode, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_door_lock_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE mode, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send DoorLock Set
Parameter mode: Lock mode
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: mode, insideHandlesMode, outsideHandlesMode, latchLocked, boltLocked, doorClosed, remainingLockTimeout, targetMode, duration updated
Syntax: ConfigurationSet(operationType, outsideHandlesEnabled, insideHandlesEnabled, lockTimeout, autolockTime, holdReleaseTime, twistAssist, blockToBlock, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_door_lock_configuration_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE operationType, ZWBYTE outsideHandlesEnabled, ZWBYTE insideHandlesEnabled, int lockTimeout, int autolockTime, int holdReleaseTime, ZWBOOL twistAssist, ZWBOOL blockToBlock, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send DoorLock Configuration Set
Parameter operationType: Operation type
Parameter outsideHandlesEnabled: State of outside door handle
Parameter insideHandlesEnabled: State of inside door handle
Parameter lockTimeout: Lock after a specified time if in timed operation mode (in seconds)
Parameter autolockTime: Autolock time (in seconds)
Parameter holdReleaseTime: Hold and release time (in seconds)
Parameter twistAssist: Twist assist enabled
Parameter blockToBlock: Block to block enabled
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: operationType, outsideHandlesEnabled, insideHandlesEnabled, lockTimeout, autolockTime, holdReleaseTime, twistAssist, blockToBlock updated
Version 1, Controlled
Allows to receive reports about all successful and failed activities of the electronic door lock. Event types are the following:.
- 1 Lock Command: Keypad access code verified lock command.
- 2 Unlock Command: Keypad access code verified unlock command.
- 3 Lock Command: Keypad lock button pressed.
- 4 Unlock command: Keypad unlock button pressed.
- 5 Lock Command: Keypad access code out of schedule.
- 6 Unlock Command: Keypad access code out of schedule.
- 7 Keypad illegal access code entered.
- 8 Key or latch operation locked (manual).
- 9 Key or latch operation unlocked (manual).
- 10 Auto lock operation.
- 11 Auto unlock operation.
- 12 Lock Command: Z-Wave access code verified.
- 13 Unlock Command: Z-Wave access code verified.
- 14 Lock Command: Z-Wave (no code).
- 15 Unlock Command: Z-Wave (no code).
- 16 Lock Command: Z-Wave access code out of schedule.
- 17 Unlock Command Z-Wave access code out of schedule.
- 18 Z-Wave illegal access code entered.
- 19 Key or latch operation locked (manual).
- 20 Key or latch operation unlocked (manual).
- 21 Lock secured.
- 22 Lock unsecured.
- 23 User code added.
- 24 User code deleted.
- 25 All user codes deleted.
- 26 Master code changed.
- 27 User code changed.
- 28 Lock reset.
- 29 Configuration changed.
- 30 Low battery.
- 31 New Battery installed.
Data holders:
Syntax: Get(record = 0, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_door_lock_logging_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE record, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send DoorLockLogging Get
Parameter record: Record number to get, or 0 to get last records
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: record subtree updated
Version 1, Controlled
Allows to define individual user entry code in electrnic door lock.
Data holders:
Syntax: Get(user = -1, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_user_code_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, unsigned int user, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send UserCode Get
Parameter user: User index to get code for (1...maxUsers). -1 to get codes for all users
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: userId subtree updated
Syntax: GetAll(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_user_code_get_all(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send UserCode GetAll
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: all userId subtrees updated
Syntax: Set(user, code, status, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_user_code_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, unsigned int user, ZWCSTR code, ZWBYTE status, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send UserCode Set
Parameter user: User index to set code for (1...maxUsers). 0 means set for all users
Parameter code: Code to set (4...10 characters long)
Parameter status: Code status to set
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: userId subtree updated
Syntax: SetRaw(user, code, status, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_user_code_set_raw(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, unsigned int user, ZWBYTE length, const ZWBYTE * code, ZWBYTE status, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send UserCode SetRaw
Parameter user: User index to set code for (1...maxUsers). 0 means set for all users
Parameter code: Code to set (4...10 bytes long)
Parameter status: Code status to set
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: userId subtree updated
Syntax: MasterCodeGet(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_user_code_master_code_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send UserCode MasterCodeGet
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: masterCode updated
Syntax: MasterCodeSet(code, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_user_code_master_code_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWCSTR code, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send UserCode MasterCodeSet
Parameter code: Code to set (4...10 characters long or zero length to deactivate)
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: masterCode updated
Syntax: MasterCodeSetRaw(code, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_user_code_master_code_set_raw(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE length, const ZWBYTE * code, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send UserCode MasterCodeSet
Parameter code: Code to set (4...10 characters long or zero length to deactivate)
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: masterCode updated
Syntax: KeypadModeGet(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_user_code_keypad_mode_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send UserCode KeypadModeGet
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: keypadMode updated
Syntax: KeypadModeSet(mode, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_user_code_keypad_mode_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE mode, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send UserCode KeypadModeSet
Parameter mode: Keypad mode
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: keypadMode updated
Syntax: ChecksumGet(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_user_code_checksum_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send UserCode ChecksumGet
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: checksum updated
Version 2, Supported and Controlled
Allows to report to devices in Z-Wave network time and date as well as time zone offset and daylight savings parameters. The data formats are based on the International Standard ISO 8601.
Syntax: TimeGet(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_time_time_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Time TimeGet
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: DateGet(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_time_date_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Time DateGet
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: OffsetGet(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_time_offset_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Time TimeOffsetGet
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Version 1, Controlled
Used to set date and time. Time zone offset and daylight savings may be set in the Time Command Class. The data formats are based on the International Standard ISO 8601.
Syntax: Get(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_time_parameters_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send TimeParameters Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: Set(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_time_parameters_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send TimeParameters Set
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Version 1, Supported and Controlled
Sync clock on the device with controller system clock.
Syntax: Get(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_clock_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Clock Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: reported value ignored
Syntax: Set(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_clock_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Clock Set
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Version 1, Supported and Controlled
Allows to activate scenes on devices and trap scene activation events from remotes.
Data holders:
Syntax: Set(sceneId, dimmingDuration = 0xff, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_scene_activation_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE sceneId, ZWBYTE dimmingDuration, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SceneActivation Set
Parameter sceneId: Scene Id
Parameter dimmingDuration: Dimming duration
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Version 1, Controlled
Allows to set scene Id to be activated using SceneActivation Command Class on a remote.
Data holders:
Syntax: Get(group = 0, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_scene_controller_conf_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE group, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SceneControllerConf Get
Parameter group: Group Id. 0 requests all groups
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: group subtree updated
Syntax: Set(group, scene, duration = 0x0, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_scene_controller_conf_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE group, ZWBYTE scene, ZWBYTE duration, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SceneControllerConf Set
Parameter group: Group Id
Parameter scene: Scene Id
Parameter duration: Duration
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: group subtree updated
Version 1, Controlled
Allows to configure actuators to set specified level on a given scene activation by SceneActivation Command Class.
Data holders:
Syntax: Get(scene = 0, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_scene_actuator_conf_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE scene, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SceneActuatorConf Get
Parameter scene: Scene Id. 0 means get current scene
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: scene subtree updated, currentScene updated (if scene = 0)
Syntax: Set(scene, level, dimming = 0xff, override = TRUE, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_scene_actuator_conf_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE scene, ZWBYTE level, ZWBYTE dimming, ZWBOOL override, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SceneActuatorConf Set
Parameter scene: Scene Id
Parameter level: Level
Parameter dimming: Dimming
Parameter override: If false then the current settings in the device is associated with the Scene Id. If true then the Level value is used
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: scene subtree updated
Version 4, Supported and Controlled
Operates the indicator on the device if available. Can be used to identify a device or use the indicator for special purposes (show away/at home mode).
Data holders:
Syntax: Get(indicatorId, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_indicator_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE indicator_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Indicator Get
Parameter indicatorId: Indicator ID
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: stat updated
Syntax: Set(indicatorId, propertyId, state, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_indicator_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE indicator_id, ZWBYTE property_id, ZWBYTE state, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Indicator Set
Parameter indicatorId: Indicator ID
Parameter propertyId: Property ID (type) of the indicator
Parameter state: Value to set
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: stat updated
Syntax: SetMultiple(indicatorId, propertyIds, states, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_indicator_set_multiple(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE indicator_id, ZWBYTE length, const ZWBYTE * property_ids, ZWBYTE length, const ZWBYTE * states, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Indicator SetMultiple
Parameter indicatorId: Indicator ID
Parameter propertyIds: Property IDs (type) of the indicator
Parameter states: Values to set
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: stat updated
Syntax: Identify(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_indicator_identify(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Indicator Identify
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: stat updated
Version 2, Controlled
Allows to disable local and RF control of the device.
Data holders:
Syntax: Get(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_protection_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Protection Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: state, rfState updated
Syntax: Set(state, rfState = 0, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_protection_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE state, ZWBYTE rfState, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Protection Set
Parameter state: Local control protection state
Parameter rfState: RF control protection state
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: state and rfState updated
Syntax: ExclusiveGet(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_protection_exclusive_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Protection Exclusive Control Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: ExclusiveSet(controlNodeId, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_protection_exclusive_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE controlNodeId, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Protection Exclusive Control Set
Parameter controlNodeId: Node Id to have exclusive control over destination node
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: TimeoutGet(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_protection_timeout_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Protection Timeout Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: TimeoutSet(timeout, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_protection_timeout_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, int timeout, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Protection Timeout Set
Parameter timeout: Timeout in seconds. 0 is no timer set. -1 is infinite timeout. max value is 191 minute (11460 seconds). values above 1 minute are rounded to 1 minute boundary
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Version 3, Controlled
Allows to define individual time intervals for access to a door lock per user. Refers to users defined by User Code Command Class.
Data holders:
Syntax: Enable(user, enable, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_schedule_entry_lock_enable(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, int user, ZWBOOL enable, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send ScheduleEntryLock Enable(All)
Parameter user: User to enable/disable schedule for. 0 to enable/disable for all users
Parameter enable: TRUE to enable schedule, FALSE otherwise
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: WeekdayGet(user, slot, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_schedule_entry_lock_weekday_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, int user, ZWBYTE slot, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send ScheduleEntryLock Weekday Get
Parameter user: User to get schedule for. 0 to get for all users
Parameter slot: Slot to get schedule for. 0 to get for all slots
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: userId->Weekday->slotId subtree updated
Syntax: WeekdaySet(modifyErase, user, slot, dayOfWeek, startHour, startMinute, stopHour, stopMinute, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_schedule_entry_lock_weekday_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBOOL modifyErase, int user, ZWBYTE slot, ZWBYTE dayOfWeek, ZWBYTE startHour, ZWBYTE startMinute, ZWBYTE stopHour, ZWBYTE stopMinute, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send ScheduleEntryLock Weekday Set
Parameter modifyErase: TRUE if the the slot is modified, FALSE if erased
Parameter user: User to set schedule for
Parameter slot: Slot to set schedule for
Parameter dayOfWeek: Weekday number (0..6). 0 = Sunday. . 6 = Saturday
Parameter startHour: Hour when schedule starts (0..23)
Parameter startMinute: Minute when schedule starts (0..59)
Parameter stopHour: Hour when schedule stops (0..23)
Parameter stopMinute: Minute when schedule stops (0..59)
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: userId->Weekday->slotId subtree updated
Syntax: YearGet(user, slot, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_schedule_entry_lock_year_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, int user, ZWBYTE slot, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send ScheduleEntryLock Year Get
Parameter user: User to enable/disable schedule for. 0 to get for all users
Parameter slot: Slot to get schedule for. 0 to get for all slots
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: userId->Year->slotId subtree updated
Syntax: YearSet(modifyErase, user, slot, startYear, startMonth, startDay, startHour, startMinute, stopYear, stopMonth, stopDay, stopHour, stopMinute, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_schedule_entry_lock_year_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBOOL modifyErase, int user, ZWBYTE slot, ZWBYTE startYear, ZWBYTE startMonth, ZWBYTE startDay, ZWBYTE startHour, ZWBYTE startMinute, ZWBYTE stopYear, ZWBYTE stopMonth, ZWBYTE stopDay, ZWBYTE stopHour, ZWBYTE stopMinute, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send ScheduleEntryLock Year Set
Parameter modifyErase: TRUE if the the slot is modified, FALSE if erased
Parameter user: User to set schedule for
Parameter slot: Slot to set schedule for
Parameter startYear: Year in current century when schedule starts (0..99)
Parameter startMonth: Month when schedule starts (1..12)
Parameter startDay: Day when schedule starts (1..31)
Parameter startHour: Hour when schedule starts (0..23)
Parameter startMinute: Minute when schedule starts (0..59)
Parameter stopYear: Year in current century when schedule stops (0..99)
Parameter stopMonth: Month when schedule stops (1..12)
Parameter stopDay: Day when schedule stops (1..31)
Parameter stopHour: Hour when schedule stops (0..23)
Parameter stopMinute: Minute when schedule stops (0..59)
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: userId->Year->slotId subtree updated
Version 1, Supported and Controlled
Obsolete but still partly implemented for legacy support.
Data holders:
Syntax: OverrideGet(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_climate_control_schedule_override_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send ClimateControlSchedule Override Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: OverrideSet(overrideType, overrideState, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_climate_control_schedule_override_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE overrideType, ZWBYTE overrideState, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send ClimateControlSchedule Override Set
Parameter overrideType: Override type to set. (0 – no override, 1 – temporary override, 2 – permanent override)
Parameter overrideState: Override state. -128 (0x80) ... -1 (0xFF): setpoint -12.8 ... -0.1 degrees. 0 (0x00): setpoint. 1 (0x01) ... 120 (0x78): setpoint +0.1 ... +12 degrees. 121 (0x79): frost protection. 122 (0x7A): energy saving. 123 (0x7B) ... 126 (0x7D): reserved. 127 (0x7F): unused
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Version 2, Controlled
Allows to read historical and accumulated values in physical units from a water meter or other metering device (gas, electric etc.) and thereby enabling automatic meter reading capabilities.
Data holders:
Syntax: StatusDateGet(maxResults = 0, startDate, endDate, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_meter_table_monitor_status_date_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE maxResults, time_t startDate, time_t endDate, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send StatusTableMonitor Status Get for a range of dates
Parameter maxResults: Maximum number of entries to get from log. 0 means all matching entries
Parameter startDate: Start date and time (local UNIX time)
Parameter endDate: End date and time (local UNIX time)
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: StatusDepthGet(maxResults = 0, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_meter_table_monitor_status_depth_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE maxResults, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send StatusTableMonitor Status Get for specified depth
Parameter maxResults: Number of entries to get from log. 0 means current status only. 0xFF means all entries
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: CurrentDataGet(setId = 0, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_meter_table_monitor_current_data_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE setId, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send StatusTableMonitor Current Data Get
Parameter setId: Index of dataset to get data for. 0 to get data for all supported datasets
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: HistoricalDataGet(setId = 0, maxResults = 0, startDate, endDate, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_meter_table_monitor_historical_data_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE setId, ZWBYTE maxResults, time_t startDate, time_t endDate, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send StatusTableMonitor Historical Data Get
Parameter setId: Index of dataset to get data for. 0 to get data for all supported datasets
Parameter maxResults: Maximum number of entries to get from log. 0 means all matching entries
Parameter startDate: Start date and time (local UNIX time)
Parameter endDate: End date and time (local UNIX time)
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Version 5, Controlled
Also known as Notification Command Class. Used to report alarm events from binary sensors. Starting from version 3 all types are strictly defines:.
- 0x01 Smoke.
- 0x02 CO.
- 0x03 CO2.
- 0x04 Heat.
- 0x05 Water.
- 0x06 Access Control.
- 0x07 Burglar.
- 0x08 Power Management.
- 0x09 System.
- 0x0a Emergency.
- 0x0b Clock.
Data holders:
Syntax: Get(type = 0, event = 0, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_alarm_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE type, ZWBYTE event, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Alarm Get. Requests the status of a specific event of a specific alarm type
Parameter type: Type of alarm to get level for. 0 to get level for all supported alarms (v2 and higher). 0xFF to get level for first supported alarm (v2 and higher)
Parameter event: Notification event to get level for. This argument is ignored prior to Notification v3. Must be 0 if type is 0xFF
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: Alarm type subtree updated
Syntax: Set(type, level, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_alarm_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE type, ZWBYTE level, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Alarm Set (v2 and higher). Enable/disable alarms of a specific type
Parameter type: Type of alarm to set level for
Parameter level: Level to set (0x0 = off, 0xFF = on, other values are reserved)
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: Alarm type subtree updated
Version 1, Supported and Controlled
Used to set device power level and to test the link to a other devices in the network.
Data holders:
Syntax: Get(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_power_level_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send PowerLevel Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: level and timeout updated
Syntax: Set(level, timeout, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_power_level_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE level, ZWBYTE timeout, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send PowerLevel Set
Parameter level: Power level to set (from 0 to 9)
Parameter timeout: Timeout in seconds
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: level and timeout updated
Syntax: TestNodeGet(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_power_level_test_node_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send PowerLevel Test Node Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: subtree with report for the given node updated
Syntax: TestNodeSet(testNodeId, level, frameCount, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_power_level_test_node_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE testNodeId, ZWBYTE level, int frameCount, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send PowerLevel Test Node Set. Starts sending specified number of NOP packets to a given device at a given power level. Once finished, unsolicited report MIGHT be sent by the device (at any time you can use TestNodeGet)
Parameter testNodeId: Node to set test packets to
Parameter level: Power level to use (from 0 to 9)
Parameter frameCount: Number of test frames to send (from 1 to 65535)
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: subtree with report for the given node updated
Version 2, Supported and Controlled
Describes device Z-Wave Plus role and type.
Data holders:
Syntax: Get(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_zwave_plus_info_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send ZWave+ Info Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Version 7, Supported and Controlled
Allows to update firmware of the device (OTA, Over-The-Air upgrade).
Data holders:
Syntax: Get(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_firmware_update_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Firmware Metadata Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: upgradeable, firmwareCount, updateStatus, manufacturerId, manufacturerId, firmwareId, firmware[n], checksum updated
Syntax: Perform(manufacturerId, firmwareId, firmwareTarget, data, delayActivation = FALSE, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_firmware_update_perform(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, int manufacturerId, int firmwareId, ZWBYTE firmwareTarget, size_t length, const ZWBYTE * data, ZWBOOL delayActivation, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Firmware Update Request Get. On process start Z-Way sets fragmentCount:. devices.N.instances.0.commandClasses.122.data.fragmentCount = 3073 (0x00000c01). Then it asks the device to start the process. The device can refuse it (i.e. if local confirmation timed out). If confirmed, the device will send us a report with adjusted fragment size (if it wants Z-Way to send by smaller packets) and report "Ready" (updateStatus = 255, see below). devices.N.instances.0.commandClasses.122.data.updateStatus = 255 (0x000000ff). devices.N.instances.0.commandClasses.122.data.fragmentCount = 3277 (0x00000ccd). At this point fragmentTransmitted == 0. devices.N.instances.0.commandClasses.122.data.fragmentTransmitted =0. Then device starts asking Z-Way for different packets. Z-Way will update fragmentTransmitted to allow track the process. Once done (fragmentCount == fragmentTransmitted), the device will send again a report if the flashing was successful. updateStatus contains the status: checksum error = 0, assemble error = 1, success, restart manually = 254, success, automatic restart = 255. waitTime refers to the time device will take to reboot. devices.N.instances.0.commandClasses.122.data.updateStatus = 255 (0x000000ff). devices.N.instances.0.commandClasses.122.data.waitTime = 5 (0x00000005)
Parameter manufacturerId: Manufacturer Id (2 bytes)
Parameter firmwareId: Firmware Id (2 bytes)
Parameter firmwareTarget: Firmware target number (0 for main chip, 1..255 for additional chips). Used only for CC v3 and above
Parameter data: Firmware image data in binary format (use hex2bin to convert from Intel Hex)
Parameter delayActivation: Set to TRUE to delay the activation of the uploaded firmware. Use zway_cc_firmware_update_activation_set to initiate the activation
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: updateStatus, updateStatusStr, waitTime, fragmentData, fragmentCount, fragmentTransmitted updated
Syntax: Activation(manufacturerId, firmwareId, firmwareTarget, data, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_firmware_update_activation(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, int manufacturerId, int firmwareId, ZWBYTE firmwareTarget, size_t length, const ZWBYTE * data, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Firmware Update Activation Set. Apply previously loaded firmware
Parameter manufacturerId: Manufacturer Id (2 bytes)
Parameter firmwareId: Firmware Id (2 bytes)
Parameter firmwareTarget: Firmware target number (0 for main chip, 1..255 for additional chips). Used only for CC v3 and above
Parameter data: Firmware image data in binary format (use hex2bin to convert from Intel Hex). This data is used to calculate (again) the CRC of the image and send it to the device to specify which firmware update to activate
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: activationStatus, activationStatusStr updated
Syntax: Prepare(manufacturerId, firmwareId, firmwareTarget, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_firmware_update_prepare(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, int manufacturerId, int firmwareId, ZWBYTE firmwareTarget, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Firmware Update Prepare Set. Fetch the firmware from the device
Parameter manufacturerId: Manufacturer Id (2 bytes)
Parameter firmwareId: Firmware Id (2 bytes)
Parameter firmwareTarget: Firmware target number (0 for main chip, 1..255 for additional chips). Used only for CC v3 and above
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: prepareStatus, prepareStatusStr updated
Syntax: Abandon(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_firmware_update_abandon(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Abandon an ongoing Firmware Update process. Stop responding to an ongoing update process and erase the firmware data prepared for the update. This call is executed synchroneously and does not fire success/failure callbacks
Parameter successCallback: Not used
Parameter failureCallback: Not used
Report: updateStatus, updateStatusStr, fragmentData, fragmentCount, fragmentTransmitted updated
Version 1, Supported and Controlled
Describes association groups defined by Association Command Class and command sent to group members.
Data holders:
Syntax: GetInfo(groupId, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_association_group_information_get_info(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE groupId, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send AGI Get Info
Parameter groupId: Group Id to get info for (0 for all groups)
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: GetName(groupId, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_association_group_information_get_name(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE groupId, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send AGI Get Name
Parameter groupId: Group Id to get info for (0 for all groups)
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: GetCommands(groupId, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_association_group_information_get_commands(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE groupId, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send AGI Get Commands
Parameter groupId: Group Id to get info for (0 for all groups)
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Version 3, Controlled
Allows to control color for multicolor lights including LED bulbs and LED strips. Device reports it's capabilities:.
- 0 Warm White (0x00...0xFF: 0...100%).
- 1 Cold White (0x00:...0xFF: 0...100%).
- 2 Red (0x00...0xFF: 0...100%).
- 3 Green (0x00...0xFF: 0...100%).
- 4 Blue (0x00...0xFF: 0...100%).
- 5 Amber (for 6ch Color mixing) (0x00...0xFF: 0...100%).
- 6 Cyan (for 6ch Color mixing) (0x00...0xFF: 0...100%).
- 7 Purple (for 6ch Color mixing) (0x00...0xFF: 0...100%).
- 8 Indexed Color (0x00...0x0FF: Color Index 0...255).
Data holders:
Syntax: Get(capabilityId, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_switch_color_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE capabilityId, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SwitchColor Get
Parameter capabilityId: Capability Id
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: Set(capabilityId, state, duration = 0xff, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_switch_color_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE capabilityId, ZWBYTE state, ZWBYTE duration, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SwitchColor Set
Parameter capabilityId: Capability Id
Parameter state: State to be set for the capability
Parameter duration: Duration of change:. 0 instantly. 0x01...0x7f in seconds. 0x80...0xfe in minutes mapped to 1...127 (value 0x80=128 is 1 minute). 0xff use device factory default
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: SetMultiple(capabilityIds, states, duration = 0xff, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_switch_color_set_multiple(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE length, const ZWBYTE * capabilityIds, ZWBYTE length, const ZWBYTE * states, ZWBYTE duration, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SwitchColor SetMultiple
Parameter capabilityIds: Array of capabilities to set
Parameter states: Array of state values to be set for the capabilities
Parameter duration: Duration of change:. 0 instantly. 0x01...0x7f in seconds. 0x80...0xfe in minutes mapped to 1...127 (value 0x80=128 is 1 minute). 0xff use device factory default
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: StartStateChange(capabilityId, dir, duration = 0xff, ignoreStartLevel = TRUE, startLevel = 50, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_switch_color_start_state_change(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE capabilityId, ZWBYTE dir, ZWBYTE duration, ZWBOOL ignoreStartLevel, ZWBYTE startLevel, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SwitchColor StartStateChange
Parameter capabilityId: Capability Id to start changing state for
Parameter dir: Direction of change: 0 to incrase, 1 to decrase
Parameter duration: Duration of change:. 0 instantly. 0x01...0x7f in seconds. 0x80...0xfe in minutes mapped to 1...127 (value 0x80=128 is 1 minute). 0xff use device factory default
Parameter ignoreStartLevel: If set to True, device will ignore start level value and will use it's curent value
Parameter startLevel: Start level to change from
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: StopStateChange(capabilityId, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_switch_color_stop_state_change(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE capabilityId, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SwitchColor StopStateChange
Parameter capabilityId: Capability Id to stop changing state for
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Version 2, Controlled
Allows to play tones and configure volume.
Data holders:
Syntax: TonePlayGet(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_sound_switch_tone_play_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SoundSwitch TonePlayGet
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: TonePlaySet(toneId, volume = 0x00, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_sound_switch_tone_play_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE toneId, ZWBYTE volume, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SoundSwitch TonePlaySet
Parameter toneId: Tone Id. 1...254 tone Id. 255 play default tone
Parameter volume: Tone volume:. 0 use default. 1...100 specific volume. 255 last used volume
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: ConfigurationGet(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_sound_switch_configuration_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SoundSwitch ConfigurationGet
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: ConfigurationSet(toneId, volume = 0x00, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_sound_switch_configuration_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE toneId, ZWBYTE volume, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SoundSwitch ConfigurationSet
Parameter toneId: Tone Id. 1...254 tone Id. 255 play default tone
Parameter volume: Tone volume:. 0 use default. 1...100 specific volume. 255 last used volume
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Version 1, Controlled
Allows to control barriers and garage doors as well as their signal lamps.
Data holders:
Syntax: Get(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_barrier_operator_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send BarrierOperator Get
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: Set(state, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_barrier_operator_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE state, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send BarrierOperator Set
Parameter state: State to set
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: SignalGet(signalType, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_barrier_operator_signal_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE signalType, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send BarrierOperator Signal Get
Parameter signalType: Signal subsystem type to get state for
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: SignalSet(signalType, state, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_barrier_operator_signal_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE signalType, ZWBYTE state, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send BarrierOperator Signal Set
Parameter signalType: Signal subsystem type to set state for
Parameter state: State to set
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Version 4, Supported and Controlled
Allows to control A/V devices.
Data holders:
Syntax: Set(keyAttribute, avCommand, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_simple_av_control_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE keyAttribute, unsigned int avCommand, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SimpleAVControl Set
Parameter keyAttribute: 0 for key Down, 1 for key Up, 2 for key Alive (repeated every 100...200 ms)
Parameter avCommand: Command to be sent. One of 465 predefined in Z-Wave protocol
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Version 1, Supported and Controlled
This Command Class is transparently implemented in the library. There are no functions to execute.
Data holders:
Syntax: Inject(data, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_security_inject(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE length, const ZWBYTE * data, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Security Inject
Parameter data: Data to set
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Version 1, Supported and Controlled
This Command Class is transparently implemented in the library. There are no functions to execute.
Data holders:
Syntax: Inject(data, keyClass, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_security_s2_inject(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE length, const ZWBYTE * data, ZWBYTE keyClass, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send Security S2 Inject
Parameter data: Data to set
Parameter keyClass: Security S2 key class
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Version 1, Controlled
Receive codes from entry control devices like security panels.
Data holders:
Syntax: ConfigurationGet(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_entry_control_configuration_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Request keyCacheSize and keyCacheTimeout
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: ConfigurationSet(keyCacheSize, keyCacheTimeout, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_entry_control_configuration_set(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZWBYTE keyCacheSize, ZWBYTE keyCacheTimeout, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Set keyCacheSize and keyCacheTimeout
Parameter keyCacheSize: Key cache size before sending to the controller
Parameter keyCacheTimeout: Key cache timeout before sending to the controller, in seconds
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Version 1, Controlled
Manage user credentials in locks, entry control devices and security panels.
Data holders:
Syntax: UserGet(user, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_user_credential_user_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, unsigned int user, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Get user info
Parameter user: User Id
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: UserGetWithCredentials(user, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_user_credential_user_get_with_credentials(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, unsigned int user, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Get user info and credential slots for this user
Parameter user: User Id
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: AllUsersGet(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_user_credential_all_users_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Get user info and credential slots for all users
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: UserAdd(user, userType, userActiveState, credentialRule, expiringTimeoutMinutes, userNameEncoding, userName, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_user_credential_user_add(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, unsigned int user, ZWBYTE userType, ZWBOOL userActiveState, ZWBYTE credentialRule, unsigned int expiringTimeoutMinutes, ZWBYTE userNameEncoding, ZWCSTR userName, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Add user
Parameter user: User Id
Parameter userType: User type
Parameter userActiveState: User activity state
Parameter credentialRule: Credential rule to apply to the user
Parameter expiringTimeoutMinutes: User activity expiration time in minutes
Parameter userNameEncoding: User name encoding
Parameter userName: User name
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: UserModify(user, userType, userActiveState, credentialRule, expiringTimeoutMinutes, userNameEncoding, userName, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_user_credential_user_modify(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, unsigned int user, ZWBYTE userType, ZWBOOL userActiveState, ZWBYTE credentialRule, unsigned int expiringTimeoutMinutes, ZWBYTE userNameEncoding, ZWCSTR userName, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Modify user
Parameter user: User Id
Parameter userType: User type
Parameter userActiveState: User activity state
Parameter credentialRule: Credential rule to apply to the user
Parameter expiringTimeoutMinutes: User activity expiration time in minutes
Parameter userNameEncoding: User name encoding
Parameter userName: User name
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: UserDelete(user, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_user_credential_user_delete(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, unsigned int user, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Delete user
Parameter user: User Id
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: CredentialGet(user, credentialType, credentialId, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_user_credential_credential_get(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, unsigned int user, ZWBYTE credentialType, unsigned int credentialId, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Get credential info
Parameter user: User Id
Parameter credentialType: Credential type
Parameter credentialId: Credential Id
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: CredentialAdd(userId, credentialType, credentialId, credentialData, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_user_credential_credential_add(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, unsigned int userId, ZWBYTE credentialType, unsigned int credentialId, ZWBYTE credentialLength, const ZWBYTE * credentialData, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Add credential
Parameter userId: User Id
Parameter credentialType: Credential type
Parameter credentialId: Credential Id
Parameter credentialData: Credential data
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: CredentialModify(userId, credentialType, credentialId, credentialData, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_user_credential_credential_modify(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, unsigned int userId, ZWBYTE credentialType, unsigned int credentialId, ZWBYTE credentialLength, const ZWBYTE * credentialData, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Modify credential
Parameter userId: User Id
Parameter credentialType: Credential type
Parameter credentialId: Credential Id
Parameter credentialData: Credential data
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: CredentialDelete(userId, credentialType, credentialId, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_user_credential_credential_delete(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, unsigned int userId, ZWBYTE credentialType, unsigned int credentialId, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Delete credential
Parameter userId: User Id
Parameter credentialType: Credential type
Parameter credentialId: Credential Id
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: CredentialLearnStartAdd(userId, credentialType, credentialId, learnTimeout, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_user_credential_credential_learn_start_add(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, unsigned int userId, ZWBYTE credentialType, unsigned int credentialId, ZWBYTE learnTimeout, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Start learn process adding credential
Parameter userId: User Id
Parameter credentialType: Credential type
Parameter credentialId: Credential Id
Parameter learnTimeout: Learn process timeout
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: CredentialLearnStartModify(userId, credentialType, credentialId, learnTimeout, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_user_credential_credential_learn_start_modify(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, unsigned int userId, ZWBYTE credentialType, unsigned int credentialId, ZWBYTE learnTimeout, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Start learn process modifying credential
Parameter userId: User Id
Parameter credentialType: Credential type
Parameter credentialId: Credential Id
Parameter learnTimeout: Learn process timeout
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: CredentialLearnCancel(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_cc_user_credential_credential_learn_cancel(ZWay zway, ZWNODE node_id, ZWBYTE instance_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Cancel an ongoing learn process
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Version 1, Controlled
This Command Class is transparently implemented in the library to trap unsolicited reports via Hail in legacy devices.
Data holders:
Version 1, Supported and Controlled
This Command Class is transparently implemented in the library to use better 16 bits packet checksum. There are no functions to execute.
Data holders:
Version 1, Supported and Controlled
This Command Class is transparently implemented in the library to save battery life time. There are no functions to execute.
Data holders:
Version 2, Supported and Controlled
This Command Class is transparently implemented in the library to guarantee delivery report on every command (even on Set). There are no functions to execute.
Data holders:
Version 1, Supported and Controlled
This Command Class is transparently implemented in the library to retry on device Busy report. There are no functions to execute.
Version 2, Supported and Controlled
Allows to get version of each Command Class supported by the device as well as firmware version.
Data holders:
Version 1, Supported and Controlled
Reports to the controller that device was resetted locally (using local button operation).
Data holders:
Version 3, Supported and Controlled
Allows to receive central controller oriented scene actions. Scenes are triggered by pushing a button on a remote control or wall controller. Note that Z-Way supports only V1, but in most cases you don't need it to be enabled in the NIF. Controlled version is V3.
Data holders:
Syntax: GetSerialAPICapabilities(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_get_serial_api_capabilities(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Request Serial API capabilities
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: capabilities, manufacturerId, manufacturerProductId, manufacturerProductType, APIVersion, vendor
Syntax: SerialAPISetTimeouts(ackTimeout, byteTimeout, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_serial_api_set_timeouts(ZWay zway, ZWBYTE ackTimeout, ZWBYTE byteTimeout, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Set Serial API timeouts
Parameter ackTimeout: Time for the stick to wait for ACK (in 10ms units)
Parameter byteTimeout: Time for the stick to assemble a full packet (in 10ms units)
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: curSerialAPIAckTimeout10ms, curSerialAPIByteTimeout10ms, oldSerialAPIAckTimeout10ms, oldSerialAPIByteTimeout10ms
Syntax: SerialAPIGetInitData(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_serial_api_get_init_data(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Request initial information about devices in network
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: ZWVersion, ZWaveChip, list of Z-Wave devices is generated
Syntax: SerialAPIApplicationNodeInfo(listening, optional, flirs1000, flirs250, genericClass, specificClass, nif, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_serial_api_application_node_info(ZWay zway, ZWBOOL listening, ZWBOOL optional, ZWBOOL flirs1000, ZWBOOL flirs250, ZWBYTE generic_class, ZWBYTE specific_class, ZWBYTE nif_size, const ZWBYTE * nif, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Set controller node information
Parameter listening: Listening flag
Parameter optional: Optional flag (set if device supports more CCs than described as mandatory for it's Device Type)
Parameter flirs1000: FLiRS 1000 flag (hardware have to be based on FLiRS library to support it)
Parameter flirs250: FLiRS 250 flag (hardware have to be based on FLiRS library to support it)
Parameter genericClass: Generic Device Type
Parameter specificClass: Specific Device Type
Parameter nif: New NIF
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: WatchDogStart(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_watchdog_start(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Start WatchDog
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: WatchDogStop(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_watchdog_stop(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Stop WatchDog
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: GetHomeId(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_get_home_id(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Request Home Id and controller Node Id
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: homeId, nodeId
Syntax: GetControllerCapabilities(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_get_controller_capabilities(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Request controller capabilities (primary role, SUC/SIS availability)
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: isInOthersNetwork, isPrimary, isRealPrimary, isSUC, isSUC, SISPresent
Syntax: GetVersion(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_get_version(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Request controller hardware version
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: ZWLib, ZWProtocolMajor, ZWProtocolMinor, libType, SDK, devices[ctrlId].data.ZWLib, devices[ctrlId].data.ZWProtocolMajor, devices[ctrlId].data.ZWProtocolMinor, devices[ctrlId].data.SDK
Syntax: GetSUCNodeId(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_get_suc_node_id(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Request SUC Node Id
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: SUCNodeId
Syntax: EnableSUC(enable, sis, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_enable_suc(ZWay zway, ZWBOOL enable, ZWBOOL sis, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Enable or disable SUC/SIS functionality of the controller
Parameter enable: True to enable functionality, False to disable
Parameter sis: True to enable SIS functionality, False to enable SUC only
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: SetSUCNodeId(nodeId, enable, sis, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_set_suc_node_id(ZWay zway, ZWNODE node_id, ZWBOOL enable, ZWBOOL sis, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Assign new SUC/SIS or disable existing
Parameter nodeId: Node Id to be assigned/disabled as SUC/SIS
Parameter enable: True to enable, False to disable
Parameter sis: True to assign SIS role, False to enable SUC role only
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: MemoryGetByte(offset, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_memory_get_byte(ZWay zway, unsigned short offset, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Read single byte from EEPROM
Parameter offset: Offset in application memory in EEPROM
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: memoryGetData, memoryGetAddress
Syntax: MemoryGetBuffer(offset, length, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_memory_get_buffer(ZWay zway, unsigned short offset, ZWBYTE length, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Read multiple bytes from EEPROM
Parameter offset: Offset in application memory in EEPROM
Parameter length: Number of byte to be read
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: memoryGetData, memoryGetAddress
Syntax: MemoryPutByte(offset, data, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_memory_put_byte(ZWay zway, unsigned short offset, ZWBYTE data, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Write single byte to EEPROM
Parameter offset: Offset in application memory in EEPROM
Parameter data: Byte to be written
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: MemoryPutBuffer(offset, data, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_memory_put_buffer(ZWay zway, unsigned short offset, ZWBYTE length, const ZWBYTE * data, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Write multiple bytes to EEPROM
Parameter offset: Offset in application memory in EEPROM
Parameter data: Bytes to be written
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: NVMGetId(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_nvm_get_id(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Read type of extended EEPROM
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: memoryCapacity, memoryManufacturerId, memoryType
Syntax: NVMExtReadLongByte(offset, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_nvm_ext_read_long_byte(ZWay zway, unsigned int offset, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Read single byte from extended EEPROM
Parameter offset: Offset in application memory in EEPROM
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: memoryGetData, memoryGetAddress
Syntax: NVMExtReadLongBuffer(offset, length, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_nvm_ext_read_long_buffer(ZWay zway, unsigned int offset, unsigned short length, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Read multiple bytes from exended EEPROM
Parameter offset: Offset in application memory in EEPROM
Parameter length: Number of byte to be read
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: memoryGetData, memoryGetAddress
Syntax: NVMExtWriteLongByte(offset, data, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_nvm_ext_write_long_byte(ZWay zway, unsigned int offset, ZWBYTE data, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Write single byte to extended EEPROM
Parameter offset: Offset in application memory in EEPROM
Parameter data: Byte to be written
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: NVMExtWriteLongBuffer(offset, data, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_nvm_ext_write_long_buffer(ZWay zway, unsigned int offset, unsigned short length, const ZWBYTE * data, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Write multiple bytes to extended EEPROM
Parameter offset: Offset in application memory in EEPROM
Parameter data: Bytes to be written
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: IsFailedNode(nodeId, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_is_failed_node(ZWay zway, ZWNODE node_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Checks if node is failed
Parameter nodeId: Node Id to be checked
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: device[node_id].data.isFailed
Syntax: SendDataAbort(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_send_data_abort(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Abort send data. Note that this function works unpredictably in multi callback environment !
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: SerialAPISoftReset(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_serial_api_soft_reset(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Soft reset. Restarts Z-Wave chip
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: SendData(nodeId, data, description = NULL, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_send_data(ZWay zway, ZWNODE node_id, ZWBYTE length, const ZWBYTE * data, ZWCSTR description, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send data. Packets are sent in AUTO_ROUTE mode with EXPLRER_FRAME enabled for listening devices (ignored if not supported by the hardware [based on 5.0x branch])
Parameter nodeId: Destination Node Id (NODE_BROADCAST to send non-routed broadcast packet)
Parameter data: Paket payload
Parameter description: Packet description for queue inspector and logging
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: devices[node_id].data.lastSend
Syntax: SendDataSecure(nodeId, data, description = NULL, keyClass = 0, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_send_data_secure(ZWay zway, ZWNODE node_id, ZWBYTE length, const ZWBYTE * data, ZWCSTR description, ZWBYTE key_class, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send data using security. Packets are sent in AUTO_ROUTE mode with EXPLRER_FRAME enabled for listening devices (ignored if not supported by the hardware [based on 5.0x branch]). Explicitelly use security
Parameter nodeId: Destination Node Id (NODE_BROADCAST to send non-routed broadcast packet)
Parameter data: Paket payload
Parameter description: Packet description for queue inspector and logging
Parameter keyClass: Security class to use: 0 - S0, 1 - S2 Unauthenticated, 2 - S2 Authenticated, 4 - S2 Access
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: devices[node_id].data.lastSend
Syntax: GetNodeProtocolInfo(nodeId, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_get_node_protocol_info(ZWay zway, ZWNODE node_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Get node protocol info
Parameter nodeId: Node Id of the device in question
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: devices[node_id].data.isListening, devices[node_id].data.isRouting, devices[node_id].data.optional, devices[node_id].data.sensor1000, devices[node_id].data.sensor250, devices[node_id].data.infoProtocolSpecific
Syntax: GetRoutingTableLine(nodeId, removeBad = FALSE, removeRepeaters = FALSE, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_get_routing_table_line(ZWay zway, ZWNODE node_id, ZWBOOL remove_bad, ZWBOOL remove_repeaters, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Get routing table line
Parameter nodeId: Node Id of the device in question
Parameter removeBad: Exclude failed nodes from the listing
Parameter removeRepeaters: Exclude repeater nodes from the listing
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: devices[node_id].data.neighbours
Syntax: AssignReturnRoute(nodeId, destId, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_assign_return_route(ZWay zway, ZWNODE node_id, ZWNODE dest_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Assign return route to specified node
Parameter nodeId: Node Id of the device that have to store new route
Parameter destId: Destination Node Id of the route
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: AssignSUCReturnRoute(nodeId, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_assign_suc_return_route(ZWay zway, ZWNODE node_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Assign return route to SUC
Parameter nodeId: Node Id of the device that have to store route to SUC
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: DeleteReturnRoute(nodeId, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_delete_return_route(ZWay zway, ZWNODE node_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Delete return route
Parameter nodeId: Node Id of the device that have to delete all assigned return routes
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: DeleteSUCReturnRoute(nodeId, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_delete_suc_return_route(ZWay zway, ZWNODE node_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Delete return route to SUC
Parameter nodeId: Node Id of the device that have to delete route to SUC
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: SetDefault(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_set_default(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Reset the controller. Note: this function will delete ALL data from the Z-Wave chip and restore it to factory default !. Sticks based on 4.5x and 6.x SDKs will also generate a new Home Id
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: lastExcludedDevice, lastIncludedDevice
Syntax: SendSUCNodeId(nodeId, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_send_suc_node_id(ZWay zway, ZWNODE node_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send SUC Node Id. Informs portable and static controllers about new or deleted SUC/SIS
Parameter nodeId: Node Id of the device that have to be informed about new or deleted SIC/SIS
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: SendNodeInformation(nodeId, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_send_node_information(ZWay zway, ZWNODE node_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send NIF of the stick
Parameter nodeId: Destination Node Id (NODE_BROADCAST to send non-routed broadcast packet)
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: RequestNodeInformation(nodeId, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_request_node_information(ZWay zway, ZWNODE node_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Request NIF of a device
Parameter nodeId: Node Id to be requested for a NIF
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: devices[node_id].data.nodeInfoFrame
Syntax: RemoveFailedNode(nodeId, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_remove_failed_node(ZWay zway, ZWNODE node_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Remove failed node from network. Before removing SDK will check that the device is really unreachable
Parameter nodeId: Node Id to be removed from network
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: lastExcludedDevice
Syntax: ReplaceFailedNode(nodeId, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_replace_failed_node(ZWay zway, ZWNODE node_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Replace failed node with a new one. Be ware that a failed node can be replaced by a node of another type. This can lead to probles!. Always request device NIF and force re-interview after successful replace process
Parameter nodeId: Node Id to be replaced by new one
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: lastIncludedDevice, controllerState
Syntax: RequestNetworkUpdate(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_request_network_update(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Request network topology update from SUC/SIS. Note that this process may also fail due more than 64 changes from last sync. In this case a re-inclusion of the controller (self) is required
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: RequestNodeNeighbourUpdate(nodeId, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_request_node_neighbour_update(ZWay zway, ZWNODE node_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Request neighbours update for specific node
Parameter nodeId: Node Id to be requested for it's neighbours
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: devices[node_id].data.neighbours
Syntax: SetLearnMode(startStop, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_set_learn_mode(ZWay zway, ZWBOOL startStop, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Set/stop Learn mode. Tries first classical inclusion then falls back to NWI automatically. Use zway_controller_set_learn_mode instead to get correctly set up the environment after inclusion
Parameter startStop: Start Learn mode if True, stop if False
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: controllerState, lastExcludedDevice, lastIncludedDevice
Syntax: AddNodeToNetwork(startStop, highPower = TRUE, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_add_node_to_network(ZWay zway, ZWBOOL startStop, ZWBOOL highPower, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Start/stop Inclusion of a new node. Available on primary and inclusion controllers
Parameter startStop: Start inclusion mode if True, stop if False
Parameter highPower: Use full power during this operation if True. On False use low power mode
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: controllerState, lastExcludedDevice, lastIncludedDevice
Syntax: SmartStartEnable(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_smart_start_enable(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Enable Smart Start mode
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: RemoveNodeFromNetwork(startStop, highPower = FALSE, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_remove_node_from_network(ZWay zway, ZWBOOL startStop, ZWBOOL highPower, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Start/stop exclusion of a node. Note that this function can be used to exclude a device from previous network before including in ours. Available on primary and inclusion controllers
Parameter startStop: Start exclusion mode if True, stop if False
Parameter highPower: Use full power during this operation if True. On False use low power mode
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: controllerState, lastExcludedDevice, lastIncludedDevice
Syntax: RemoveNodeIdFromNetwork(nodeId, startStop, highPower = FALSE, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_remove_node_id_from_network(ZWay zway, ZWNODE nodeId, ZWBOOL startStop, ZWBOOL highPower, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Start/stop exclusion of a node id. Note that this function can be used to exclude a device from previous network before including in ours. Available on primary and inclusion controllers
Parameter nodeId: NodeId to exclude. If 0 or > 232, any node will be excluded (like with zway_fc_remove_node_from_network / RemoveNodeFromNetwork)
Parameter startStop: Start exclusion mode if True, stop if False
Parameter highPower: Use full power during this operation if True. On False use low power mode
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: controllerState, lastExcludedDevice, lastIncludedDevice
Syntax: ControllerChange(startStop, highPower = TRUE, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_controller_change(ZWay zway, ZWBOOL startStop, ZWBOOL highPower, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Set new primary controller (also known as Controller Shift). Same as Inclusion, but the newly included device will get the role of primary. Available only on primary controller
Parameter startStop: Start controller shift mode if True, stop if False
Parameter highPower: Use full power during this operation if True. On False use low power mode
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: controllerState, lastExcludedDevice, lastIncludedDevice
Syntax: CreateNewPrimary(startStop, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_create_new_primary(ZWay zway, ZWBOOL startStop, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Create new primary controller by SUC controller. Same as Inclusion, but the newly included device will get the role of primary. Available only on SUC. Be careful not to create two primary controllers! This can lead to network malfunction!
Parameter startStop: Start create new primary mode if True, stop if False
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: controllerState, lastExcludedDevice, lastIncludedDevice
Syntax: ZMEFreqChange(freq, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_zme_freq_change(ZWay zway, ZWBYTE freq, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Change Z-Wave.Me Z-Stick 4 frequency. This function is specific for Z-Wave.Me hardware
Parameter freq: 0x00 EU. 0x01 RU. 0x02 IN. 0x03 US. 0x04 ANZ. 0x05 HK. 0x06 CN. 0x07 JP. 0x08 KR. 0x09 IL. 0x0A MY. 0x0B US Long Range. 0xFF request current frequency (ZME firmwares prior to 5.03 don't support 0xFF feature)
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: frequency
Syntax: RFPowerLevelSet(level, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_rf_power_level_set(ZWay zway, ZWBYTE level, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Set RF power level to specified value
Parameter level: 0 to 9
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: RFPowerLevelGet(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_rf_power_level_get(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Get RF power level current value
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: SendTestFrame(nodeId, level, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_send_test_frame(ZWay zway, ZWNODE node_id, ZWBYTE level, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Send test frame to a node at a specified RF level
Parameter nodeId: Node Id to make test against
Parameter level: 0 to 9
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: FlashAutoProgSet(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_flash_auto_prog_set(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Put Z-Wave chip in Atuo Prog mode for USB/UART reflashing
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: ExploreRequestInclusion(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_explore_request_inclusion(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Request NWI. Called from SetLearnMode
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: ExploreRequestExclusion(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_explore_request_exclusion(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Request NWE
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: ZMEBootloaderFlash(seg, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_zme_bootloader_flash(ZWay zway, ZWBYTE seg, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Start reflashing bootloader of Z-Wave.Me firmware for 5th generation Z-Wave chip. This function is specific for Z-Wave.Me hardware
Parameter seg: address of new bootloader location in 2K segments
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: ZMEBootloaderLoadFlash(data, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_zme_bootloader_load_flash(ZWay zway, size_t length, const ZWBYTE * data, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Load and start reflashing bootloader of Z-Wave.Me firmware for 7th generation Z-Wave chip. This function is specific for Z-Wave.Me hardware
Parameter data: Firmware image data in binary format (use hex2bin to convert from Intel Hex)
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: ZMECapabilities(data = NULL, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_zme_capabilities(ZWay zway, ZWBYTE length, const ZWBYTE * data, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Get or set firmware capabilities. This function is specific for Z-Wave.Me hardware
Parameter data: data to set (NULL to get)
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: caps, uuid
Syntax: ZMELicenseSet(data = NULL, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_zme_license_set(ZWay zway, ZWBYTE length, const ZWBYTE * data, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Set Z-Wave.Me firmware capabilities. This function is specific for Z-Wave.Me hardware
Parameter data: data to set (NULL to get)
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: caps
Syntax: ZMEPHISetLED(led, status, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_zmephisetled(ZWay zway, ZWBYTE led, ZWBYTE status, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Activate LEDs on Philio hw. This function is specific for Philio hardware
Parameter led: LED id: 0x10 (Logo), 0x11 (Around), 0x12 (Misc)
Parameter status: LED status 2 (Off), 4 (On), 8 (Flash), 16 (Slow flash), 32 (Slow dimming)
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: ZMEPHIGetButton(button, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_zmephigetbutton(ZWay zway, ZWBYTE button, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Get button state on Philio hw. This function is specific for Philio hardware
Parameter button: 0: Tamper Key, 1: Function Key A, 2: Function Key B
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: philiohw.tamper, philiohw.funcA, philiohw.funcB
Syntax: ZMEPHIGetPower(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_zmephigetpower(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Get power state on Philio hw. This function is specific for Philio hardware
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: philiohw.powerFail, philiohw.batteryLevel, philiohw.charging, philiohw.batteryFail
Syntax: ZMEPHIGetBattery(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_zmephigetbattery(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Get battery state on Philio hw. This function is specific for Philio hardware
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: philiohw.batteryADCLevel
Syntax: ZMEPHIGetRTC(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_zmephigetrtc(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Get RTC from Philio hw. This function is specific for Philio hardware
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: set system time
Syntax: ZMEPHISetRTC(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_zmephisetrtc(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Set RTC on Philio hw. This function is specific for Philio hardware
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: InjectPacket(nodeId, data, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_application_command_handler_inject(ZWay zway, ZWNODE node_id, ZWBYTE length, const ZWBYTE * data, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Inject command in Z-Way as it was received via Z-Wave. This function is for debugging only
Parameter nodeId: Source Node Id
Parameter data: Paket payload (should looks like ccId, ccCmd, data, ....)
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: GetBackgroundRSSI(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_get_background_rssi(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Get background noise level
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: SerialAPISetupSetIMA(enable, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_serial_api_setup_set_ima(ZWay zway, ZWBOOL enable, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Enable Advanced IMA in Z-Wave.Me firmware
Parameter enable: Set feature state: True to enable, False to disable
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: SerialAPISetupGetTxPower(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_serial_api_setup_get_tx_power(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Get Tx power in Z-Wave.Me firmware
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: txPower
Syntax: SerialAPISetupSetTxPower(power, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_serial_api_setup_set_tx_power(ZWay zway, ZWBYTE power, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Set Tx power in Z-Wave.Me firmware
Parameter power: Power level in 10*dBm
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Report: txPower
Syntax: ClearNetworkStats(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_clear_network_stats(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Clear statistics gathered by the Z-Wave protocol
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: GetNetworkStats(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_get_network_stats(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Get statistics gathered by the Z-Wave protocol
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: GetPriorityRoute(nodeId, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_get_priority_route(ZWay zway, ZWNODE node_id, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Get the route with the highest priority
Parameter nodeId: Node ID we are interested in
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: SetPriorityRoute(nodeId, repeater1, repeater2, repeater3, repeater4, routeSpeed, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_set_priority_route(ZWay zway, ZWNODE node_id, ZWBYTE repeater1, ZWBYTE repeater2, ZWBYTE repeater3, ZWBYTE repeater4, ZWBYTE route_speed, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Set the route with the highest priority
Parameter nodeId: Node ID we are interested in
Parameter repeater1: Hop #1 in the route. Value 0 means direct range. Values > 232 clears the priority route and LWR (Last Working Route is selected by the protocol)
Parameter repeater2: Hop #2 in the route. Value 0 means end of route
Parameter repeater3: Hop #3 in the route. Value 0 means end of route
Parameter repeater4: Hop #4 in the route. Value 0 means end of route
Parameter routeSpeed: Baudrate to use: 1 for 9.6 kbps, 2 for 40 kbps, 3 for 100 kbps
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: SetPromiscuousMode(enable, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_set_promiscuous_mode(ZWay zway, ZWBOOL enable, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Enable or disable promiscuous mode
Parameter enable: True to enable functionality, False to disable
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: AssignPriorityReturnRoute(nodeId, destId, repeater1, repeater2, repeater3, repeater4, routeSpeed, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_assign_priority_return_route(ZWay zway, ZWNODE node_id, ZWNODE dest_id, ZWBYTE repeater1, ZWBYTE repeater2, ZWBYTE repeater3, ZWBYTE repeater4, ZWBYTE route_speed, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Assign priority return route to specified node
Parameter nodeId: Node Id of the device that have to store new route
Parameter destId: Destination Node Id of the route
Parameter repeater1: Hop #1 in the route. Value 0 means direct range
Parameter repeater2: Hop #2 in the route. Value 0 means end of route
Parameter repeater3: Hop #3 in the route. Value 0 means end of route
Parameter repeater4: Hop #4 in the route. Value 0 means end of route
Parameter routeSpeed: Baudrate to use: 1 for 9.6 kbps, 2 for 40 kbps, 3 for 100 kbps
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: AssignPrioritySUCReturnRoute(nodeId, repeater1, repeater2, repeater3, repeater4, routeSpeed, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_assign_priority_suc_return_route(ZWay zway, ZWNODE node_id, ZWBYTE repeater1, ZWBYTE repeater2, ZWBYTE repeater3, ZWBYTE repeater4, ZWBYTE route_speed, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Assign priority return route to SUC
Parameter nodeId: Node Id of the device that have to store route to SUC
Parameter repeater1: Hop #1 in the route. Value 0 means direct range
Parameter repeater2: Hop #2 in the route. Value 0 means end of route
Parameter repeater3: Hop #3 in the route. Value 0 means end of route
Parameter repeater4: Hop #4 in the route. Value 0 means end of route
Parameter routeSpeed: Baudrate to use: 1 for 9.6 kbps, 2 for 40 kbps, 3 for 100 kbps
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: ZMESerialAPIOptionsJammingDetectionSet(ch1Threshold, ch2Threshold, ch3Threshold, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_zme_serialapi_options_jamming_detection_set(ZWay zway, ZWBYTE ch1_threshold, ZWBYTE ch2_threshold, ZWBYTE ch3_threshold, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Set Jamming Detection threshold. Jamming detection fine tuning in NVM:. address 6530, 3 bytes: ch1_threshold ch2_threshold ch3_threshold. address 6533, 2 bytes: how many times should measurements exceed in last 10 seconds to trigger the alarm, default 2 times. address 6535, 2 bytes: repeat the alarm in N*0.1 seconds if the jamming persists, default 0100 = 25.6 sec
Parameter ch1Threshold: Threshold for channel 1
Parameter ch2Threshold: Threshold for channel 2
Parameter ch3Threshold: Threshold for channel 3
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: ZMESerialAPIOptionsAdvancedIMASet(enable, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_zme_serialapi_options_advanced_ima_set(ZWay zway, ZWBOOL enable, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Enable/disable advanced IMA by Z-Wave.Me that includes incoming route path information
Parameter enable: Turn on or off
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: ZMESerialAPIOptionsStaticAPISet(enable, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_zme_serialapi_options_static_api_set(ZWay zway, ZWBOOL enable, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Switch between Static and Bridge API for Z-Wave.Me firmware
Parameter enable: Turn on or off Static API
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: ZMESerialAPIOptionsUARTSpeedSet(speed = 115200, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_zme_serialapi_options_uart_speed_set(ZWay zway, speed_t speed, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Set high speed for UART interface for Z-Wave.Me firmware
Parameter speed: UART speed. Valid values are listed in UART_SPEEDS macro definition
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: GetLongRangeChannel(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_get_long_range_channel(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Get Long Range channel
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: SetLongRangeChannel(channel, successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_set_long_range_channel(ZWay zway, ZWBYTE channel, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Set Long Range channel
Parameter channel: Long Range channel. 1 for channel A. 2 for channel B
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Syntax: GetLongRangeNodes(successCallback = NULL, failureCallback = NULL)
C Syntax: ZWError zway_fc_get_long_range_nodes(ZWay zway, ZJobCustomCallback successCallback, ZJobCustomCallback failureCallback, void* callbackArg)
Description: Get Long Range nodes
Parameter successCallback: Custom function to be called on function success. NULL if callback is not needed
Parameter failureCallback: Custom function to be called on function failure. NULL if callback is not needed
Z-Way library is a middleware between Z-Wave transceiver and your application. Z-Way offers pretty high level API to control Z-Wave devices and manage wireless network.
Interaction with the library covers three aspects:
Every command request generates an outgoing packet (job). Before generating a packet, library will validate parameters and check whether the command is supported by recipient. In case of failure command will return error immediately.
Once a job is generated, it is placed into outgoing queue for future send. The queued jobs are handled internally by Z-Way engine according to commands priorities, nodes states and capabilities, transceiver state etc.
Once the job is sent, it must be first confirmed it was successfully delivered to Z-Wave stack, and then confirmed it was delivered to recipient. All these operations are performed asynchronously, so command may provide a callback function to call in case of success or failure if it is needed to know delivery result.
After the delivery was confirmed, command is considered executed. If it was a state request command (i.e. SensorMultilevel Get), response packet may be delayed (or even not sent at all), so command's success/failure callbacks cannot be used to get requested state immediately.
All incoming packets from Z-Wave network are automatically parsed by Z-Way and stored in special variables called data holders. Data holder is a named variable that stores a value along with it's data type and time the value was last updated and "invalidated". Each data holder may also contain a set of child data holders, so they form a hierarchical data storage. Data holders also support callbacks, so custom code may be executed each time the value is updated.
For example, level
data holder stores dimming level of a dimmer. Once application executes a Get command for that dimmer, Z-Way will update invalidateTime
property on the level
data holder, so application knows the current value is assumed to be outdated, but the new one was not received yet.
Once Z-Way received a packet with new value of the dimmer, it will store it in level
data holder and update updateTime
property. Since updateTime
is greater that invalidateTime
, the value is considered valid now.
Some Z-Wave packets contain multiple values. In that case multiple data holders are updated. To have them all already updated in your callback function subscribe to the last modified data holder. The order of update of data holders from one packet is always the same. Some values are stored in data holders subtrees. In that case the subtree parent is updated the last, so the callback is better to be registered on that data holder.
Z-Wave device can also send unsolicited state reports to controller (without a request from controller's side; e.g. due to local operation or periodically). Due to asynchronous nature of Z-Wave protocol, controller can't tell whether the packet was sent unsolicited or it is a response to the previous command. So unsolicited packet will be handled the same way exactly.
Z-Way inherits structure of Z-Wave protocol and divides data holders and command on different Command Classes (CC). Command Classes are building blocks of Z-Wave functionality. For example, dimming is provided by Command Class SwitchMultilevel
, relay operation by CC SwitchBinary
, sensors by CCs SensorMultilevel
and SensorBinary
etc. Please consult Z-Wave protocol basics to understand Z-Wave Command Classes.
All Command Classes share a minimal subset of common data holders:
supported
says if CC is supported by device (it implements that functionality) or only controlled (it can control other devices implementing that functionality).version
stores version of the CC. Used internally to know how to deal with that Command Class.security
tells if CC communications should be encrypted using Z-Wave AES security mechanism.interviewDone
and interviewCounter
describe the status of initial interview process during which Z-Way asks the device about it's CC capabilities. If the interview is incomplete, Z-Way might fail to use some Command Classes with this device. All Z-Wave certified devices MUST pass interview process.All the other data holders are specific to each Command Class. For example, SwitchMultilevel
Command Class contains level
data holder, SensorBinary
has two-level storage, grouping data by sensor types: 0 → {sensorTypeString, level}, 5 → {sensorTypeString, level}, ...
where type identifiers are Z-Wave specific constants. Every Z-Wave specific constant value will have corresponding verbal description (in case of SensorBinary
it is in sensorTypeString
data holder).
Some Command Classes are hidden under the hood of Z-Way: MultiCmd
, Security
, SecurityS2
, CRC16
, MultiChannel
, ApplicationStatus
, Supervision
, Transport Services
. They're handled internally by Z-Way software, and shouldn't be used directly.
Some Command Classes have no public APIs, but their data holders may be very useful in your application: AssociationGroupInformation
, DeviceResetLocally
, ManufacturerSpecific
, Version
, ZWavePlusInfo
.
All the remaing Command Classes have their Get and Set commands specific to functionality of the Command Class. Consult CommandClassesPublic.h
header file for more info about available commands for different Command Classes and their meaning.
Z-Way offers API for network management operations: include new devices, exclude devices, discover neighbor devices, remove failed nodes, frequency selection, controller reset etc. These functions are described in ZWayLib.h
header file.
Z-Way also provides a low level access to Z-Wave transceiver functionality through Z-Wave Serial API. These functions are provided by Function Classes. You should use them only if you have deep knowledge of Z-Wave networking. Check FunctionClassesPublic.h
for more info.
To use Z-Way one need to include few header files:
#include <ZWayLib.h>
#include <ZLogging.h>
Z-Way will need to know where to write the log to, so first of all you need to create logging context using zlog_create()
call. You can disable logging by passing NULL instead of logging context to Z-Way.
Then create new Z-Way context using zway_init()
. It will only allocate memory, read log files, initialize internal structures. At this point you can already attach your handlers on new device/instance/Command Class creation (you will also be able to do it at any time later). Do it using zway_device_add_callback()
call. Warning: you should initialize ZWay pointer with NULL before passing it to zway_init
!
Executing zway_start()
will open serial port and start a new thread that will handle all communications with the transceiver. From now Z-Way can receive packets from the network, but can not parse them yet, since devices were not discovered yet. All received packets will just be queued to be parsed later after discovery process.
Last step to run Z-Way is zway_discover()
call. It will start communications with the Z-Wave transceiver and ask about devices in the network, their capabilities, network state etc. During discovery phase Z-Way will create structures for all devices and load saved data from file stored in config/zddx
folder.
From now on, Z-Way is ready to operate. Incoming events will trigger callback functions attached by application, and executing commands will put new packets in the queue.
You will also need few other functions zway_is_running()
, zway_is_idle()
, zway_stop()
, zway_terminate()
to handler termination process.
We suggest you to check the z-way-test project on the (releases page and look on comments in header files.
The core of Z-Way — Z-Way Library — will compile and run on any POSIX-compliant platform as well as Linux, Mac OS X and other Unix-like systems. It also runs on Windows. The full Z-Way solution with home automation engine has more requirements to the OS, CPU and memory, but still runs on most platforms from router-based OpenWRT to advanced desktop and server machines running Linux or Windows.
Z-Way relies on several open-source libraries:
* — needed only for full Z-Way solution including HTTP API and JavaScript engine.
Most of them are provided by OS, some requires latest versions to be compiled (like libxml2, libmosquitto and libcrypto). This is ususally not a big deal to do.
Download the complete SD Card image of latest Raspberry Pi OS including Z-Way software and various other tools from:
https://github.com/tridentiot/z-way-builds/releasesTo prepare the SD Card please refer to the guidance on raspberrypi.org.
Wait about 1 minute then open a web browser and point to find.z-wave.me. Below the login screen you will see the IP address of your Raspberry Pi system. Click on it to access the Z-Way user interface.
To install Z-Way for your Debian-based Linux, open the terminal and execute the following commands under root (do `sudo -s` to gain root access). This will add Trident IoT repository to your system and install Z-Way.
# Not to fail on old key
rm -f /etc/apt/sources.list.d/tridentiot.list
# Install additional packages that help to add Trident IoT repository
apt-get update -y
apt-get install dirmngr apt-transport-https gnupg wget lsb-release -y
# Get the distro type
distro=$(lsb_release -a 2>/dev/null | grep Codename | awk '{print $2}')
distro_id=$(lsb_release -a 2>/dev/null | grep "Distributor ID" | awk '{print $3}' | tr '[:upper:]' '[:lower:]')
# Check architecture
architecture=$(uname -m)
if [ "$architecture" == "aarch64" ]; then arch_tag="[arch=armhf]"; arch_apt=":armhf"; dpkg --add-architecture armhf && apt-get update; fi
# Fetch the public key for signatures
wget "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x79006366B9B20A6B4D7E1C27AD242992ACAB4528" -O /etc/apt/trusted.gpg.d/tridentiot.asc
# Add to the APT list
echo "deb ${arch_tag} https://tridentiot.github.io/z-way-deb-repo/${distro_id} ${distro} main" >/etc/apt/sources.list.d/tridentiot.list
apt-get update -y
# Install Z-Way
apt-get install -y z-way-server${arch_apt}
After installation, z-way will start automatically. Open web browser and go to http://IP:8083
You can manually download and install Z-Way from the deb package or tar.gz archive
https://github.com/tridentiot/z-way-builds/releasesTo manually start and stop Z-Way use commands:
sudo systemctl start z-way-server
sudo systemctl stop z-way-server
Requirements:
Install Z-Way:
sudo cp /mnt/c/username/downloads/z-way-ubuntu-...deb ./
sudo apt install ./z-way-ubuntu-*.deb
# show available devices
usbipd
# 4-4 is an example of the usb port
usbipd bind --busid 4-4
usbipd attach --wsl --busid 4-4
./z-way-server
Z-Way can also be installed on Home Assistant Yellow and other supervised Home Assistant installations. Use buttons bellow to install Z-Way add-on and Z-Way intergrationon your Home Assistant:
Once installed, Z-Way interface can be accessed on port http://homeassistant.local:8083. Detailed instruction is available here
Docker allows running services in an isolated space without installing them into the system, thus you can run Z-Way-Server on your Linux server and macOS. We have already prepared a corresponding repository with everything you need as well as assembled images. In the article below, we will show you how to run the Z-Way server and consider several ways to do this.
Make sure Docker is installed on your system. Refer to the official Docker documentation for installation instructions:
* — Note that accessing Z-Wave and Zigbee hardware by Z-Way in Docker on MacOS or Windows is not possible, due to Docker on macOS and on Windows not supporting passing USB from host to Docker container. On Windows use Z-Way in WSL instead. On macOS use a Unix/TCP sockets instead of accessing the hardware directly.
Create a directory for the Z-Way server and navigate into it:
mkdir z-way-server
cd z-way-server
Run the following command to start the Z-Way container:
docker run -d -it \
--name z-way-server \
--device=/dev/ttyUSB0 \
--device=/dev/ttyUSB1 \
-p 8083:8083 \
-v "$(pwd)/data:/data" \
ghcr.io/tridentiot/z-way-docker:latest
In this example, we specified 2 ttyUSB0 and ttyUSB1 devices; if you are going to use only 1 interface, you can omit the additional line --device=/dev/ttyUSB1 \.
Use a Unix/TCP sockets to access USB device from docker container.
docker run --rm -it -p 8083:8083 z-way-docker
In the docker container:
socat -d -d -d UNIX-LISTEN:/tmp/zwave,reuseaddr,fork TCP:host.docker.internal:8088
In the mac:
socat -d -d -d TCP-LISTEN:8088,reuseaddr,fork FILE:/dev/cu.SLAB_USBtoUART,nonblock,ispeed=115200,ospeed=115200
Make sure you use /dev/cu. instead /dev/tty.
Open SmartHome UI in browser localhost:8083, go to Menu -> Apps -> Z-Wave Network Access and set Serial port to unix:/tmp/zwave.
Clone the repository and navigate to the project directory:
git clone https://github.com/tridentiot/z-way-docker.git
cd z-way-docker
Make sure the `docker-compose.yml` file is correctly configured for your devices. You can specify multiple devices such as Z-Wave, ZigBee, EnOcean, or Z-Station (Z-Wave + Zigbee USB station):
services:
z-way-server:
build:
context: .
container_name: z-way-container
devices:
- /dev/ttyUSB0:/dev/ttyUSB0 # For Z-Wave UZB Stick or Z-Station
# - /dev/ttyUSB1:/dev/ttyUSB1 # For an additional interface, such as Z-Station or ZigBee stick
ports:
- "8083:8083"
volumes:
- ./data:/data
restart: unless-stopped
To create and run the container:
docker compose up -d
To view real-time logs:
docker logs -f z-way-container
To stop the container:
docker compose down
Clone the repository and navigate to the project directory:
git clone https://github.com/tridentiot/z-way-docker.git
cd z-way-docker
Build the Docker image:
docker compose build
Run the container using Docker Compose:
docker compose up -d
To view real-time logs:
docker logs -f z-way-container
To stop the container:
docker compose down
Z-Way-Srv-Test - this is a test application that gives you a quick start in developing your own controller using HTTP or Websocket API.
Get from https://github.com/tridentiot/z-way-builds/releases/
# Install additional libraries
sudo apt-get install libxml2-dev libarchive-dev libssl-dev libwebwockets-dev
# Link to libraries and include files
mkdir libzwaysrv
cp /opt/z-way-server/libzway/*.h libzwaysrv/
cp /opt/z-way-server/libzwaysrv/*.h libzwaysrv/
cp /opt/z-way-server/libs/libz{commons,s2,way,waysrv}.so libzwaysrv/
# Compile
make
# Run
LD_LIBRARY_PATH=libzwaysrv ./z-way-srv-test /dev/ttyUSB2 8083 0 0 0 0
For a Raspberry Pi with 64-bit architecture (aarch64) use 64-bit libs z-way-packages-debian-bookworm-armhf.
Z-Way-Test - this is a test application that gives you a quick start how to use Z-Way C-functions.
Get from https://github.com/tridentiot/z-way-builds/releases/
# Install additional libraries
sudo apt-get install zlib1g-dev libxml2-dev libarchive-dev libssl-dev
# Link to libraries and include files
mkdir libzway
cp /opt/z-way-server/libzway/*.h libzway/
cp /opt/z-way-server/libs/libz{commons,s2,way}.so libzway/
# Check the port and speed in zway_init function call in main.c
# Compile
make
# Run
// Make sure to shutdown other Z-Way instances like z-way-server
LD_LIBRARY_PATH=libzway ./z-way-test
To build Z-Way for ESP32, you need to install the ESP-IDF toolchain. There are two installation options: via the VSCode extension or using the command-line interface (CLI).
Make sure Python 3 is installed. In some cases, ESP-IDF will install it automatically.
z-way-esp32
artifacts.z-way-esp32-src.zip
archive to a folder of your choice.Run the following command:
python3 py_scripts/esp_builder.py build -d <build_variant> -r
-d
to specify the build variant.-r
for a release build (omit for debug).prod-esp32N8R2: Main production version (8MB flash, 2MB RAM).
Z-Wave connected via ESP_RX: IO18
, ESP_TX: IO19
.
dev-esp32: For chips without external memory (4MB flash minimum). Limited functionality.
Z-Wave connected via ESP_RX: IO18
, ESP_TX: IO19
.
dev-esp32s3: For ESP32-S3 with 8MB+ flash and 2MB+ RAM.
Z-Wave connected via ESP_RX: IO18
, ESP_TX: IO17
.
dev-wrov1: For ESP WROVER modules (4MB+ flash, 2MB RAM).
Z-Wave connected via ESP_RX: IO18
, ESP_TX: IO19
.
If no variant is specified, all available builds will be generated.
After building, find the firmware image in the bin
folder.
Make sure your Z-Wave module is connected properly and flashed with the SerialAPI firmware.
Flash your device:
python3 py_scripts/esp_builder.py flash <firmware_file.zip> -p <esp32_port>
Example:
python3 py_scripts/esp_builder.py flash bin/z-way-esp32-prod-esp32N8R2.zip -p /dev/ttyUSB0
Start the interactive monitor:
python3 py_scripts/esp_builder.py monitor -p <esp32_port> -b 921600
For WROVER boards, use baud rate
-b 460800
.
This opens the Z-Way command-line interface.
The device will start in SoftAP mode. Connect using:
ZWAY-ESP-XXXX
12345678
To connect the device to your own Wi-Fi:
ZWay> w <YourSSID> <YourPassword>
Reboot:
ZWay> x
To find the device's IP address:
ZWay> I
Open your browser and enter the IP address. You will see the Web User Interface (WUI) of Z-Way.
You can now manage Z-Wave devices directly from your browser.
The Z-Wave Expert User Interface is designed for installers, technically savvy people, and other users that know how to build and maintain a Z-Wave-based wireless network. Hence, it uses some Z-Wave specific-language and offers detailed insight into the work and data structure of the Z-Wave network. It allows users to:
Besides the menu items, there is a configuration setting (wheel icon), a time indicator showing the time at the time zone of the gateway and a job queue indicator. Clicking on this job queue indicator opens a new tab displaying the job queue of Z-Way. Please refer to Chapter 7.8 for more information about the job queue.
All values shown in the Z-Wave Expert User Interface are assigned to a time stamp indicating when the value of status information was received from the wireless network. A red color of the time stamp indicates that the update request from the controller to the device for this value is pending.
![]() |
The home screen shown in Figure 7.1 offers some high level of information about the software and a notepad where the user or installer can leave important information for future use.
The section 'Network Information' box offers some statistics about the number of devices in the network and how many of them are mains or battery-operated. The network health box will list devices that have problems:
Clicking on the statement will lead to a help page explaining the problems and giving guidance for remediation.
The last infobox will contain information about devices that were removed using the device reset function. In this case, the device will leave the network but informing the controller. There is no exclusion process applied.
The tab Control allows operating the various types of device and shows the reported values in case of sensors or meters. In case the control options offered here are not sufficient, please refer to Configuration > Expert Command for a full set of functions supported by the device.
![]() |
The switch dialog shown in Figure 7.2 lists all devices of the network supporting switching, dimmer, or motor control capabilities. The device name and Z-Wave ID, as well a the current status of the switch, are given and the time of the last status update. The Update button forces an immediate update of the switch (if mains powered device). A 'Switch All' Icon shows whether or not the specific device will react to a All ON or All Off command. A green triangle indicates that the device will react to the command shown. All actuators can be switched on or off. Dimmer and motors controls can be operated using a slider. For dimmer, there is a button On and Full. Full turns the dimmer always to 100 %, diming value while On turns to the last dimming state before the dimmer was turned off. Clicking on the table heads reorders the table view of the data.
![]() |
The sensor dialog shown in Figure 7.3 lists all devices of the network providing sensor information. Device name and ID, the type of the sensor, the actual sensor value and the sensor scale is listed. The date/time column indicates when the given sensor value was received. It’s possible to call for a sensor update but bear in mind that battery-operated device will only respond after the next wakeup.
![]() |
The meter dialog shown in Figure 7.4 lists all devices of the network providing (accumulating) meter information. Device name and id, the type of the meter, the actual meter value and the meter scale is listed. The date/time column indicates when the given sensor value was received. It’s possible to call for a meter update but bear in mind that battery-operated device will only respond after the next wakeup. Clicking on the table heads reorders the table view of the data. A meter reset button is shown for device supporting this function.
![]() |
The thermostat dialog shown in Figure 7.5 lists all thermostat devices of the network. Device name and ID and the current set point temperature is shown. The date/time column indicates when the given set point temperature was transferred to the device. The set point temperature can be changed using the + or - buttons or the slider. Clicking on the table heads reorders the table view of the data.
Some thermostats may offer different modes such as heating, cooling, off, etc. For these devices, a drop-down list shows all modes available. In this case, the setpoint is only valid for the mode selected.
![]() |
The door lock dialog shown in Figure 7.6 lists all door lock devices of the network. Device name and ID, the current status of the lock, and the last time of the change of the status are listed. The lock can be opened or closed. Clicking on the table heads reorders the table view of the data.
![]() |
The notification dialog shown in Figure 7.7 lists all notification devices. Notification devices act like binary sensors, albeit offering some more capabilities. Per notification device multiple events can be reported. The notification device also allows deactivating the notification for certain events. Please note that not all devices make use of these functions.
The menu Device gives access to overview pages with more detailed information about the devices in the network and their actual status.
![]() |
This dialog in Figure 7.8 shows the actual network status of all devices. All devices are listed by their node ID and name. The date/time indicates the time of the last successful communications between the controller and this device (either confirmed sending or reception). The green checkmark indicates that the device is alive. A red sign indicates that the controller assumes the device not being active anymore. Mains powered devices can be checked for their network availability by hitting the o button on the right-hand side.
In case the device interview and configuration were not performed properly, a little question mark icon will indicate this. Clicking on the question mark will open a window displaying the details of the interview process. The correct loading of a Device Description File is indicated as well. For a battery-operated device, the time of the last wakeup, the time of the next wakeup, and the current wakeup status are shown. Clicking on the table heads reorders the table view of the data. Clicking on the table heads reorders the table view of the data.
![]() |
The type info dialog shown in Figure 7.9 lists all devices of the network and indicates if they support enhanced Z-Wave functions such as Security and Z-Wave Plus. Additionally, the Z-Wave protocol version, the application version and the device type indicator of the device is shown.
The security icon determines what kind of security the device supports:
The last column shows the security keys granted for the device.
Clicking on the table heads reorders the table view of the data.
![]() |
This dialog shown in Figure 7.10 gives an overview of the battery status of the battery-operated devices in the network. Devices are listed by name and id. The last reported battery level (0–100 %) including update time is shown as well as the number and type of battery if known. The Update All button will request a status update from the device. The new status will be available after the next wakeup of the device. Clicking on the table heads reorders the table view of the data.
![]() |
This overview page shown in Figure 7.11 lists the current association set in the network. The Lifeline is an association to the gateway to report status changes and heard beat and can be hidden if needed. A Change button leads right to the configuration page of the device to change association settings.
The tab Configuration allows configuring the functions of a particular device. Pick the device to be configured from the drop-down list or pick the device from the full list shown on the left-hand side. The functions of the device are grouped into 6 tabs.
![]() |
Configuration > Interview, as shown in Figure 7.12, documents the result of the device interview. In this process, the controller tries to get information about the device. In case the controller finds a device description record for the device, it will display further information about the device that cannot be obtained from the device itself:
If the software will not automatically recognize the device and load the description record a button Select Device Description Record allows doing this manually. However, the description file must be present. Chapter 13.5 gives further information on how to create an own Device Description Record and load it into Z-Way.
The interview stage line gives information about the progress of the device interview.
There are a few reasons why an interview is not complete: In most cases the devices went to deep sleep too early to have some wireless connectivity problems. The button Force Interview allows re-doing the whole interview. The button Call for NIF requests a Node Information Frame from the device and the Button View Interview Result allows displaying the information about the different command classes found during the interview. It is also possible to force the interview of a certain command class only.
The button ZDDX Code Creator allows creating an XML description file usable for certain device databases.
The only configuration option on this tab is to change the given name of the device. During inclusion, the software generates a generic name, but it is highly recommended to change this name. The given name should be descriptive but not too long.
![]() |
Configuration > Configuration shown in Figure 7.13 allows configuring the device. If the specific device was recognized correctly the different configuration values are translated into human-readable dialogs. Every configuration comes with standard dialog options:
If the device is not known (means there is no Device Description File assigned to it) it is still possible to set configuration values. Figure 7.14 shows the generic configuration dialog used in this case. The specific configuration parameters and it's values need to be read from the device manual.
![]() |
There are four more command classes that may need additional configuration and are displayed in the same dialog if the device supports them.
Note: For mains-powered and FLIRS devices, the button Save this parameter or Save into Device will activate the changes within few seconds. For battery-operated devices, the commands are stored to the next wakeup. It’s possible and recommended to wake up the device manually to speed up the change of configuration values.
![]() |
Associations allow switching a Z-Wave Device B (target) as a result of an event in Z-Wave Device A (source). Z-Wave Device A manages a list of devices to be controlled for each event supported. The device list associated to a specific event—also called association groups—and the devices that are associated with it are shown in the association tab in Figure7.15.
In case the information is provided either by the device or by the device record stored in the software, the meaning of the events is written. Otherwise, the event group is shown unnamed as number only. In this case, refer to the devices manual for more information about the association group meaning.
The stored devices can be called from the actual device using a button. The buttons +/- used to add and remove device from the group. A dialog is opened and a device can be picked. In case this device has multiple instances, an instance drop-down list will appear allowing to choose the right instance of the target device. The node ID and—if applicable—the instance ID are shown in the target device list. Move the mouse over the ID to show the complete given name of this device. The color of the device name or ID indicate the status of the association entry:
![]() |
Modern versions of Z-Wave allow testing the quality of a link between two devices in direct wireless range. The dialog shown in Figure 7.16 lists all devices in wireless range and gives an indication about the quality of this link. The following colors are used:
Individual links can be retested using the Test all links button. It is also possible to test all links from a given device. However, please keep in mind that this process may take several minutes to complete.
![]() |
Configuration > Expert Commands as shown in Figure 7.17 displays the status values and possible commands in a very generic way. On the left-hand side, the different instances (channels) of the device are listed in a column. In case there is only one channel (that’s the case for most devices), only channel/instance 0 is shown. Clicking on the number opens a dialog showing all internal variables for the channel. The next column shows all the command classes exposed by the device. Again, clicking on the name opens a dialog with more internal status variable information for this command class. On the right-hand side, there is a list of commands. This dialog form is auto-generated from the information provided by the command class itself and not optimized for daily usage.
In case the device supports a firmware update “over the air,’’ this dialog is shown to perform such a firmware update. The firmware file to be uploaded must be available in a raw “BIN’’ or the Intel hex “HEX’’ file. The target field allows specifying the target memory/processor for the update process. For updating the Z-Wave firmware part a “0’’ must be set. The firmware updating process will take up to 10 minutes. Please don’t do any other operation during this time. It may be required to activate the firmware update mode on the device to be updated. Please refer to the manual for further information about activation.
The network section of the user interface focuses on the network as such and offers all controls and information to build, manage, and repair the wireless network of the controller.
Network > Control summarizes all commands needed to manage the network and the controller. The page is structured in four boxes.
![]() |
The device management box as shown in Figure 7.18 allows including and excluding Z-Wave devices. A status display shows the status of the controller. The Include Device and Exclude Device button turn the controller into the Inclusion and Exclusion mode. In this case the status display changes and the resp. buttons turns into a Stop function. The inclusion and exclusion modes will time out after about 20 seconds but can always be terminated using the Stop buttons.
Another way to stop the inclusion mode is to actually include a new device. In this case the inclusion mode will stop and the node ID of the new device is shown. The controller generated a default name of the device as combination of it's primary function and the new node ID. Clicking on this default name leads to the Configuration page where the name can be changed and other configuration tasks can be performed.
Please refer to the devices manual on how to do an inclusion. In case the inclusion does not work as expected, please exclude the device first. More than 90 % of all inclusion problems are caused by still included in a different network and can then not being included again.
The Exclusion mode also stops when one device was successfully excluded. This function can exclude devices from other networks too but the device need be available and functioning. To remove nonfunctioning or disappeared devices please refer to Replace Failed node or Remove Failed node.
In case the new device supports enhanced security function (Security Command Class), this controller will include the device securely. After this all data exchange between the controller and the new device is encrypted using AES encryption. For performance reasons, it mays be desired not to use the security function. The slider Force unsecure inclusion turns the controller into a mode where all security functions are suppressed for the included device. Security functions of other devices are not impacted. In case the new device supports Security S2 right after inclusion, a pop-up window will appear asking the user to grant the S2 security keys. A few basics about this process: Security in Z-Wave means among others that all communication between two nodes over the air is encrypted. Encryption however requires a key to encrypt and all the device communicating shall have the very same key—usually called network key. Z-Wave Security 2 handles 4 different network key. They differ by their level of trust.
![]() |
Each device will request one of more network keys according to the device usage and implementation idea. The default key is likely S2 Authenticated but Door Locks will ask for S2 Access control and small devices without external label request S2 Unauthenticated only. Figure 7.19 shows the dialog to grant the keys. The requested key is displayed in bold letters. The user has 20 seconds to select the keys to be granted. If no selection is made with 20 seconds, the process will time out and the device is included unsecure. Please note that some devices may still offer valid functions while other will deny any function outside a secure environment. It is recommended to grant the keys requested, but there may be certain environments where other selections may make sense.
![]() |
Once the selection is made before timeout a second window will request the authentication of the device. In case of S0 or S2 Unauthenticated, the window displays the device-specific key for information only as shown in Figure 7.20. If a key is visible on the device, it is recommended to compare the numbers. However, the key is granted without any further interaction by the user.
![]() |
In case S2 Authenticated or S2 Access Control keys were requested the dialog windows asks for providing the Device information by the user. This can be done by typing in the 5-digit PIN code (first 5 numbers of the device-specific key) as shown in Figure 7.21 or by scanning the QR code on the device shown in Figure 7.25.
In case of Access or Authentication, the user must insert either a PIN number or scan a QR code from the device just included. This insures 100% that the device just included is really the device in hand. If authentication fails, an error message is displayed. It is not possible to redo the key authentication only. You must exclude and re-include the device.
Smart Start is a new way to include devices into Z-Wave using the QR code provided with S2 authentication. The user scans the QR code thats is stored in an internal so called provisioning list. Smart Start Devices will then announce to be included when powered up. In case the S2 key is in the provisioning list the controller will automatically include this new device without any further user interaction.
Smart Start is controlled by the button Activate/Deactivate Smart Start. The button Smart Start opens a submenu allowing to register Device keys either by typing the 8 groups of numbers as shown in Figure 7.22 or using a QR code scanner as shown in Figure 7.23. Please note that a standard web browser running on a standard PC may not provide the capability to scan QR codes.
![]() |
![]() |
![]() |
Figure 7.24 finally shows the lost of Device keys already registered in the system and not used. Used means in this context that the corresponding device was powered up in proximity of the controller and got included automatically. Please note that the Razberry Shield or UZB or any hardware used must provide a firmware with SDK >=6.81. Otherwise Smart Start will not work.
This button will only be active if Z-Way is in factory default state. Only in this case the controller can be added to a different network as secondary controller. The controller of the other network must be in either the Inclusion or in the Exclusion mode, and the Learn button confirm the process.
![]() |
In case the new primary controller supports Security S2 a dialog window will pop up right after finishing the inclusion by the new controller. This dialog window will show the PIN number and the QR Code of this Z-Way controller needed to authenticate against the new controller.
The Start Change Controller function actively hands over the role of the primary controller of the network to a controller that will be included using the normal inclusion process. The controller status dialog shows the mode and it's termination.
The next dialog box of the page allows creating and using a backup. The backup file is stored on the local computer. Please note that any restore will overwrite the existing network. The restore operation must therefore be confirmed in another message box. A checkbox defines if the node information in the Z-Wave chip itself will be overwritten as well. This operation result in a possible loss of all network relationships and may require a re-inclusion of devices. Handle with care!
The controller maintenance offers two reset buttons. The Z-Wave Chip Reboot restarts the operating system of the Z-Wave transceiver chip. This can be done safely all the time.
The Reset Controller turns the controller back into factory reset. All connections to included devices and all configurations and settings are lost. This function must be handles with extreme case. An additional dialog requires to explicitly confirm the function. Only use this function if you know what you do!
This dialog allows changing the operating frequency. Please note that a wrong frequency will block all Z-Wave traffic and make the device inoperable. Frequencies can only be changed within one frequency group. These are the frequencies shown side by side (e.g. EU, RU, IN, ...). Changing to a frequency outside this group will technically work but the wireless range will be few centimeters only. Hence, this for workbench testing only. The device will reboot after a frequency change so please allow some time for restart.
The function Remove Failed Node allows removing a node that is no longer communicating with the controller. After multiple failed communications with a device the controller will mark this device as failed and avoid further communication. This function finally removes such a device from the network configuration. The drop-down list will only show IDs of failed nodes. If this list is empty this is a good sign!
It is also possible to Replace a Failed node with a new node. This is a combination of removing the failed node and adding a new node. Using this function makes sure the next included node has the same node ID as the failed node. The drop-down list will only show IDs of failed nodes. If this list is empty this is a good sign! Battery-operated devices are mainly in deep-sleep state and will not answer to communication requests. Hence, the controller will never automatically detect if a certain device is defect or gone. The function Mark battery device as failed manually marks battery-operated devices as failed so that they can be removed or replaced. The drop-down list shows all battery-operated devices but this does not mean that they are failed.
The Request NIF from all devices function is just a convenient way to retrieve a Node Information Frame from all devices of the network.
The SUC/SIS Management pane allows manipulating the self-organization of the Z-Wave network. Don’t use this unless you are a developer who knows when and why this is needed for testing purposes.
![]() |
This table in Figure 7.26 shows the neighborhood relationship of devices. The id, the name and the type of the node are listed. Green indicates that the two devices are in direct wireless neighborhoods and don’t need any other device to forward their signals. A red color between two nodes indicated that routing is needed between these devices. The Update button calls the device to scan it's neighborhood and report back the result to update it's own line of the routing table.
![]() |
The reorganization page controls as shown in Figure 7.27 an algorithm that reorganizes the network relationships and fixes problems. With checkboxes various stages of the algorithm can be selected. The result of the reorganization is shown in a log and can be downloaded. The network reorganization calls for every node to redetect it's neighbors. This operation will work if there is a working route to this device and this device is not sleeping. If the operation fails, the algorithm will have three more attempts to reflect possible routes to the very device that may be reestablished during the reorganization. Detection of neighbors for battery-operated devices will be started after all mains-operated devices are processed. The requests to battery-operated devices will be queued. For more information about job queuing, please refer to Chapter JOB_QUEUE.
The Route Map is a way to map the network is an extremely powerful, informative but the same time very complex viewgraph of the network situation in a home. The chart visualizes the possible links between the nodes and how they are used. If provided by the devices the chart will furthermore show complete routes and the signal strength of the individual links of a route. However only devices with SDK greater or equal to 6.71 will provide this additional information.
Initially all nodes are displayed with equal distances. It is possible to drag and drop the nodes to match the distances between them with the real distances. This will always work quite well if the Z-Wave network is in one floor only. A 2D map can be uploaded as background image to support the mapping. If the network is distributed on multiple floors it is recommended to do a best guess to keep the round initial view.
Figure 7.28 shows a typical chart. By clicking on a certain node and then moving the mouse over it again, it is possible to analyse the traffic from and to this very node. This allows focusing on the situation of this node only.
![]() |
The lines between the nodes represent the wireless connections and the communication between the nodes. The following information is encoded in these lines:
![]() |
The Timing tab in Figure 7.29 shows some very valuable timing information of communications between the controller and other devices. All other devices the controller has communicated with are shown in a list. The number of packets and the percentage of successful communication are shown. This can give an indication about the stability of the communication link between the controller and this device. On the right-hand side, the timing delay of each communication is shown and color-coded. A red number indicates that this communication finally failed. A communication without rerouting attempts as shown as green and a rerouting attempt is coded in black. The fact that a communication failed (red) may indicate that there is a severe problem in the network or in the device. It is however also possible that a battery-operated device just went back to sleep too fast. Z-Wave professionals can read a lot out of this timing information particularly when combined with the routing table. Please refer to Chapter 8 for more details on troubleshooting Z-Wave networks.
![]() |
The link status map, as shown in Figure 7.30, summarizes the device-specific link status information from the configuration sections.
The following colors are used:
The links from one device can be retested using the Test link button. However, please keep in mind that this process may take several minutes to complete. For devices that do not offer a link status function in their firmware, there is a simple connection test to the Z-Way controller using a “NOP.’’ Please note that this function does not test a direct wireless connection but the route to the controller only.
![]() |
This menu item as shown in Figure 7.31 provides some internal and very technical information about the Z-Way controller software, hardware, and firmware. The different submenu items are self-explaining.
Some buttons allow special maintenance functions:
The last block of the dialog shows the availability of the function calls on the serial API between the Z-Wave transceiver and Z-Way. “Not implemented’’ means that Z-Way is either not knowing about the function indicated by the function ID or does not make any use of it. A red function call ID or name indicated that Z-Way can use this function, but the transceiver’s firmware did not report to offer this service.
Annex gives a full overview of the Functions used and supported by Z-Way.
Z-Wave protocol defines a minimal level of interoperability via Basic Command Class. Most devices do act on Basic Set commands mapping it to Switch Binary Set or Thermostat Mode Set or some other. Z-Way is able to control other devices using speical Command Classes or using Basic Set.
Z-Way is handling incoming Basic Set and creates a virtual device that reflects the state of the last Basic Set command recieved. This allows to work with old devices that do not send Reports or Central Scene Notification to the LifeLine association group. Z-Way is ignoring Basic Get commands.
Z-Way supports both Security S2 and Security S0 protocols and implements very strict security rules. See Table 7.1 for more information.
|
The analytics menu offers functions to troubleshoot a Z-Wave network. Details about the dialogs are provided in Chapter 8.
The setup dialog offers various options to adapt the behavior of the Z-Wave Expert User Interface :
![]() |
The job queue, as shown in Figure 7.32, offers some deep insight into the dynamics of the controller software. It visualizes the (wireless) task execution of the system. Every communication attempt of the controller is queued and then handed over to the Z-Wave chip for execution. The list shows the jobs pending and the jobs that are completed or failed.
A legend informs about the meaning of the different flags n, U, D, E, S, and W. The timeout value counts back from 20 seconds once the job was sent. Even when it is completed, the job will stay in the queue marked as done (D) for some more time to allow inspection. The target node ID, a description of the communication message, information about the process, and the real bytes of the message are shown as well.
In order to access the API one need to authenticate itself. Z-Way uses sessions to authenticate users. Z-Way session is called ZWAYSession.
If remote access is used, the find.z-wave.me service will issue an additional token called ZBW_SESSID.
Please read in TOKEN_LIFETIME about the token lifetime, permanent tokens and token usage guide before selecting your preferred authentication method.
The first access should be made from the local network to set the initial administrator password. The administrator user is called admin. Access thru the remote access service (desribed in REMOTE_AUTHENTICATION) is not available until the administrator password is set.
To be able to send API requests, you need to get the session token using GET request to the URL
/ZAutomation/api/v1/system/first-access
The session token is stored in the reply as:
Below is an example of the session token request with curl.
curl -X GET http://192.168.1.109:8083/ZAutomation/api/v1/system/first-access -D -
Example of a successful response:
[Successful response]
HTTP/1.1 200 OK
Server: Mongoose/6.4
Content-Type: application/json; charset=utf-8
X-API-VERSION: 2.0.1
ZWAYSession: 75817f4d-1ad2-a595-fb21-2bda3d053510
Set-Cookie: ZWAYSession=75817f4d-1ad2-a595-fb21-2bda3d053510; Path=/
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS
Access-Control-Allow-Headers: Authorization, Accept-Ranges, Content-Encoding, Content-Length, Content-Range, Content-Type, ETag, X-API-VERSION, Date, Cache-Control, If-None-Match, Content-Language, Accept-Language, X-ZBW-SESSID, ZWAYSession
Access-Control-Expose-Headers: Authorization, Accept-Ranges, Content-Encoding, Content-Length, Content-Range, Content-Type, ETag, X-API-VERSION, Date, Cache-Control, If-None-Match, Content-Language, Accept-Language, X-ZBW-SESSID, ZWAYSession
Connection: keep-alive
Date: Wed, 02 Mar 2022 13:17:41 GMT
Content-Length: 667
{
"data": {
"defaultProfile": {
"id": 1,
"role": 1,
"login": "admin",
"name": "Administrator",
"lang": "en",
"dashboard": [],
"interval": 2000,
"devices": [],
"rooms": [
0
],
"expert_view": true,
"hide_all_device_events": false,
"hide_system_events": false,
"hide_single_device_events": [],
"email": "admin@mail.com",
"skin": "",
"night_mode": false,
"beta": false,
"uuid": "03b97bd3-964b-4cb4-884f-e83183e8071e",
"sid": "75817f4d-1ad2-a595-fb21-2bda3d053510",
"showWelcome": true
},
"firstaccess": true,
"uuid": "42e955ed-c166-c19d-59c4-acf391cf9f0a",
"serial": "42e955ed-c166-c19d-59c4-acf391cf9f0a",
"mac": "b8:27:eb:f3:ed:9f",
"remote_id": 177252,
"ip_address": "192.168.1.109"
},
"code": 200,
"message": "200 OK",
"error": null
}
The administrator password can be set by sending the new password in JSON format using PUT to the URL
/ZAutomation/api/v1/auth/update/1User credentials should look like (the email field is optional):
{"id": 1, "password": "12345678", "passwordConfirm": "12345678", "email": "admin@mail.com"}
Below is an example of the administrator password setup:
curl -X PUT -H "ZWAYSession: 75817f4d-1ad2-a595-fb21-2bda3d053510" -H "Content-Type: application/json" -d '{"id":1,"password":"12345678","passwordConfirm":"12345678","email":"admin@mail.com"}' http://192.168.1.109:8083/ZAutomation/api/v1/auth/update/1 -D -
If used in local network, Z-Way can be directly addressed via
http://IP:8083
Note that if Z-Way is used in trusted network and only Z-Wave API is supposed to be used, you might consider to skip authentication and check option Public API access in Z-Wave Binding app.
Z-Way session can be obtained by sending login and password in JSON format using POST to URL
/ZAutomation/api/v1/loginUser credentials should look like:
{"login":"admin", "password":"admin"}
It is also possible to use Basic Authentication to transmit login and password.
In return the session will be sent in three forms:
Example of successful login will look like:
{
"data": {
"sid": "ba69cb5b-b2fd-5ce0-5b75-9bae3e8bc369",
"id": 1,
"role": 1,
"name": "Administrator",
"lang": "en",
"color": "#dddddd",
"dashboard": [],
"interval": 2000,
"rooms": [
0
],
"hide_all_device_events": false,
"hide_system_events": false,
"hide_single_device_events": []
},
"code": 200,
"message": "200 OK",
"error": null
}
Wrong login/password reply
{
"data": null,
"code": 401,
"message": "401 Unauthorized",
"error": "User login/password is wrong."
}
Once obtained, the session can be sent to the Z-Way server via the following ways:
Below are few examples of local authentication.
With cURL using Authentication Bearer token:
curl -H "Authorization: Bearer .../..." http://192.168.0.62:8083/ZAutomation/api/v1/...
With cURL using cookies:
curl -H "Accept: application/json" -H "Content-Type: application/json" -X POST -d '{"form": true, "login": "admin", "password": "admin"}' http://192.168.0.62:8083/ZAutomation/api/v1/login -c cookie.txt
curl http://192.168.0.62:8083/ZAutomation/api/v1/... -b cookie.txt
With cURL using Basic Authentication:
curl -u admin:admin http://192.168.0.62:8083/ZAutomation/api/v1/...
With wget using Basic Authentication:
wget –auth-no-challenge –user=admin –password=pwd 192.168.0.62:8083/ZAutomation/api/v1/...
From the browser using jQuery and Basic Authentication:
jQuery('img').click(function() {
jQuery.ajax({
url: "http://192.168.0.62:8083/ZAutomation/api/v1/...",
beforeSend: function (xhr) { xhr.setRequestHeader ("Authorization", "Basic " + btoa("admin" + ":" + "password")); }
});
});
If not disabled by the user, Z-Way provides remote access service to the controller via
https://find.z-wave.meSee section 3.3 for more information on the Z-Way remote access service.
This service accepts Z-Way Platform ID , username and password, checks entered credentials agains your Z-Way and if accepted returns back two sessions ZWAYSession and ZBW_SESSID in two forms:
The session can be obtained by
https://find.z-wave.me/zboxweb
https://find.z-wave.me/zboxwebwith form data act=auth&login=id/admin&pass=password
https://find.z-wave.me/zboxweb?act=auth&login=id/admin&pass=password
https://find.z-wave.me/zboxwebwith form data act=login&boxid=id&login=admin&pass=password
POST request with act=login will set cookies and redirect to the / of the Z-Way (in most cases it then redirects to /smarthome/). If you want the user to be redirected to some specific URL after log in add one more parameter ruri=... (see examples below).
GET and POST request with act=auth will return the token and set cookies accordingly. No redirect takes place in this case. This way is better for integrations thru the API.
The obtained session will be returned
The credential can be used in subsequent requests in one of the three forms listed below (in order they are checked in Z-Way):
Below are examples of remote authentication.
With cURL using Authentication Bearer token:
curl -H 'Authorization: Bearer .../...' https://find.z-wave.me/ZAutomation/api/v1/...
With cURL using cookies:
curl -H 'Accept: application/json' -X POST -d 'act=login&boxid=132339&login=admin&pass=admin1' https://find.z-wave.me/zboxweb -c cookie.txt
curl https://find.z-wave.me/ZAutomation/api/v1/... -b cookie.txt
If you want the user to be redirected to a specific page after login, you can also use the following url:
https://find.z-wave.me/zboxweb?ruri=/expertor
https://find.z-wave.me/zboxweb?ruri=/expert&id=123456&login=adminto pre-fill Z-Way Platform ID and user name.
In some cases one might need to get a remote authentication token based on a local authentication token and remote ID. To do this make a request to
https://find.z-wave.me/zboxweb?act=session_login&zboxid=idwhere id is remote ID and the local token is passed via the Authorization Bearer header.
For example:
curl -H 'Authorization: Bearer /0fa324dc-b089-754e-8379-01fc8ec5a446' 'https://find.z-wave.me/zboxweb?act=session_login&zboxid=123456' -c cookie.txt
The tables below describe possible errors returned by the remote access service. Errors are order exactly as the request is handled.
Authentication on https://find.z-wave.me/zboxweb with act=login:
Condition | HTTP code | Redirect URL |
Box not connected to the server | 302 |
https://find.z-wave.me/zboxweb?err=bad_login&ruri=/ |
Box connected, but default login/password admin/admin is used | 302 |
https://find.z-wave.me/zboxweb?err=insecure_login_pass&ruri=/ |
Box not connected to find.z-wave.me | 502 | |
Box connected, but login/password is invalid | 302 |
https://find.z-wave.me/zboxweb?err=bad_login&ruri=/ |
Box connected and authentication is successful | 302 |
https://find.z-wave.me/ |
Authentication on https://find.z-wave.me/zboxweb with act=auth:
Condition | HTTP code | HTTP error message |
Box not connected to the server | 403 | Forbidden
Wrong username or password |
Box connected, but default login/password admin/admin is used | 403 | insecure_login_pass
Your (username, pass) pair is insecure |
Box not connected to find.z-wave.me | 502 | |
Box connected, but login/password is invalid | 403 | Forbidden
Wrong username or password |
Box connected and authentication is successful | 200 |
Subsequent requests to https://find.z-wave.me/PATH, where PATH is not equal to zboxweb or zboxweb/*:
Condition | HTTP code | Redirect URL |
No token (no Authorization header, no X-ZBW-SESSID header, no ZBW_SESSID cookie) | 307 |
https://find.z-wave.me/zboxweb/r//PATH |
Invalid token (incorrect or expired or revoked) | 307 |
https://find.z-wave.me/zboxweb/r//PATH |
Box not connected to find.z-wave.me | 502 | |
Server side error | 500 |
Each time you log in using methods described above a new session is created. This session will live for one week (might be changed on Z-Way side and on find.z-wave.me side, do not rely on this period).
Those login methods are good to obtain the token once to the access the API via token or for rare single actions. Creating a new session each time will pollute user profile in Z-Way.
Tokens can be deleted at any time in User management (4.3.1) panel. This will lead to log-out of the application that is using this token. This application will loose access to Z-Way and will require again a log in via username and password.
To use tokens long term we recommend to make them permanent. You can make any token permanent by pressing a button in User management (4.3.1). Permanent token do never expire until deleted. Only Z-Way token can be made permanent that way.
To make both find.z-wave.me and Z-Way token permanent use Authentication Bearer way to transmit tokens.
Both find.z-wave.me remote access service and Z-Way do support Authentication Bearer HTTP header. This header is commonly used in OAuth2 authentication protocol, but you can use it without OAuth2 too.
Z-Way and find.z-wave.me will automatically mark tokens as permanent if they are received in Authentication Bearer header.
The format of the header is: Authorization: Bearer ZBW_SESSID/ZWAYSession. Note that if direct access is needed (not via find.z-wave.me), ZBW_SESSID can be omitted. In this case a slash / should still preceed ZWAYSession
A typical application should take usename and password to log in via find.z-wave.me and get both ZWAYSession and ZBW_SESSID tokens to form Authentication Bearer token. The username and password should then be erased from the memory, while Authentication Bearer token should be saved for future use. It is not recommended to save user credentials.
Like other tokens user can delete the permanent token in the User management (4.3.1) panel.
Z-Way do also support OAuth2 authentication method to provide access to smart home devices to third party services like voice assistances (Amazon Alexa, Google Home, Yandex Alice), IFTTT and some others.
To get integrated one should provide to the Trident IoT team redirect_uri and get back OAuth2 server URL, client_id and client_secret. Please contact support@tridentiot.com.
To let the user authenticate and grant access to his devices you should redirect him to one of the two pages:
https://z-wave.me/oauth2/?state=...&redirect_uri=https://...&response_type=code&client_id=...
https://find.z-wave.me/zboxweb?lang=...&hide_diruris=1&ruri=/smarthome/%23/oauth2%3Fstate%3D...%26redirect_uri%3Dhttps%3A%2F%2F...%26response_type%3Dcode%26client_id%3D...
In this request:
/smarthome/#/oauth2?state=...&redirect_uri=https://...&response_type=code&client_id=...
After the user logs in to Z-Way he is asked to mark rooms and devices to be granted access to. A new user will then be created with the corresponding permissions and a session token will be generated. The session is saved on the Trident IoT OAuth2 server together with an authorization code.
On the next step the user is redirected back to the service using URL
redirect_uri?state=...&code=...In this request:
The service can now make a POST request to the Trident IoT OAuth2 server on
/tokenproviding client_id, client_secret and code. The request can use JSON format or form data or url encoded form. The response is a JSON with access_token or error message.
The resulting access_token is to be used in the Authentication Bearer HTTP header. This token never expires unless deleted by the user.
[Request of Access token via Authorization code (JSON format)] Content-type: application/json { "client_id": "...", "client_secret": "...", "code": "..." }
[Request of Access token via Authorization code (URL encoded form)] Content-Type: application/x-www-form-urlencoded client_id=...&client_secret=...&code=... (URL encoded!)
[Request of Access token via Authorization code (form data)] Content-Type: multipart/form-data; boundary=----WebKitFormBoundarytufRVLxOz9VdsQbA ------WebKitFormBoundarytufRVLxOz9VdsQbA Content-Disposition: form-data; name="client_id" ... ------WebKitFormBoundarytufRVLxOz9VdsQbA Content-Disposition: form-data; name="client_secret" ... ------WebKitFormBoundarytufRVLxOz9VdsQbA Content-Disposition: form-data; name="code" ... ------WebKitFormBoundarytufRVLxOz9VdsQbA--
[Access token successfuly retrieved] { "access_token": ".../...", "token_type": "bearer" }
[Authorization code is invalid (400 Bad request)] { "error": "invalid_grant" }
[Wrong credentials (400 Bad request)] { "error": "invalid_client" }
You can run Z-Way on one machine and plug the Z-Wave transceiver on another one.
On the machine where Z-Way is running run the following command in terminal:
socat -d -d -d UNIX-LISTEN:/tmp/zwave,reuseaddr,fork TCP:192.168.0.100:8088
On the machine where the Z-Wave transceiver is, execute:
socat -d -d -d TCP-LISTEN:8088,reuseaddr,fork FILE:/dev/ttyUSB0,nonblock
For z-way-srv-test: change the port name to unix:/tmp/zwave
like shown here:
LD_LIBRARY_PATH=./libs ./z-way-srv-test unix:/tmp/zwave 8083 0 0 0 0
For Z-Way Server: change port in SmartHome UI:
Go in Management->Apps->Active->Z-Wave->change the port /dev/ttyUSB0 to unix:/tmp/zwave.
Make sure to adjust the IP address of the machine where the Z-Wave transceiver is. You can also change the location of Unix socket /tmp/zwave
and the port 8888 to something else.
In some cases (like using Docker with no access to TCP/IP), you might want to pass the Z-Wave transceiver via Unix sockets.
On the host machine where the Z-Wave transceiver is, execute:
socat -d -d -d UNIX-LISTEN:/data/zwave FILE:/dev/ttyUSB0,nonblock
For z-way-srv-test: change the port name to unix:/data/zwave
like shown here:
LD_LIBRARY_PATH=./libs ./z-way-srv-test unix:/data/zwave 8083 0 0 0 0
For Z-Way Server: change port in SmartHome UI:
Go in Management->Apps->Active->Z-Wave->change the port /dev/ttyUSB0 to unix:/data/zwave.
Here /data/
is a folder on the host mapped inside the Docker as /data/
using -v /data:/data
. You can also change both folders to something else.
Remote access service is provided by the zbw package. To install it, please follow the guide below:
distro=$(lsb_release -a 2>/dev/null | grep Codename | awk '{print $2}') &&
distro_id=$(lsb_release -a 2>/dev/null | grep "Distributor ID" | awk '{print $3}' | tr '[:upper:]' '[:lower:]') &&
architecture=$(uname -m) && \
if [ "$architecture" == "aarch64" -o "$architecture" == "armv7l" ]; then arch_tag="[arch=armhf]"; arch_apt=":armhf"; dpkg --add-architecture armhf; fi &&
if [ "$architecture" == "aarch64" -o "$architecture" == "armv7l" -o "$architecture" == "armhf" ]; then zbw_distro_id="raspbian"; else zbw_distro_id="${distro_id}"; fi &&
wget "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xbc04cd36834c6ad41c8b9eb15b2f88a91611e683" -O /etc/apt/trusted.gpg.d/z-wave-me.asc &&
echo "deb ${arch_tag} https://repo.z-wave.me/z-way/${zbw_distro_id} ${distro} main" >/etc/apt/sources.list.d/z-wave-me.list &&
apt-get update -y &&
apt-get install -y zbw${arch_apt}
After installation, you can find the remote ID in SmartHome UI in the Menu -> Settings -> Remote Access.
To get remote access to Z-Way, go to the https://find.z-wave.me, enter your ID, username, and password.
NOTE: Please note that this service is provided by a third party company. Trident IoT is not responsible for its operation!
To use Trident IoT Neptune development board (DKNCZ20) you need to install elcap, build the serial API project and flash it in the DKNCZ20 board.
Select the latest release for your platform from the releases page. Unzip it and add the executable (elcap on MacOS and Linux, elcap.exe on Windows) to your path.
Create a new project called serial_api using Z-Wave SDK based on serial_api template and build it:
$ ./elcap new
Creating a new project...
Project Name: serial_api
name has been set to serial_api
Project Path (serial_api):
path has been set to serial_api
1. v2025.03.00-beta00
Select SDK Version (1):
1. bootloader
2. zigbee
3. z-wave
Select category (1): 3
1. led_bulb
2. sensor_pir
3. door_lock_keypad
4. power_strip
5. serial_api
6. wall_controller
7. switch_on_off
8. window_sensor
9. multilevel_sensor
Select template (1): 5
1. T32CZ20B
Select target (1):
******
[project]
name = "serial_api"
category = "z-wave"
target = "T32CZ20B"
default_hex = "neptune_usb_t32cz20_signed_combined.hex"
[sdk]
version = "v2025.03.00-beta00"
******
Do you confirm generation? [y/n] (y):
$ cd serial_api/
$ ../elcap build
Find device Serial Number
> ../elcap device discover
Connection | Serial Number | IP Address | Name
-----------+---------------+------------+----------------------
USB | 900039398 | | J-Link-OB-K22-CortexM
Flash the board:
$ ../elcap flash --usb 900039398 --file zw_serial_api_controller_1.0.0_00000000_neptune_usb_t32cz20_us_lr_debug_signed_combined.hex
Make sure to change the usb id of to your board id
Consult elcap documentation for more information.