1 """Idasen Desk integration cover platform."""
3 from __future__
import annotations
7 from bleak.exc
import BleakError
22 from .
import DeskData, IdasenDeskCoordinator
23 from .const
import DOMAIN
29 async_add_entities: AddEntitiesCallback,
31 """Set up the cover platform for Idasen Desk."""
32 data: DeskData = hass.data[DOMAIN][entry.entry_id]
39 """Representation of Idasen Desk device."""
41 _attr_device_class = CoverDeviceClass.DAMPER
42 _attr_supported_features = (
43 CoverEntityFeature.OPEN
44 | CoverEntityFeature.CLOSE
45 | CoverEntityFeature.STOP
46 | CoverEntityFeature.SET_POSITION
48 _attr_has_entity_name =
True
50 _attr_translation_key =
"desk"
55 device_info: DeviceInfo,
56 coordinator: IdasenDeskCoordinator,
58 """Initialize an Idasen Desk cover."""
60 self.
_desk_desk = coordinator.desk
68 """Return True if entity is available."""
69 return super().available
and self.
_desk_desk.is_connected
is True
73 """Return if the cover is closed."""
77 """Close the cover."""
79 await self.
_desk_desk.move_down()
80 except BleakError
as err:
86 await self.
_desk_desk.move_up()
87 except BleakError
as err:
93 await self.
_desk_desk.stop()
94 except BleakError
as err:
98 """Move the cover shutter to a specific position."""
100 await self.
_desk_desk.move_to(
int(kwargs[ATTR_POSITION]))
101 except BleakError
as err:
103 "Failed to move to specified position: Bluetooth error"
108 """Handle data update."""
int|None current_cover_position(self)
None async_close_cover(self, **Any kwargs)
_attr_current_cover_position
None async_set_cover_position(self, **Any kwargs)
None _handle_coordinator_update(self, *Any args)
None __init__(self, str address, DeviceInfo device_info, IdasenDeskCoordinator coordinator)
None async_open_cover(self, **Any kwargs)
None async_stop_cover(self, **Any kwargs)
None async_write_ha_state(self)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)