HA dimmer weird lag, Zen31

I bought a Zen31 dimmer and it has a weird lag when I use HA to turn it on. The light turns on instantly but the state of the light.zen31 in Developer Tools doesn’t turn on until 5 seconds later.

Some debugging… Here’s the Z-Wave log when turning on.

2022-09-26 21:39:08.157 INFO ZWAVE: Node 4: value updated: 38-1-targetValue 0 => 255
2022-09-26 21:39:13.214 INFO ZWAVE: Node 4: value updated: 38-1-targetValue 255 => 99
2022-09-26 21:39:13.214 INFO ZWAVE: Node 4: value updated: 38-1-duration 0s => 0s
2022-09-26 21:39:13.215 INFO ZWAVE: Node 4: value updated: 38-1-currentValue 0 => 99

Notice the 5 second delay before currentValue changes.

When turning off, there’s no delay. Works great.

2022-09-26 21:40:37.964 INFO ZWAVE: Node 4: value updated: 38-1-currentValue 99 => 0
2022-09-26 21:40:37.965 INFO ZWAVE: Node 4: value updated: 38-1-targetValue 99 => 0

Is it because of the 255 => 99 dance? Should I blame this on Zooz? HA? OpenZWave? I don’t know how to isolate the problem. (I’m using ZWave2Mqtt.)

Here’s turning on at silly-log level. You can still see the 5 second delay. Interestingly, the communication that results in the currentValue changing seems to be initiated by HA. It’s not that the Zen31 is just slow, it’s that it never sent the message HA wanted to see (perhaps because HA didn’t ask).

