Z-Wave Indicator class support

Halfway there at least. I’ll post an update after I work on it some more.

1 Like

Looks like this is as far as we can go at this point in time due to python-openzwave not having full indicator support. There’s no way to send the “INDICATOR_SET” and “INDICATOR_GET” Zwave commands at this time. :frowning:

Makes sense - is that library maintained by the OZW project? Thanks for looking into it.

1 Like

As far as I can tell yes, it’s maintained by the OZW devs.

They seem to have been making progress, as there is a “can_set_indicator()” function in their API. So looks like it’s just a waiting game at this point.

2 Likes

Free bump.

And another one.

Hi @murphys_law and @wohlraj,

If you install 0.80 or greater, this should be implemented.
Here’s a feature request thread w/ more info: Event support for Scene Controllers

The gist is that the indicators should get their own entity now, and can be set using a new service (zwave.set_node_value), which takes the z-wave node-id, value-id for the indicator, and the value you want to set. Likewise, there is service for getting the values (zwave.get_node_value).

You can get the value_id and node_id of the indicator entity using a template and the state_attr function.
Here’s a pretty good example of using this to control the indicators of a scene controller: https://www.home-assistant.io/docs/z-wave/device-specific/#rfwdc-cooper-5-button-scene-control-keypad

This is pretty easy to play around with using the developer tools for services and states.

I did run into an issue w/ my setup where my Cooper RF9517 didn’t have the indicator entity created, so I ended up turning on debug logging (probably only necessary to enable for the zwave component), and dug through the log to find the value_id of the indicator. I hard coded the value_id into my config & it has been working since. You can also use the zwave.print_node service to have the node you’re interested in printed to the log & dig through that output–the below pyp one-liner will give you the value_id for the indicator of the last node you called that service on:

grep -A 1 "FOUND NODE" home-assistant.log | tail -1 | pyp "p.replace('<', '\'<') | p.replace('>', '>\'') | eval(p) | dict([(p['values'][value_id]['command_class'], value_id) for value_id in p['values'].keys()])[135]"

Cheers!

2 Likes

I found a way to set the attributes via a script recently and have been using that. I’ll take a look at this to see what it means, but it looks nice.

Tested and works with the Dome Siren. I was able to get the Value ID from the Z-Wave Config panel - it took some fumbling around to find where it’s stashed. (Click ENTITY INFORMATION below the entity drop-down to see the pop-up box with the Value ID.)