As far as what zwave association is, it’s really simple. Nothing to do with SmartThings, it’s part of the third-party zwave specification. Don’t make assumptions about it or overcomplicate it in your head. It’s super simple.
Every certified zwave device must respond to a “basic“ command. What the command does is different depending on the device class. For an on/off switch, it’s on and off. For a dimming device, it’s set to a specified dim level. And that’s it. The device might have a whole bunch of other fancy features like control settings or reporting battery level or changing the color of an LED indicator light: none of that is part of the basic command.
The purpose of the basic command was to let you send the same command to a bunch of different zwave devices and they would all do something. Their minimal function.
Remember that Z wave was developed before most people had smart phones or used them, and real-time reporting was not considered essential.
The purpose of direct association was to allow 1 zwave device, the trigger, to Very very quickly send a basic command To another zwave device without having to tell the hub about it. (The hub was left out of the equation just for latency reasons.)
The two most common use cases were to have a motion sensor turn on a light or a siren, and to have an auxiliary switch Turn on its master switch. This was done by having the trigger device send a “basic” command to the target device. Giving the trigger device permission to do so is setting up a “Z wave direct association.“
Honestly, that’s all there is to it. Device A sends a “basic command“ to device B. And the hub is not told about it.
The decision of whether or not to support direct association was left up to the individual device manufacturers. Because it requires more complexity and more memory, a lot of devices don’t implement it. But if they did implement it, they could use any Association group pretty much anywhere they want to do. (Take a look at some of the generation 4 fibaro devices for examples for how complicated this could get.)
OK, that was the original design for zwave direct Association and it worked really well up through generation four.
When you use the Z wave tweaker To create an association, you are configuring the firmware of the trigger device with a list of target devices that it will be allowed to send basic commands to.
(The reason why you sometimes see device IDs with commas is because it’s a device which has multiple endpoints, like a power strip with multiple sockets, and you have to specify each endpoint as a potential target. )
However, by generation five everybody was using smart phones and everybody wanted the hub to know about everything so that statuses could be kept in sync.
So direct association was changed significantly for zwave plus (which is generation five.)
First, every newly certified Z wave device must now support association group one, which is now called the “lifeline“ group and is intended only for communications to and from the hub. Things like battery life reports.
Use of any other association group is still optional and still left up to the manufacturer. And the other association groups still work the same way: trigger device sends a basic command to target device.
The alternative to association
Emphasis has shifted to an entirely different method which uses “central scene Commands.” With these, the trigger device sends a Scene number to the hub and then the hub is supposed to have logic to decide what to do next.
This means all the statuses stay in sync and multi protocol platforms like smartthings can use a Z wave device to trigger a A target device which uses a different protocol like zigbee or Wi-Fi.
And the target events can be much more complicated, all that stuff like changing the duration of a siren or changing the color of an indicator light.
Summary
So…Don’t over complicate it. Direct association other than the lifeline group is between 2 zwave devices who don’t talk to the hub. The trigger sends a “basic” command (that has a very specific meaning in a Z wave context) to the target device. The goal is to reduce latency for simple controls.
Some super complicated battery operated button remotes, like the aeotec Walmote, Use central scene commands for most stuff. But also include an option to use direct association, most commonly for dimming.
Did that help?