1 """Support for IKEA Tradfri covers."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from typing
import Any, cast
8 from pytradfri.command
import Command
15 from .const
import CONF_GATEWAY_ID, COORDINATOR, COORDINATOR_LIST, DOMAIN, KEY_API
16 from .coordinator
import TradfriDeviceDataUpdateCoordinator
17 from .entity
import TradfriBaseEntity
22 config_entry: ConfigEntry,
23 async_add_entities: AddEntitiesCallback,
25 """Load Tradfri covers based on a config entry."""
26 gateway_id = config_entry.data[CONF_GATEWAY_ID]
27 coordinator_data = hass.data[DOMAIN][config_entry.entry_id][COORDINATOR]
28 api = coordinator_data[KEY_API]
36 for device_coordinator
in coordinator_data[COORDINATOR_LIST]
37 if device_coordinator.device.has_blind_control
42 """The platform class required by Home Assistant."""
48 device_coordinator: TradfriDeviceDataUpdateCoordinator,
49 api: Callable[[Command | list[Command]], Any],
52 """Initialize a switch."""
54 device_coordinator=device_coordinator,
56 gateway_id=gateway_id,
63 """Refresh the device."""
64 self.
_device_data_device_data = self.coordinator.data.blind_control.blinds[0]
68 """Return the state attributes."""
69 return {
"model": self._device.device_info.model_number}
73 """Return current position of cover.
75 None is unknown, 0 is closed, 100 is fully open.
79 return 100 - cast(int, self.
_device_data_device_data.current_cover_position)
82 """Move the cover to a specific position."""
85 await self.
_api_api(self.
_device_control_device_control.set_state(100 - kwargs[ATTR_POSITION]))
107 """Return if the cover is closed or not."""
int|None current_cover_position(self)
None async_stop_cover(self, **Any kwargs)
None async_set_cover_position(self, **Any kwargs)
dict[str, str]|None extra_state_attributes(self)
None async_open_cover(self, **Any kwargs)
None __init__(self, TradfriDeviceDataUpdateCoordinator device_coordinator, Callable[[Command|list[Command]], Any] api, str gateway_id)
int|None current_cover_position(self)
None async_close_cover(self, **Any kwargs)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)