Open Zwave

From LinuxMCE
Jump to: navigation, search

OpenZWave is a library implementing the ZWave protocol. LinuxMCE 1204 and onwards uses this library to add ZWave support.


The support from LinuxMCE system is represented by an executable ZWave (it's placed in /usr/pluto/bin) which is the device implementation and a DeviceTemplate (1754) which is used to create LinuxMCE Devices for ZWave. There are high speed (4x 40kbps) and standard speed Z-Wave devices.

As of LinuxMCE 1204 the driver will be based on Open-Zwave

This page is intended as a placeholder for notes and documentation on how to setup and configure the Z-Wave network with Open-Zwave.

For information about what hardware to get look at Z-Wave Getting Started, or check out the Z-Wave Wiki Category.

Configuring and setting up

For configuration and settings we will use the ZWave master control device to send specific commands to the ZWave devices you want to change. To do that we will first need to open to the Send command to device popup-screen:

  • Go to Advanced -> Configuration -> Devices this shows the device tree on the left
  • Click the top level Zwave device with "Device Template #: 1754"
  • Click Send command to device button for the popup-screen to appear

From the drop-down menu, different commands can be chosen for different actions:

  • Adding a new device to the zwave network:
    • Select Add Node
    • Activate the inclusion mode on the device to include (usually triple click to send the "node info frame") - see your devices' manual for exact information
  • Stop adding a new device (if you want to cancel the command - no need to do this if you actually add a node):
    • Select Add Node
    • Set 48 Value (int) to 5
  • Remove a Device
    • Select Remove Node
    • Send the "node info frame" from the device (usually triple click a button on the device) - see your devices' manual for exact information
  • Remove a Failed Device
    • Select Remove Node
    • Set 48 Value (int) to -<node_you_want_to_remove> e.g. -7 to remove node 7

How to install and use ZWave

When starting a new ZWave network, it is recommended to first remove all node bindings to the controller, then reset the controller, to enable SUC/SIS mode. Send the Reset command to the ZWave device, with the argument set to "ResetController". This will clear out all network data on the ZWave interface, and will delete all nodes. (if you have enabled SUC/SIS mode previously this will still apply and you can skip this step)

Setting associations

You might need to set associations between your ZWave devices. The function of these associations can usually be found in your devices' manual. Generally, associations connects an action on one device with an action on another device. For instance, you can associate a button(switch) device with a dimmer device, and have the button control the dimmer.

  • Go to Advanced -> Configuration -> Devices this shows the device tree on the left
  • Click the top level Zwave device with "Device Template #: 1754"
  • Click Send command to device button for the popup-screen to appear

Select Set Association and fill in the parameters:

  • NodeID: The node to set associations for
  • GroupID: The association group on the node to set. Different groups often have different meaning(or actions if you will)
  • Nodes List: a comma separated list of node IDs to associate to.

To remove associations, use negative node ids in the Node List parameter.

Tweak advanced ZWave settings

ZWave network update related

Some of the following commands can be done from the Advanced ZWave page.

The StatusReport command can be used for several different actions, depending on the parameter:

  • NNU<nodeid> : RequestNodeNeighborUpdate
  • NU<nodeid> : RequestNetworkUpdate
  • HNN<nodeid> : HealNodeNetwork
  • HN : HealNetwork

You should know what you are doing before trying any of these.

Polling of values

As only some ZWave devices report their value to us, the ZWave DCE device will automatically tell OpenZWave to poll interesting values for us. This is the default and requires no setup by the user.

An alternative is to disable the automatic polling and set this on a per-value basis. This allows more flexibility in what values to poll and how often. If you use the default polling and have a lot of ZWave devices, you may find that updates to a particular value is too long apart. You can tweak this by specifying the values to poll by yourself, avoiding uninteresting values.

Turning on and off the automatic polling is done with the Polling device data on the advanced ZWave device page. (A reload is required after changing this). When automatic polling is off, you can look at the ZWave log to see what values it normally would poll for you. You can use this list to decide on what to poll.

  • Please note that turning off automatic polling does not remove current polling of values, it simply stops adding polling of new values/nodes that you add.

Setting polling for a single value is done with the Set Polling State command. The argument descriptions for this command is not quite correct for 1204, as they are the same as in previous LMCE versions (they will/should be fixed in the future).

  • PK_Device: The device ID you want to change polling for
  • Value To Assign: The value label (in OpenZWave) to change polling for
  • Report: The polling state (1=poll, 0=no poll)
  • Always: Store the current polling setup (will store polling state for all devices/value, not only the one specified in this command)
  • NodeID: Not used at the moment

The polling status of each value is stored in the OpenZWave configuration file (/etc/openzwave/zwcfg_<...>.xml) and is loaded again at startup.

If you already have a lot of nodes, you can turn off automatic polling, and use Set Polling State to disable polling for values that you are not interested in.

Update node information

You can request a manual update of the node information (command classes). To do this open the advanced page of the main ZWave device and send command to device. Send a "Resync node" command with the node id of the node you want to update the information from.

It should normally not be necessary to do this, as the node information is updated at the first reload after it was added. However, it can be useful if for some reason the node information was not correctly set or if you have replaced a node which may have other command classes.