Files
2026-04-27 15:07:30 +02:00

63 lines
2.0 KiB
Python

"""Cover platform for Sternwarte."""
from __future__ import annotations
from homeassistant.components.cover import CoverEntity, CoverEntityFeature
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN, ENTITY_ROOF_COVER
from .entity import SternwarteEntity
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up Sternwarte cover."""
coordinator = hass.data[DOMAIN][entry.entry_id]
async_add_entities([SternwarteRoofCover(coordinator)])
class SternwarteRoofCover(SternwarteEntity, CoverEntity):
"""Representation of the observatory roof."""
_attr_name = "Dach"
_attr_supported_features = (
CoverEntityFeature.OPEN | CoverEntityFeature.CLOSE | CoverEntityFeature.STOP
)
def __init__(self, coordinator):
super().__init__(coordinator, ENTITY_ROOF_COVER)
@property
def is_closed(self) -> bool | None:
if self.coordinator.data.roof_closed and not self.coordinator.data.roof_open:
return True
if self.coordinator.data.roof_open and not self.coordinator.data.roof_closed:
return False
return None
@property
def is_opening(self) -> bool:
return self.coordinator.data.roof_moving and not self.coordinator.data.roof_open
@property
def is_closing(self) -> bool:
return self.coordinator.data.roof_moving and not self.coordinator.data.roof_closed
@property
def current_cover_position(self) -> int | None:
return self.coordinator.roof_position_percent
async def async_open_cover(self, **kwargs) -> None:
await self.coordinator.async_open_roof()
async def async_close_cover(self, **kwargs) -> None:
await self.coordinator.async_close_roof()
async def async_stop_cover(self, **kwargs) -> None:
await self.coordinator.async_stop_roof()