The Z-Wave documentation is helpful in this matter. I managed to figure out several things (and confirmed them using a low-level Z-Wave tool). For instance:
-
CMD_CLASS_ASSOCIATION
is NOT supported by the ARZ Z-Wave (2013 version) although you should be able to perform remote association (from device to device without controller) according to the manual. -
SWITCH_ALL
is a command class that allows devices to respond toSWITCH_ALL
commands on a pre-configured manner. The idea is:- You can configure a device to respond (or not) to
SWITCH_ALL
commands (ALL_ON
,ALL_OFF
). There are 4 options:- obey only
ALL_ON
- obey only
ALL_OFF
- obey both
- obey neither
- obey only
- When a device receives a SWITCH_ALL command, it will first check how it is configured to respond to these commands.
You can set this behaviour in the Thing in OH2 Paper UI, but I donât know however if the Z-Wave binding currently supports
SWITCH_ALL
commands to be propagated from OH2 (or if itâs even desirable). - You can configure a device to respond (or not) to
-
SPECIFIC_TYPE_CLASS_B_MOTOR_CONTROL
implies that the device MUST support at least:COMMAND_CLASS_SWITCH_BINARY
version 1COMMAND_CLASS_SWITCH_MULTILEVEL
version 3COMMAND_CLASS_MANUFACTURER_SPECIFIC
(no specific version)COMMAND_CLASS_VERSION
(no specific version)
-
In addition,
SPECIFIC_TYPE_CLASS_B_MOTOR_CONTROL
implies:COMMAND_CLASS_BASIC
must be mapped toCOMMAND_CLASS_SWITCH_MULTILEVEL
- The device is endpoint-aware, but not necessarily position-aware (if position awareness is not supported, the position return value
0xFE
means âundefined position or in-between endpointsâ, otherwise it only means âundefined positionâ - e.g. after a power cut). - The device MAY support positional awareness, and MAY use estimations to provide position info (in the range
0x01
â0x63
) - The Primary Switch Type SHOULD be
0x02
(Up/Down).
So the Fakro ARZ â2013â version seems to properly report its capabilities.
While using a low-level Z-Wave tool, I tested several command classes directly. It appears that:
BASIC_SET(0x00)
â closes the roller shuttersBASIC_SET(0xFF)
â opens the roller shutters- When the roller shutters opens, sending
BASIC_SET(0x00)
stops the shutters - When the roller shutters closes, sending
BASIC_SET(0xFF)
stops the shutters BASIC_GET()
â- Fully closed â returns
0x00
- Fully opened â returns
0xFF
- Opening or closing, or stopped in-between end positions â returns
0xFE
- Fully closed â returns
BASIC SET
only supports full open/close commands. You can stop the roller shutters to land them in-between end positions by issuing the inverse end position while the roller shutters are operating.
While using a low-level Z-Wave tool, I verified that SWITCH_MULTILEVEL
works the same way as BASIC
, and that SWITCH_MULTILEVEL_STOP
effectively stops the roller shutters when in motion. It is more reliable than using the inversion approach from BASIC_SET
. I also confirm that:
- The ARZ Z-Wave shutters do not support positional awareness (only endpoint awareness is supported)
- The position of the ARZ Z-Wave shutters can be requested with a
BASIC_GET
orSWITCH_MULTILEVEL_GET
command. Only the following 3 values will ever be returned:- 0x00 (fully closed)
- 0xFF (fully open)
- 0xFE (after a power cut: position unknown; otherwise: position in-between endpoints)
The position value 0xFE
is also returned while the roller shutters are operating (which makes sense and is expected).
This is good and bad news:
- The bad: the ARZ Z-Wave (2013 version) does not support positional awareness as it lacks support for this functionality. It also lacks the option some other similar devices offer to provide a rough estimate of an intermediate position for the same reason.
- The good: the Z-Wave binding should be able to properly report the position (state) of the roller shutters at all times. And that should be able to address the problems I currently have, in that today Iâm still unable to get reliable state updates from the roller shutters. The problem is that I donât know how.
Maybe @chris could shed some light on the way the Z-Wave binding currently manages positional updates and what it expects/needs from the device XML info to properly do its job? I would expect it should be possible to poll the device for a given time. Unless the device should be polled every X minutes?