After a few years of dipping my toe in the water I’m finally going full steam with migrating to Home Assistant. Multicast functionality with ZwaveJS is amazing, I can almost instantly turn on/off all my lights in the house and I’ve been struggling to implement the same for notifications. With @kreene1987 help, I can now update every notification on every red series dimmer almost instantly. I have constant notifications set, so all my switches are constantly displaying a state (alarm is armed, something is open, person detected on property, all clear, etc). This method is MUCH faster than anything else I’ve tried including bulk set partial param method. Hopefully this helps someone else, here are my setting under scripts. I prefer Mode as “Single” but command class and property should be the same for the red series dimmer and for the value use the calculator Inovelli Switch Toolbox
If you are getting an error when attempting to multicast to your switches confirm in the zwavejs2mqtt control panel that your switch has the additional config paramater on it as seen below
If that param is missing, it is because zwavejs2mqtt is missing this in the config, you can add it manually as documented in this thread or force create by sending a bulk partial param config command to all the switches like this
after all your switch LEDS change to reflect the change you will need to restart the zwavejs2mqtt server and you should now see the additional param added for your switches.
I’ve started changing some of my automations over to multicast, too. It’s very nice!
Personally, I hope that the zwavejs integration will some day be smart enough to recognize when you’re trying to send the exact same command to multiple devices and just do multicast transparently under the hood.
The command class, property, and value are the only differences. This is for “On”, and "Off is just changing the value to 0. I only have Red Dimmers installed so these setting may not work for their on/off switches. They would probably need a few different values than what is in the fields below.
Okay here’s what I ended up with. For context, I have two light switches that control my Hallway lighting and I like them to be in sync with each other (treated as a single light). The light group is what I used to control them before. It’s reasonably fast, but as far as I can tell it doesn’t take advantage of ZWave Multicasting (since there is a slight delay before the second light responds. I did end up using it as the device to get the current state and brightness for the multicast template.
The on/off was super fast (as expected), brightness adjusting was kind of slower than I expected, actually it was a little slower than using the light group directly, so there may be some further optimizations that could be done here. Using the light group as a device to get the current brightness from may be a contributor for why it’s behaving a little slower.
Indentation? I’m thinking the target and data should be indented 2 spaces in from the service call.
I haven’t tried this in an automation, but maybe someone who has it working in an automation could post their code snippet from the automation and use the preformatted code tag (looks like </>) from the top of the response box.
This is strange. I updated all my dimmers to the latest firmware, 1.57 I believe, and the latest bin (not sure what that is). Here is a screenshot from the zwavejs2mqtt control panel showing those parameters on one of my red series dimmers. My zwavejs2mqtt version is currently on 0.24.1
I am also using a Nortek zwave/zigbee usb stick… Is it possible only certain sticks support this functionality? And also, broadcast = true does not work for me either. It throws an error but I assumed it was because I have multiple zwave sticks and multiple HA instances.
If I configure the automation to only send to one device, Z-WaveJS routes it via zwave_js.set_value and that works - so the params are there. Not sure why it fails with zwave_js.multicast_set_value
This is the warning that shows up in HA:
Passing the zwave_js.multicast_set_value service call to the zwave_js.set_value service since only one node was targeted
Hmm @flipontheradio your zwavejs2mqtt has an extra param that I don’t have. The last one 12-112-0-16, and I have upgraded to the latest firmware on my dimmer (1.57, 1.44)
Yeah this gets into partial parameters. Essentially they have hidden 4 parameters within one by using the length of the parameter to their advantage. We are trying to set just the one parameter, but I think ZJS sees this as 4 with different property keys. The Zwave.bulk_set_partial_parameters works to set this programatically, but I can’t get around it with multicast for partials.
Here’s a thought, may be WAY off base… All my switches were factory reset and then paired to the stick. I’ve never set those params NOT using the multicast, so I’m wondering if you have set them manually in the past if multicast is unable to then overwrite? I’m grasping at straws…