async def async_setup_entry(
    hass: HomeAssistant,
    entry: HomematicConfigEntry,
    async_add_entities: AddEntitiesCallback,
) -> None:
    """Set up the Homematic(IP) Local cover platform."""
    control_unit: ControlUnit = entry.runtime_data

    @callback
    def async_add_cover(data_points: tuple[HmGenericCover, ...]) -> None:
        """Add cover from Homematic(IP) Local."""
        _LOGGER.debug("ASYNC_ADD_COVER: Adding %i data points", len(data_points))
        entities: list[HaHomematicBaseCover] = []

        for data_point in data_points:
            if isinstance(data_point, CustomDpIpBlind):
                if data_point.operation_mode and data_point.operation_mode == "SHUTTER":
                    entities.append(
                        HaHomematicCover(
                            control_unit=control_unit,
                            data_point=data_point,
                        )
                    )
                else:
                    entities.append(
                        HaHomematicBlind(
                            control_unit=control_unit,
                            data_point=data_point,
                        )
                    )
            elif isinstance(data_point, CustomDpBlind):
                entities.append(
                    HaHomematicBlind(
                        control_unit=control_unit,
                        data_point=data_point,
                    )
                )
            elif isinstance(data_point, CustomDpCover):
                entities.append(
                    HaHomematicCover(
                        control_unit=control_unit,
                        data_point=data_point,
                    )
                )
            elif isinstance(data_point, CustomDpGarage):
                entities.append(
                    HaHomematicGarage(
                        control_unit=control_unit,
                        data_point=data_point,
                    )
                )

        if entities:
            async_add_entities(entities)

    entry.async_on_unload(
        func=async_dispatcher_connect(
            hass=hass,
            signal=signal_new_data_point(entry_id=entry.entry_id, platform=DataPointCategory.COVER),
            target=async_add_cover,
        )
    )

    async_add_cover(data_points=control_unit.get_new_data_points(data_point_type=CustomDpCover | CustomDpGarage))

    platform = entity_platform.async_get_current_platform()

    platform.async_register_entity_service(
        HmipLocalServices.SET_COVER_COMBINED_POSITION,
        {
            vol.Required(ATTR_POSITION): vol.All(vol.Coerce(int), vol.Range(min=0, max=100)),
            vol.Optional(ATTR_TILT_POSITION): vol.All(vol.Coerce(int), vol.Range(min=0, max=100)),
            vol.Optional(CONF_WAIT_FOR_CALLBACK): cv.positive_int,
        },
        "async_set_cover_combined_position",
    )
Set up the Homematic(IP) Local cover platform.
custom_components/homematicip_local/cover.py