{"record":{"id":"efa2da1a4264144d","repo":"home-assistant/core","slug":"close-door-failed","errorCode":"close_door_failed","errorMessage":"close_door_failed","messagePattern":"close_door_failed","errorType":"exception","errorClass":"HomeAssistantError","httpStatus":null,"severity":"error","filePath":"homeassistant/components/aladdin_connect/cover.py","lineNumber":72,"sourceCode":"\n    @override\n    async def async_open_cover(self, **kwargs: Any) -> None:\n        \"\"\"Issue open command to cover.\"\"\"\n        try:\n            await self.client.open_door(self._device_id, self._number)\n        except aiohttp.ClientError as err:\n            raise HomeAssistantError(\n                translation_domain=DOMAIN,\n                translation_key=\"open_door_failed\",\n            ) from err\n\n    @override\n    async def async_close_cover(self, **kwargs: Any) -> None:\n        \"\"\"Issue close command to cover.\"\"\"\n        try:\n            await self.client.close_door(self._device_id, self._number)\n        except aiohttp.ClientError as err:\n            raise HomeAssistantError(\n                translation_domain=DOMAIN,\n                translation_key=\"close_door_failed\",\n            ) from err\n\n    @property\n    @override\n    def is_closed(self) -> bool | None:\n        \"\"\"Update is closed attribute.\"\"\"\n        if (status := self.door.status) is None:\n            return None\n        return status == \"closed\"\n\n    @property\n    @override\n    def is_closing(self) -> bool | None:\n        \"\"\"Update is closing attribute.\"\"\"\n        return self.door.status == \"closing\"\n","sourceCodeStart":54,"sourceCodeEnd":90,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/aladdin_connect/cover.py#L54-L90","documentation":"HomeAssistantError with translation_key 'close_door_failed' raised by AladdinConnectCover.async_close_cover when client.close_door() fails with aiohttp.ClientError. Identical mechanism to open_door_failed but for the close command; message text comes from strings.json and the original exception is preserved as the cause.","triggerScenarios":"cover.close_cover command whose cloud request fails at the transport layer or with an HTTP error.","commonSituations":"Cloud outage; network drop; safety sensors blocking the physical close is NOT this error (that shows as door reopening in state), only API transport/HTTP failures raise here.","solutions":["Retry the close command.","Inspect logs for the underlying ClientError; re-auth if it is token-related.","Confirm the door works from the official app.","Handle HomeAssistantError in automations to alert the user."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try:\n    await cover.async_close_cover()\nexcept HomeAssistantError as err:\n    _LOGGER.error(\"Close failed: %s (cause: %r)\", err, err.__cause__)","preventionTips":["Retry close commands on transient cloud errors.","Distinguish API failure from physical blockage (state stays open without exception).","Inspect __cause__ for auth vs. network classification."],"tags":["cover","garage-door","cloud","command-failure"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}