2022-09-27T04:42:48.836Z CNTRLR [Node 004] [setValue] calling SET_VALUE API MultilevelSwitchCCAPI:
property: targetValue
property key: undefined
optimistic: true
2022-09-27T04:42:48.842Z SERIAL » 0x01130013040c600d00016c01ab042601ffff250853 (21 bytes)
2022-09-27T04:42:48.843Z DRIVER » [Node 004] [REQ] [SendData]
│ transmit options: 0x25
│ callback id: 8
└─[MultiChannelCCCommandEncapsulation]
│ source: 0
│ destination: 1
└─[SupervisionCCGet]
│ session id: 43
│ request updates: true
└─[MultilevelSwitchCCSet]
target value: 255
duration: default
2022-09-27T04:42:48.846Z SERIAL « [ACK] (0x06)
2022-09-27T04:42:48.850Z SERIAL « 0x0104011301e8 (6 bytes)
2022-09-27T04:42:48.851Z SERIAL » [ACK] (0x06)
2022-09-27T04:42:48.852Z DRIVER « [RES] [SendData]
was sent: true
2022-09-27T04:42:48.865Z SERIAL « 0x010500130800e1 (7 bytes)
2022-09-27T04:42:48.866Z SERIAL » [ACK] (0x06)
2022-09-27T04:42:48.867Z DRIVER « [REQ] [SendData]
callback id: 8
transmit status: OK
2022-09-27T04:42:48.898Z SERIAL « 0x010f0004000409600d01006c022bff002f (17 bytes)
2022-09-27T04:42:48.899Z SERIAL » [ACK] (0x06)
2022-09-27T04:42:48.900Z DRIVER « [Node 004] [REQ] [ApplicationCommand]
└─[MultiChannelCCCommandEncapsulation]
│ source: 1
│ destination: 0
└─[SupervisionCCReport]
session id: 43
more updates follow: false
status: Success
duration: 0s
2022-09-27T04:42:48.902Z CNTRLR [Node 004] [setValue] result of SET_VALUE API call for MultilevelSwitchCCAPI:
(SupervisionResult)
status: Success
2022-09-27T04:42:48.902Z CNTRLR [Node 004] [setValue] updating value with event
2022-09-27T04:42:48.902Z CNTRLR [Node 004] [translateValueEvent: value updated]
commandClass: Multilevel Switch
endpoint: 1
property: targetValue
propertyKey: undefined
internal: false
secret: false
event source: driver
2022-09-27T04:42:48.902Z CNTRLR [Node 004] [translateValueEvent: value updated]
is root endpoint: false
is application CC: true
should hide root values: true
2022-09-26 21:42:48.903 INFO ZWAVE: Node 4: value updated: 38-1-targetValue 0 => 255
2022-09-27T04:42:53.905Z SERIAL » 0x010d00130406600d00012602250987 (15 bytes)
2022-09-27T04:42:53.906Z DRIVER » [Node 004] [REQ] [SendData]
│ transmit options: 0x25
│ callback id: 9
└─[MultiChannelCCCommandEncapsulation]
│ source: 0
│ destination: 1
└─[MultilevelSwitchCCGet]
2022-09-27T04:42:53.909Z SERIAL « [ACK] (0x06)
2022-09-27T04:42:53.913Z SERIAL « 0x0104011301e8 (6 bytes)
2022-09-27T04:42:53.914Z SERIAL » [ACK] (0x06)
2022-09-27T04:42:53.915Z DRIVER « [RES] [SendData]
was sent: true
2022-09-27T04:42:53.929Z SERIAL « 0x010500130900e0 (7 bytes)
2022-09-27T04:42:53.930Z SERIAL » [ACK] (0x06)
2022-09-27T04:42:53.931Z DRIVER « [REQ] [SendData]
callback id: 9
transmit status: OK
2022-09-27T04:42:53.958Z SERIAL « 0x010f0004000409600d01002603636300b0 (17 bytes)
2022-09-27T04:42:53.959Z SERIAL » [ACK] (0x06)
2022-09-27T04:42:53.961Z CNTRLR [Node 004] [translateValueEvent: value updated]
commandClass: Multilevel Switch
endpoint: 1
property: targetValue
propertyKey: undefined
internal: false
secret: false
event source: undefined
2022-09-27T04:42:53.961Z CNTRLR [Node 004] [~] [Multilevel Switch] targetValue: 255 => 99 [Endpoint 1]
2022-09-27T04:42:53.962Z CNTRLR [Node 004] [translateValueEvent: value updated]
is root endpoint: false
is application CC: true
should hide root values: true
2022-09-26 21:42:53.963 INFO ZWAVE: Node 4: value updated: 38-1-targetValue 255 => 99
2022-09-27T04:42:53.963Z CNTRLR [Node 004] [translateValueEvent: value updated]
commandClass: Multilevel Switch
endpoint: 1
property: duration
propertyKey: undefined
internal: false
secret: false
event source: undefined
2022-09-27T04:42:53.964Z CNTRLR [Node 004] [~] [Multilevel Switch] duration: {"value":0,"unit":"s [Endpoint 1]
econds"} => {"value":0,"unit":"seconds"}
2022-09-27T04:42:53.964Z CNTRLR [Node 004] [translateValueEvent: value updated]
is root endpoint: false
is application CC: true
should hide root values: true
2022-09-26 21:42:53.965 INFO ZWAVE: Node 4: value updated: 38-1-duration 0s => 0s
2022-09-27T04:42:53.965Z CNTRLR [Node 004] [translateValueEvent: value updated]
commandClass: Multilevel Switch
endpoint: 1
property: currentValue
propertyKey: undefined
internal: false
secret: false
event source: undefined
2022-09-27T04:42:53.966Z CNTRLR [Node 004] [~] [Multilevel Switch] currentValue: 0 => 99 [Endpoint 1]
2022-09-27T04:42:53.966Z CNTRLR [Node 004] [translateValueEvent: value updated]
is root endpoint: false
is application CC: true
should hide root values: true
2022-09-26 21:42:53.966 INFO ZWAVE: Node 4: value updated: 38-1-currentValue 0 => 99
2022-09-27T04:42:53.967Z DRIVER « [Node 004] [REQ] [ApplicationCommand]
└─[MultiChannelCCCommandEncapsulation]
│ source: 1
│ destination: 0
└─[MultilevelSwitchCCReport]
current value: 99
target value: 99
duration: 0s
2022-09-27T04:42:54.439Z SERIAL « 0x0114000400040e600d0100320221320097000000003d (22 bytes)
2022-09-27T04:42:54.441Z SERIAL » [ACK] (0x06)
2022-09-27T04:42:54.443Z CNTRLR [Node 004] [translateValueEvent: value updated]
commandClass: Meter
endpoint: 1
property: value
propertyKey: 66049
internal: false
secret: false
event source: undefined
2022-09-27T04:42:54.443Z CNTRLR [Node 004] [~] [Meter] value[66049]: 0 => 15.1 [Endpoint 1]
2022-09-27T04:42:54.443Z CNTRLR [Node 004] [translateValueEvent: value updated]
is root endpoint: false
is application CC: true
should hide root values: true
2022-09-26 21:42:54.444 INFO ZWAVE: Node 4: value updated: 50-1-value-66049 0 => 15.1
2022-09-27T04:42:54.445Z DRIVER « [Node 004] [REQ] [ApplicationCommand]
└─[MultiChannelCCCommandEncapsulation]
│ source: 1
│ destination: 0
└─[MeterCCReport]
type: Electric
scale: W
rate type: Consumed
value: 15.1
time delta: 0 seconds

Turning off at silly-log level. Works fine.

2022-09-27T04:47:03.659Z CNTRLR [Node 004] [setValue] calling SET_VALUE API MultilevelSwitchCCAPI:
property: targetValue
property key: undefined
optimistic: true
2022-09-27T04:47:03.666Z SERIAL » 0x01130013040c600d00016c01ae04260100ff250dac (21 bytes)
2022-09-27T04:47:03.667Z DRIVER » [Node 004] [REQ] [SendData]
│ transmit options: 0x25
│ callback id: 13
└─[MultiChannelCCCommandEncapsulation]
│ source: 0
│ destination: 1
└─[SupervisionCCGet]
│ session id: 46
│ request updates: true
└─[MultilevelSwitchCCSet]
target value: 0
duration: default
2022-09-27T04:47:03.673Z SERIAL « [ACK] (0x06)
2022-09-27T04:47:03.676Z SERIAL « 0x0104011301e8 (6 bytes)
2022-09-27T04:47:03.677Z SERIAL » [ACK] (0x06)
2022-09-27T04:47:03.677Z DRIVER « [RES] [SendData]
was sent: true
2022-09-27T04:47:03.689Z SERIAL « 0x010500130d00e4 (7 bytes)
2022-09-27T04:47:03.690Z SERIAL » [ACK] (0x06)
2022-09-27T04:47:03.691Z DRIVER « [REQ] [SendData]
callback id: 13
transmit status: OK
2022-09-27T04:47:03.721Z SERIAL « 0x010f0004000409600d01006c022eff002a (17 bytes)
2022-09-27T04:47:03.723Z SERIAL » [ACK] (0x06)
2022-09-27T04:47:03.723Z DRIVER « [Node 004] [REQ] [ApplicationCommand]
└─[MultiChannelCCCommandEncapsulation]
│ source: 1
│ destination: 0
└─[SupervisionCCReport]
session id: 46
more updates follow: false
status: Success
duration: 0s
2022-09-27T04:47:03.725Z CNTRLR [Node 004] [translateValueEvent: value updated]
commandClass: Multilevel Switch
endpoint: 1
property: currentValue
propertyKey: undefined
internal: false
secret: false
event source: undefined
2022-09-27T04:47:03.726Z CNTRLR [Node 004] [~] [Multilevel Switch] currentValue: 99 => 0 [Endpoint 1]
2022-09-27T04:47:03.726Z CNTRLR [Node 004] [translateValueEvent: value updated]
is root endpoint: false
is application CC: true
should hide root values: true
2022-09-26 21:47:03.726 INFO ZWAVE: Node 4: value updated: 38-1-currentValue 99 => 0
2022-09-27T04:47:03.727Z CNTRLR [Node 004] [setValue] result of SET_VALUE API call for MultilevelSwitchCCAPI:
(SupervisionResult)
status: Success
2022-09-27T04:47:03.727Z CNTRLR [Node 004] [setValue] updating value with event
2022-09-27T04:47:03.727Z CNTRLR [Node 004] [translateValueEvent: value updated]
commandClass: Multilevel Switch
endpoint: 1
property: targetValue
propertyKey: undefined
internal: false
secret: false
event source: driver
2022-09-27T04:47:03.727Z CNTRLR [Node 004] [translateValueEvent: value updated]
is root endpoint: false
is application CC: true
should hide root values: true
2022-09-26 21:47:03.728 INFO ZWAVE: Node 4: value updated: 38-1-targetValue 99 => 0

Your switch doesn’t report its level value when it’s turned on to the previous level (turn on). The zwave driver instead polls it 5 seconds later. The UI reverts back to the previous value when it doesn’t get a state update after 2 seconds.

Ignore the UI, or set a known brightness value. Turn-off works because it’s a known value, 0. The driver sends optimistic updates for known values.

New issue was added, for your case with successful Supervision reports: After successful supervised MultilevelSwitchCCSet (255) query the actual value quicker · Issue #5124 · zwave-js/node-zwave-js · GitHub