Configure multiple zwave nodes at the same time

I have a few automations set to send the zwave.set_config_parameter on certain triggers. Currently, If I want to send the same configuration to multiple nodes, I repeat the service data under the action for each node I want to configure. This is resulting in a very clunky automation file and there is a slight delay while each node is updated, one at a time. Is there a way to send out the same parameters for multiple nodes?

For example, setting the LEDs on my z-wave switches to red when the alarm is armed:

  • service: zwave.set_config_parameter
    data_template: {
    “node_id”: 6,
    “parameter”: 14,
    “value”: “Red”,
    “size”: 1
    }

I have to repeat this for each node. I haven’t found a way to enter multiple nodes in the data template that works (if its possible)…

This would also be helpful to update the config settings on groups of similar devices rather than having to do each one, one at a time.

I’m wondering the exact same thing. I’m in the process of moving from SmartThings to HA and have a bunch of HomeSeer WD200+ dimmers. To set the LED colors I need to send zwave.set_config_parameter commands to each dimmer. Hard coding 30+ dimmers into a node red flow doesn’t sound scalable. There must be a way to iterate over a set of node_id’s or send multiple node_id’s in a single paylod.

Not only that, but with Smartthings, I was able to change the colors on multiple devices all at once. With HA, it goes one by one and can take 30 up to 30 seconds to get through all of them.

Just a quick update. I don’t think you can send a single zwave command that affects a group of zwave devices however I did write a node-red function that can loop through a list of device id’s and send the same command to them:

First I created a node-red global context (variable) by editing the node-red settings.js and adding my HomeSeer dimmers and switches node-id’s to an array:

functionGlobalContext: {
    // os:require('os'),
    // jfive:require("johnny-five"),
    // j5board:require("johnny-five").Board({repl:false})
    dimmers:[4, 6],
    switches:[5, 7]
},

Then, using a function node in node-red:

var outputMsgs = [];
var nodeIDs = global.get(‘dimmers’);

// Green, Yellow, White, Cyan, Red, Magenta, Blue, Off
var color = “Magenta”;

// LED 1 = 21
// LED 2 = 22
// LED 3 = 23
// LED 4 = 24
// LED 5 = 25
// LED 6 = 26
// LED 7 = 27
var led = 27;

var arrayLength = nodeIDs.length;

for (var i = 0; i < arrayLength; i++) {
outputMsgs.push( { payload:{“data”:{“node_id”: “” + nodeIDs[i] + “”,“parameter”:"" + led + “”,“value”:"" + color + “”}} } );
}

return [ outputMsgs ];

After the function node, place a Home Assistant “call service” node that simply processes the message from the function:
call%20service%20node

Node red will call the zwave set_config_parameter function for each node in the dimmers array. At least this makes the flow simple.

Is there a solution to this problem without coding something custom? I’d like to do the same thing with a specific group of zwave devices (Aeotec nano dimmers in this case). I tried setting up a group that includes each zwave node but I can’t find a way to run service.set_config_parameter for the entities in the group. I can only do each individually.

1 Like