{"record":{"id":"c22690515b6d2948","repo":"home-assistant/core","slug":"failed-to-set-htsp","errorCode":"failed_to_set_htsp","errorMessage":"Failed to set heating setpoint","messagePattern":"Failed to set heating setpoint","errorType":"exception","errorClass":"HomeAssistantError","httpStatus":null,"severity":"error","filePath":"homeassistant/components/bryant_evolution/climate.py","lineNumber":233,"sourceCode":"            )\n        self._attr_hvac_mode = hvac_mode\n        self._async_write_ha_state()\n\n    @override\n    async def async_set_temperature(self, **kwargs: Any) -> None:\n        \"\"\"Set new target temperature.\"\"\"\n        if value := kwargs.get(ATTR_TARGET_TEMP_HIGH):\n            temp = int(value)\n            if not await self._client.set_cooling_setpoint(temp):\n                raise HomeAssistantError(\n                    translation_domain=DOMAIN, translation_key=\"failed_to_set_clsp\"\n                )\n            self._attr_target_temperature_high = temp\n\n        if value := kwargs.get(ATTR_TARGET_TEMP_LOW):\n            temp = int(value)\n            if not await self._client.set_heating_setpoint(temp):\n                raise HomeAssistantError(\n                    translation_domain=DOMAIN, translation_key=\"failed_to_set_htsp\"\n                )\n            self._attr_target_temperature_low = temp\n\n        if value := kwargs.get(ATTR_TEMPERATURE):\n            temp = int(value)\n            fn = (\n                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","sourceCodeStart":215,"sourceCodeEnd":251,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/bryant_evolution/climate.py#L215-L251","documentation":"HomeAssistantError with translation_key 'failed_to_set_htsp' (heating setpoint), raised when ATTR_TARGET_TEMP_LOW is provided but set_heating_setpoint() returns falsy. Mirror of the cooling-setpoint failure: the gateway did not acknowledge the heating setpoint write.","triggerScenarios":"Setting target_temp_low while the gateway is unreachable or the session is stale; heating setpoint outside the system's accepted range; system refusing writes during a lockout state.","commonSituations":"Scheduled heating setpoint changes failing during outages; heat/cool auto mode configuration where the low setpoint write races a gateway reboot.","solutions":["Confirm the gateway is reachable and the thermostat responds locally","Reload the integration to refresh the client session and retry","Validate the setpoint is within the system's configured min/max","Add a retry to automations that change setpoints unattended"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"MIN_HTSP, MAX_HTSP = 40, 68  # degrees, per your system configuration\nif MIN_HTSP <= temp <= MAX_HTSP:\n    await climate.async_set_temperature(target_temp_low=temp)","typeGuard":null,"tryCatchPattern":"try:\n    await climate.async_set_temperature(target_temp_low=65)\nexcept HomeAssistantError as err:\n    if 'failed_to_set_htsp' in str(err):\n        # heating setpoint write not acknowledged; retry after gateway recovers","preventionTips":["Keep heating setpoints within the thermostat's configured range","Reload the integration to rebuild the session if writes persistently fail"],"tags":["bryant-evolution","climate","setpoint","heating","command-failure","home-assistant"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}