VZM31-SN switches go offline about 12 hours after rejoining

Two VZM31-SN switches consistently stop communicating with ZHA roughly 12 hours after being reset or rejoined. Air-gapping restores them, but the problem repeats. A third identical switch remains online. They all have neutrals.

Setup: HA 2026.9.1, ZHA, HA Yellow, EmberZNet 7.5.1, channel 20, firmware 3.04.

What should I try next, and what logs or diagnostics would help identify the cause?

Just bumping this because I continue to have the same issue with two out of the three switches becoming unavailable in Home Assistant after about 12 hours. That third switch was set up at the same time as the other two and has worked continuously without any issues, as far as I can tell. In Zigbee, there are no real issues with any if the three switch’s connection quality. Everything seems to work great for those 12 hours after I airgap it, and then it just drops.

Let me know if there’s anything I can provide that could potentially give you any clue as to what’s causing the issue. I’d also be curious to know if anything to do with the wiring could possibly set off this kind of behavior.

Thanks,

Jason

Same issue here. Same VZM31-SN. They’ve been rock solid until about a week ago. None of my other Zigbee devices are having issues but all Blue dimmers are becoming unavailable daily.

facing the same issues out of nowhere

I had this on all 20 of my Inovelli Blue switches and I think I’ve tracked it down, at least on ZHA.

The switches ask the coordinator for its keep-alive settings every 4 hours or so. Starting with zigpy 2.1.0 (HA 2026.8), the coordinator says it supports keep-alive but then ignores the request. After three misses, about 12 hours, the switch gives up and goes offline until you airgap it.

To check whether you have the same thing, turn on debug logging for zigpy.device. If you see “Ignoring message on unknown cluster: 0x0025” from the switch every ~4 hours and it drops about 12 hours after an airgap, it’s probably this.

I’m planning to report it to zigpy. Until there’s a fix, this workaround worked for me:

  1. Copy the stock quirk for your model from zha-quirks (zhaquirks/inovelli/VZM31SN.py or VZM30SN.py) into a custom quirks folder, e.g. /config/custom_zha_quirks/.
  2. Add these imports at the top:
    from zigpy.zcl import ClusterType
    from zigpy.zcl.clusters.general import KeepAlive
    
  3. Add this line right before .add_to_registry():
        .adds(KeepAlive, cluster_type=ClusterType.Client)
    
  4. Put custom_quirks_path: /config/custom_zha_quirks under zha: in configuration.yaml, restart HA, and airgap each switch once.

After that they check in every 10 minutes or so, and none of mine have dropped since.

Your copy replaces the stock Inovelli quirk, so pull it out once zigpy fixes this, or re-copy it if zha-quirks updates the Inovelli quirks. I’ve only tried this on VZM31-SN and VZM30-SN. Other Blue models (VZM32, VZM35, VZM36) might need the same thing.

thanks I will test it and let you know about my findings.

This worked like a charm. Thanks!