{"record":{"id":"1cbe384bc7e1090b","repo":"home-assistant/core","slug":"failed-to-read-hvac-mode","errorCode":"failed_to_read_hvac_mode","errorMessage":"Failed to read current HVAC mode","messagePattern":"Failed to read current HVAC mode","errorType":"exception","errorClass":"HomeAssistantError","httpStatus":null,"severity":"error","filePath":"homeassistant/components/bryant_evolution/climate.py","lineNumber":149,"sourceCode":"                self._attr_target_temperature_high = (\n                    await self._client.read_cooling_setpoint()\n                )\n                self._attr_target_temperature_low = (\n                    await self._client.read_heating_setpoint()\n                )\n            case HVACMode.OFF:\n                pass\n            case _:\n                _LOGGER.error(\"Unknown HVAC mode %s\", self._attr_hvac_mode)\n\n        # Note: depends on current temperature and target temperature low read\n        # above.\n        self._attr_hvac_action = await self._read_hvac_action()\n\n    async def _read_hvac_mode(self) -> HVACMode:\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_mode\"\n            )\n        mode = mode_and_active[0]\n        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:","sourceCodeStart":131,"sourceCodeEnd":167,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/bryant_evolution/climate.py#L131-L167","documentation":"HomeAssistantError with translation_key 'failed_to_read_hvac_mode', raised in _read_hvac_mode when the Evolution client's read_hvac_mode() returns a falsy value — the gateway did not return the expected S30/Bryant gateway mode register. This is a communications/parse failure with the Bryant Evolution gateway, not a user-input problem.","triggerScenarios":"The Evolution gateway is offline or the websocket/SAM session dropped so read_hvac_mode returns None/empty; firmware returning an unexpected payload that the client library cannot decode into (mode, is_active).","commonSituations":"Power outage or router reboot taking the gateway down; HA restarted before the gateway connection re-established; gateway firmware update changing response format.","solutions":["Verify the Bryant/Carrier Evolution gateway is powered and reachable on the network","Reload the bryant_evolution integration to re-establish the client connection","Update the integration / evolutionhttp library if a firmware change altered responses","Retry the climate entity action after connectivity returns"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"# Only act when the entity has fresh data\nif climate.available and climate.hvac_mode is not None:\n    # gateway session healthy; proceed","typeGuard":null,"tryCatchPattern":"try:\n    await climate.async_update_hvac_mode()  # or entity service call\nexcept HomeAssistantError as err:\n    if 'failed_to_read_hvac_mode' in str(err):\n        # gateway not answering; reload integration or wait for reconnect","preventionTips":["Keep the Evolution gateway on wired/reliable network","Reload the integration after gateway reboots to rebuild the client session"],"tags":["bryant-evolution","climate","hvac-mode","gateway-communication","home-assistant"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}