Cannot get GE 14294 dimmer to update brightness status in HA

Hello, I am new to Home Assistant. I have been tinkering with it for about a week and a half now, in fact. I’ve tried hard to solve this one on my own, but it’s just not working out, so I’m hoping someone smarter than I can shed some light on this:

I’ve received a couple of the new GE 14294 Z-Wave+ 3-way Dimmer Switches, and I’m trying to build some automation around them that requires knowing their current brightness. After days of Google and this forum, I did finally get the “On/Off” functionality working correctly by adding in

  device_config:
    light.ge_14294_3way_dimmer_switch_level_5_0:
      refresh_value: true 
      delay: 5

in my zwave config (thanks!), but nothing including setting a polling interval of 1000 and intensity of 1 will cause the dimmer slider to update its value.
In short, if I change the value from the UI, the switch immediately changes the lights, but manually activating the dimmer doesn’t update HA.

Thinking there might be some issue with openzwave, I copied the XML for the 12724 and added in a section for the Lifeline association from the 14291 switch XML like so:

	<!-- Association Groups -->
	<CommandClass id="133">
		<Associations num_groups="1">
			<Group index="1" max_associations="1" label="Lifeline" />
		</Associations>
	</CommandClass>

then updated the manufacturer_specific.xml file to add in the new entry for the device ID. I then removed the switch and added it back in using ozwcp, verifying it showed up as a 14294 instead as an unknown device in HA, so I know the config is getting used. Still not getting slider updates.

So… anyway, any ideas what I’m doing wrong?

I’m not an expert on the zwave protocol side of things, but I think some of this is an issue with the switch’s support in OpenZwave. But I also see that the switch doesn’t support instant status, so it’s not reporting back to OZW.

Your instinct with polling is a good one, but it looks like that’s not working. Have you tried taking HA out of the loop and communicate with the switch from Open Zwave Control Panel? If you’re not seeing OZCP “seeing” updates, then HA wouldn’t be able to see them either.

I asked a question about determining the level of support for a zwave device and got some good answers on this thread:

Hey, thanks for the reply, and your thread had really good info in it. I looked up the dimmer on Z-Wave Alliance (which somehow I missed before) and found the list of params and association groups and such. It is supposed to support instant status, as opposed to its predecessor, so per your suggestion, I tested it out tonight: I hooked up ozwcp on my wife’s Surface in a Putty window so I could see the live logging, and operated the switch manually. It appears the switch instantly reports its status when the buttons are clicked, but not when held. That is super disappointing.
This is the log:

Info, Node003, Received SwitchMultiLevel report: level=55

with the “level” being a number between 1 and 99 when the switch is on. When the light was clicked “on”, the above report was sent to the hub. Clicking the up button again would resend the report, so technically one could set the light to the brightness you want, then hit “up” to “submit” it to the hub, but that is very non-intuitive since we’re talking about a light switch I’m expecting other people to use who do not spend their off hours beating on a keyboard. :slight_smile:

So since I now knew the dimmer wasn’t going to cooperate, I setup polling again. That actually did work this time, after I properly configured the customize settings under the zwave component, and also made this hack in the zwcfg:

><CommandClass id="38" name="COMMAND_CLASS_SWITCH_MULTILEVEL" version="1" innif="true">
>	<Instance index="1" />
> 	<Value type="byte" genre="user" instance="1" index="0" label="Level" units="" read_only="false" write_only="false" verify_changes="false" **poll_intensity="1"** min="0" **max="99"** value="0" />
>	<Value type="button" genre="user" instance="1" index="1" label="Bright" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
> 	<Value type="button" genre="user" instance="1" index="2" label="Dim" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
> 	<Value type="bool" genre="system" instance="1" index="3" label="Ignore Start Level" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="True" />
>	<Value type="byte" genre="system" instance="1" index="4" label="Start Level" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
> </CommandClass>

I tested it out and fully functional! There is of course a ten second delay, which is non-optimal, but perhaps I can lower the polling delay later on after I flesh out my Z-wave network more.

I want to thank you again for the input, since you pointed me exactly in the direction I needed to go.