ZwaveJS2MQTT + LZW31-SN - any way to send a "simulated" paddle press?

I have LZW42 lights associated in a group with various LZW31-SN dimmers that have “ProtectionbySequence” on local protection, so that they instantly turn off and on when I am using the physical dimmer switch without cutting power.

I’d like to simulate the button presses in Home Assistant’s ZwaveJS2MQTT but I don’t know how exactly. Something to do with scenes and value 91? It’s mostly because the native light group HA feature is kind of slow, where bulbs turn off one at a time…

It sounds like you want to simply turn the switch on or off from HA. Take a look at the services light.turn_on and light.turn_off.

1 Like

This is a bit of the opposite way of handling this. What you are looking for is smart bulb mode.

Change the protection to off, then enable smart bulb mode 2. This will keep the load on 100% of the time (whether dimmer is on/off/dimmed). This is the recommended smart bulb setup.

I think that’s how it already is. The switch is associated with the bulbs and controls them quickly so the idea is to turn-on the switch so the bulbs react quicker than HA which is slow.

Multicast might help here, if it can be done for a light group

the idea is to turn-on the switch so the bulbs react quicker than HA which is slow.

Precisely. I tried out multicast and it’s better than standard HA light.toggle, and nearly as fast as group associations from the physical button. Unfortunately, multicast isn’t as reliable as pressing the button.

If I’m reading this right, you’d got association setup between the switch and bulbs and want to make use of the speed of that association when controlling the switch via your dashboard/automation/etc… It’s actually pretty simple.

In the config section of the dimmer just enable this.
[30-112-0-12-4] Association Behavior: Z-Wave Hub: Enabled

With that enabled, controlling the dimmer via HA will pass-through the association to your bulbs.

Thank you @MRobi – I would be thrilled if this method worked!

The issue there is that when controlling the LZW31-SN from Home Assistant, the dimmer, unlike the LZW42 bulbs, ignores “transition” service data, in seconds, so the lights come on gradually instead of immediately.

Strangely, it also appears to ignore the configured device settings in ZWaveJS:

When I press the physical button, ZWaveJS2MQTT shows this in the debug report:

Node xx: value notification: 91-0-scene-002 0
2021-12-01Txx:xx:xx.xxxZ CNTRLR « [Node 0xx] received CentralScene notification {
"nodeId": xx,
"ccId": "Central Scene",
"ccCommand": "0x03",
"payload": "0x718002"

When I toggle the dimmer in Home Assistant, ZWaveJS2MQTT shows this in the debug report:

INFO ZWAVE: Node xx: value updated: 38-0-currentValue 0 => 0
INFO ZWAVE: Node xx: value updated: 38-0-targetValue 0 => 255

You know, you’re right. I turn on my master bathroom light quite often through a double tap on my master bedroom switch. I’ve been telling myself for weeks I need to change the ramp rate setting for instant on since it dims up and then back down which makes me stand there at the switch until it turns off. I just took a look and it’s already set to immediate and is ignoring that when called through zwave. Completely unrelated to association though. I’ll test a few others tomorrow and see if they do the same.

@EricM_Inovelli - would love your insight as to the above – the LZW31-SN seems to ignore Z-wave “immediate” dim/ramp rate requests.

You are saying it does not use those configuration options on associated bulbs like it does on a locally attached load?

@EricM_Inovelli Precisely.

Not associated bulbs. The dimmers are ignoring the zwave ramp rate when set to immediate.

Scenario 1:
LZW36 in the master bedroom.
LZW31-SN in the master bathroom with zwave ramp rate set to immediate.
Double tap the LZW36 triggers an automation to turn the LZW31-SN light on.
Light turns on but ramps up/down even though ramp rate is set to immediate.

Scenario 2:
LZW31-SN in the kitchen
LZW31-SN in the living room with zwave ramp rate set to immediate, associated with 4 LZW42.
Double tap the LZW31-SN in the kitchen turns on the LZW31-SN in the living room which sends the association commands to the bulbs
LZW31-SN living room is ramping up even though zwave ramp rate is set to immediate.

Controlling them physically gives no ramp rate so the manual parameter is working.
Controlling them through an automation or the app causes them to ramp up/down regardless of the z-wave ramp rate setting.

Odd, mine turn on immediately when the parameters are set to 0 seconds.

FYI, HA sends a ramp to command when turning on and off, not a turn on command, so the ramp rate parameter doesn’t get used when turning on or off. Only the dimming speed parameter affect the speed when turned on by HA.

I think I have that the right way around, ramp rate is how quickly it turns on or off and dimming speed is how quickly the dim level adjusts when just changing the level but not turning it on or off.

Well, you can tell the switch to dim to 0% to turn it off or dim to a value above 0 when off to turns it on. That’s what HA does and the dimming speed is then used.

Let me make sure I’m understanding this… if you toggle an entity in HA or send a light.turn_on command it’s actually doing a “dim from 0 to 100”? If that’s the case it would explain why it’s still dimming up/down when a ramp rate is set to 0. So my question would be… how to make it instant?

Yes, you got it. Try a transition of zero, or set the zwave dimming rate to zero.

service: light.turn_on
  entity_id: light.kitchen_pot_lights
  transition: 0
  brightness_pct: 100

Very interesting… I’ll make that change in my flow and test it out.

Now how would you adjust this when controlling the entity? If I switch any of my entities on/off I’m still getting the same transition effect.

I’m not really understanding your question. I goofed up the code order so I fixed that.

Maybe I found the issue in the debug log. No matter what the ramp rate figure is, the [length] value that follows always appears to be ‘3’. The lights always take 3 seconds to transition. Weird.

2021-12-05 21:34:10.559 INFO ZWAVE: Calling api writeValue with 
args: [
nodeId: xx,
commandClass: 38,
endpoint: 0,
property: 'targetValue'
{ transitionDuration: '1' },
[length]: 3

2021-12-05 21:33:55.577 INFO ZWAVE: Calling api writeValue with args: [
nodeId: xx,
commandClass: 38,
endpoint: 0,
property: 'targetValue'
{ transitionDuration: '0' },
[length]: 3

Where did that log come from?

What I posted works in HA for me using zwaveJS2MQTT as the interface. I’ve tested it on 2 different instances.

Here is the zwaveJS log lines sending the request. A bunch follows acknowledging and such.

2021-12-06T03:54:06.815Z DRIVER » [Node 017] [REQ] [SendData]
                                  │ transmit options: 0x25
                                  │ callback id:      14
                                    │ session id:      19
                                    │ request updates: true
                                        target value: 99
                                        duration:     0s