42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
"""Support for HomematicIP Cloud button devices."""
|
|
from __future__ import annotations
|
|
|
|
from homematicip.aio.device import AsyncWallMountedGarageDoorController
|
|
|
|
from homeassistant.components.button import ButtonEntity
|
|
from homeassistant.config_entries import ConfigEntry
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
|
|
|
from . import DOMAIN as HMIPC_DOMAIN, HomematicipGenericEntity
|
|
from .hap import HomematicipHAP
|
|
|
|
|
|
async def async_setup_entry(
|
|
hass: HomeAssistant,
|
|
config_entry: ConfigEntry,
|
|
async_add_entities: AddEntitiesCallback,
|
|
) -> None:
|
|
"""Set up the HomematicIP button from a config entry."""
|
|
hap = hass.data[HMIPC_DOMAIN][config_entry.unique_id]
|
|
entities: list[HomematicipGenericEntity] = []
|
|
for device in hap.home.devices:
|
|
if isinstance(device, AsyncWallMountedGarageDoorController):
|
|
entities.append(HomematicipGarageDoorControllerButton(hap, device))
|
|
|
|
if entities:
|
|
async_add_entities(entities)
|
|
|
|
|
|
class HomematicipGarageDoorControllerButton(HomematicipGenericEntity, ButtonEntity):
|
|
"""Representation of the HomematicIP Wall mounted Garage Door Controller."""
|
|
|
|
def __init__(self, hap: HomematicipHAP, device) -> None:
|
|
"""Initialize a wall mounted garage door controller."""
|
|
super().__init__(hap, device)
|
|
self._attr_icon = "mdi:arrow-up-down"
|
|
|
|
async def async_press(self) -> None:
|
|
"""Handle the button press."""
|
|
await self._device.send_start_impulse()
|