Centralite 3156105 HVAC Action not changing to "idle"

I am using a Home Assistant Green with Home Assistant Connect ZigBee radio to work with a Centralite 3156105 thermostat. The “HVAC Action” sensor is currently stuck on “heating” (I haven’t observed any other value). In the Device Info page, under “Manage zigbee device”, I can manually query the Thermostat cluster running_mode attribute while the system is idle, and I correctly get the value reported as RunningMode.Off.

Am I correct that the running_mode is supposed to feed into the HVAC Action value? I was unable to find any place to configure the source of HVAC Action.

I searched the Home Assistant code for running_mode, but the only reference is in tests/components/zha/test_climate.py, which makes me suspect that some other attribute is driving the HVAC Action instead. Searching the code for hvac_action instead made me think that the HVAC Action is based on the hvac_action attribute, but there doesn’t seem to be such an attribute in the Thermostat cluster.

I’d like to get the HVAC Action working, but I’m not sure what to try next. Any suggestions?

I do have a debug log from the ZigBee bridge (which is how I discovered the running_mode in the first place), but there doesn’t seem to be anything interesting beyond that.

Home Assistant Versions:

  • Core 2025.1.0
  • Supervisor 2024.12.3
  • Operating System 14.1
  • Frontend 20250103.0

I’ve updated Home Assistant Core to 2025.1.1, and that hasn’t fixed the issue.

I’ve made another discovery. I found out you can poke the state from the Developer Tools, so, while the system was idle, I poked the hvac_action to be idle. Then, when the system started up, the hvac_action automatically changed to “heating”! Then, when the termperature came up, and the system switched off again, the hvac_action reamained at “heating”. That means that the problem is not that the hvac_action isn’t getting updated, it’s a problem translating the RunningMode.Off update from the thermostat to hvac_action: idle. I wonder if it’s expecting a RunningMode.Idle or something… I’ll take another look at the code this evening.

OK. I went and looked at the code, and I believe I need a “quirk” in zha for this specific thermostat.

Just closing the loop: I opened zha-device-handlers#3706 to fix this.