How to Fix GE Z-Wave Switches Not Updating in the Home Assistant UI

Smart Home
This entry is part 4 of 11 in the series Creating My Smart Home.

After setting up a few Z-Wave switches from GE, I noticed that my kitchen light switch wasn’t updating in the Home Assistant web UI. It usually showed as “on” even hours after it had been turned off. This was the only place where I used the GE 12722 Z-Wave switch with the GE 12723 add-on switch because it was originally a 3-way switch with one at either end of the kitchen to control the ceiling lights.

I did some searching and came across a thread in the Home Assistant community forums. One of the replies explains why the behavior is happening, and further down the thread another reply clarifies how to ensure the UI stays updated at all times.

From user sterling:

The GE switches do not actually support instant updates. The reason you may see the state changes quickly is because the switch sends out a broadcast message when the switch is pressed. This message has no information about the state of the switch, but when received, OpenZwave will query it for its current state. Unfortunately, since it’s a broadcast message, your controller needs to be one hop away from the device to receive it. Also, press-and-hold actions do not result in this broadcast message. Furthermore, as was mentioned earlier in this thread, controlling the addon switch does absolutely nothing except phsyically change the state of the light. The controller will never see any action. The current GE switches sometimes look like they support instant updates, but they really don’t. It can sometimes work due to a work around built into OpenZwave. If you’re looking for switches that will report their state, make sure you specifically check for the ‘instant update’ feature (might be called something else). For example, the HomeSeer HS-WD100+ supports this feature (but it’s much more expensive).

And the fix posted from user swbradshaw:

The Z-wave documentation on Home Assistant needs updating to make this more clear. The issue here is that “polling_interval” appears to do nothing unless you add the customize configuration under this. From there you need to add your GE switch and specify it’s “polling_intensity”.

If you look closely at the docs, it specifically says the device won’t be polled:

polling_intensity (Optional): Enables polling of a value and sets the frequency of polling (0=none, 1=every time through the list, 2=every other time, etc). If not specified then your device will not be polled.

I now have the following for my zwave configuration. When I use the addon switch, it updates in HA in about 60-90 seconds (even though I was thinking this would be around 30 seconds based on the config). It’s not perfect, but far from what it was before.

zwave:
  usb_path: /dev/ttyACM0
  polling_interval: 30000
  device_config:
    switch.hallway_light_switch_2_0:      
      polling_intensity: 1

I can confirm that this does work for my setup once I substitute the entity name for my kitchen light switch and add this to my configuration.yaml file. It takes about a minute for the UI to update after the add-on switch is manually changed. (Also note that the quote above was pre-version 0.40 of Home Assistant, and originally reflected the fact that the zwave configuration used customize instead of device_config; I’ve modified the code in the quote so it is consistent with the current version and documentation.)