{"record":{"id":"6f099bb41ffd77cb","repo":"home-assistant/core","slug":"failed-to-read-hvac-action","errorCode":"failed_to_read_hvac_action","errorMessage":"Failed to read current HVAC action","messagePattern":"Failed to read current HVAC action","errorType":"exception","errorClass":"HomeAssistantError","httpStatus":null,"severity":"error","filePath":"homeassistant/components/bryant_evolution/climate.py","lineNumber":171,"sourceCode":"        mode_enum = {\n            \"HEAT\": HVACMode.HEAT,\n            \"COOL\": HVACMode.COOL,\n            \"AUTO\": HVACMode.HEAT_COOL,\n            \"OFF\": HVACMode.OFF,\n        }.get(mode.upper())\n        if mode_enum is None:\n            raise HomeAssistantError(\n                translation_domain=DOMAIN,\n                translation_key=\"failed_to_parse_hvac_mode\",\n                translation_placeholders={\"mode\": mode},\n            )\n        return mode_enum\n\n    async def _read_hvac_action(self) -> HVACAction:\n        \"\"\"Return the current running hvac operation.\"\"\"\n        mode_and_active = await self._client.read_hvac_mode()\n        if not mode_and_active:\n            raise HomeAssistantError(\n                translation_domain=DOMAIN, translation_key=\"failed_to_read_hvac_action\"\n            )\n        mode, is_active = mode_and_active\n        if not is_active:\n            return HVACAction.OFF\n        match mode.upper():\n            case \"HEAT\":\n                return HVACAction.HEATING\n            case \"COOL\":\n                return HVACAction.COOLING\n            case \"OFF\":\n                return HVACAction.OFF\n            case \"AUTO\":\n                # In AUTO, we need to figure out what the actual action is\n                # based on the setpoints.\n                if (\n                    self.current_temperature is not None\n                    and self.target_temperature_low is not None","sourceCodeStart":153,"sourceCodeEnd":189,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/bryant_evolution/climate.py#L153-L189","documentation":"HomeAssistantError with translation_key 'failed_to_read_hvac_action', raised in _read_hvac_action when the same read_hvac_mode() call returns empty while trying to derive the running action (heating/cooling/off). Like failed_to_read_hvac_mode, it indicates the gateway did not answer with usable data.","triggerScenarios":"Gateway websocket/SAM session dropped between reads; gateway rebooting; intermittent connectivity causing one of the periodic mode polls to return nothing during a state refresh.","commonSituations":"Entity state updates failing after network blips even though setpoint reads succeeded; HA and gateway on unstable Wi-Fi.","solutions":["Restore gateway connectivity (power-cycle the Evolution gateway if hung)","Reload the integration to rebuild the client session","Stabilize the network path between HA and the gateway (wired preferred)","Update the integration/library if hangs are a known bug"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"try:\n    action = await climate._read_hvac_action()\nexcept HomeAssistantError as err:\n    if 'failed_to_read_hvac_action' in str(err):\n        # transient gateway read failure; retry after next poll","preventionTips":["Ensure the gateway stays reachable; most action-read failures are connectivity blips","Avoid chaining logic on hvac_action immediately after HA or gateway restarts"],"tags":["bryant-evolution","climate","hvac-action","gateway-communication","home-assistant"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}