{"record":{"id":"bcef7e40eb99d21d","repo":"home-assistant/core","slug":"failed-to-set-fan-mode","errorCode":"failed_to_set_fan_mode","errorMessage":"Failed to set fan mode","messagePattern":"Failed to set fan mode","errorType":"exception","errorClass":"HomeAssistantError","httpStatus":null,"severity":"error","filePath":"homeassistant/components/bryant_evolution/climate.py","lineNumber":259,"sourceCode":"                self._client.set_heating_setpoint\n                if self.hvac_mode == HVACMode.HEAT\n                else self._client.set_cooling_setpoint\n            )\n            if not await fn(temp):\n                raise HomeAssistantError(\n                    translation_domain=DOMAIN, translation_key=\"failed_to_set_temp\"\n                )\n            self._attr_target_temperature = temp\n\n        # If we get here, we must have changed something unless HA allowed an\n        # invalid service call (without any recognized kwarg).\n        self._async_write_ha_state()\n\n    @override\n    async def async_set_fan_mode(self, fan_mode: str) -> None:\n        \"\"\"Set new target fan mode.\"\"\"\n        if not await self._client.set_fan_mode(fan_mode):\n            raise HomeAssistantError(\n                translation_domain=DOMAIN, translation_key=\"failed_to_set_fan_mode\"\n            )\n        self._attr_fan_mode = fan_mode.lower()\n        self.async_write_ha_state()\n","sourceCodeStart":241,"sourceCodeEnd":264,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/bryant_evolution/climate.py#L241-L264","documentation":"Raised by the Bryant/Carrier Evolution climate entity when the upstream client library call `set_fan_mode` returns falsy, meaning the HVAC system did not accept or confirm the requested fan mode. It wraps the failure in a HomeAssistantError with translation key `failed_to_set_fan_mode` so the UI shows a localized message. This indicates a communication or rejection problem at the Evolution gateway, not an invalid HA-side value (the climate platform already restricts fan_mode to the entity's fan_modes list).","triggerScenarios":"Calling the `climate.set_fan_mode` action on a bryant_evolution climate entity while the Evolution gateway is unreachable, the SAS session expired, or the system rejected the mode (e.g. requesting 'circulate' on a system that only supports on/auto). Any falsy return from `self._client.set_fan_mode(fan_mode)` triggers it.","commonSituations":"Wi-Fi/local-network issues between HA and the Evolution server, the Bryant account being rate limited, gateway firmware changes, or the configured fan mode list not matching what the physical air handler supports.","solutions":["Verify the climate entity is reachable (check the integration's diagnostics / last successful update) and retry the action.","Confirm the requested fan_mode appears in the entity's `fan_modes` attribute and is supported by the installed air handler.","Reauthenticate or reload the bryant_evolution config entry if the gateway session has expired.","Enable debug logging for the `bryant_evolution` integration to see the underlying client error from the evolution library."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"# in an automation/script calling climate.set_fan_mode\nservice: climate.set_fan_mode\ncontinue_on_error: true\n# in Python:\ntry:\n    await climate.async_set_fan_mode(mode)\nexcept HomeAssistantError:\n    _LOGGER.warning(\"Fan mode write failed for %s\", entity_id)","preventionTips":["Check the entity's fan_modes attribute before invoking the action.","Ensure the integration's data updates are succeeding (no coordinator errors) before writing.","Wrap nightly mode-switch automations with continue_on_error so transient gateway drops don't abort the sequence."],"tags":["home-assistant","climate","fan-mode","hvac","bryant-evolution"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}