home-assistant/core · error · HomeAssistantError

failed_to_set_fan_mode

failed_to_set_fan_mode

Error message

Failed to set fan mode

What it means

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).

Source

Thrown at homeassistant/components/bryant_evolution/climate.py:259

                self._client.set_heating_setpoint
                if self.hvac_mode == HVACMode.HEAT
                else self._client.set_cooling_setpoint
            )
            if not await fn(temp):
                raise HomeAssistantError(
                    translation_domain=DOMAIN, translation_key="failed_to_set_temp"
                )
            self._attr_target_temperature = temp

        # If we get here, we must have changed something unless HA allowed an
        # invalid service call (without any recognized kwarg).
        self._async_write_ha_state()

    @override
    async def async_set_fan_mode(self, fan_mode: str) -> None:
        """Set new target fan mode."""
        if not await self._client.set_fan_mode(fan_mode):
            raise HomeAssistantError(
                translation_domain=DOMAIN, translation_key="failed_to_set_fan_mode"
            )
        self._attr_fan_mode = fan_mode.lower()
        self.async_write_ha_state()

View on GitHub (pinned to 58a3fdb3ea)

Solutions

  1. Verify the climate entity is reachable (check the integration's diagnostics / last successful update) and retry the action.
  2. Confirm the requested fan_mode appears in the entity's `fan_modes` attribute and is supported by the installed air handler.
  3. Reauthenticate or reload the bryant_evolution config entry if the gateway session has expired.
  4. Enable debug logging for the `bryant_evolution` integration to see the underlying client error from the evolution library.
Defensive patterns

Strategy: try-catch

Try / catch

# in an automation/script calling climate.set_fan_mode
service: climate.set_fan_mode
continue_on_error: true
# in Python:
try:
    await climate.async_set_fan_mode(mode)
except HomeAssistantError:
    _LOGGER.warning("Fan mode write failed for %s", entity_id)

Prevention

When it happens

Trigger: 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.

Common situations: 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.

Related errors


AI-assisted analysis of home-assistant/core@58a3fdb3ea (2026-08-14). Data as JSON: /api/errors/bcef7e40eb99d21d. Report an issue: GitHub.