1
0
mirror of https://github.com/home-assistant/core.git synced 2026-05-31 20:54:23 +01:00
Files
core/homeassistant/components/smartthings/event.py
T
2026-04-30 21:14:48 +02:00

62 lines
2.0 KiB
Python

"""Support for events through the SmartThings cloud API."""
from typing import cast
from pysmartthings import Attribute, Capability, Component, DeviceEvent, SmartThings
from homeassistant.components.event import EventDeviceClass, EventEntity
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from . import FullDevice, SmartThingsConfigEntry
from .entity import SmartThingsEntity
async def async_setup_entry(
hass: HomeAssistant,
entry: SmartThingsConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Add events for a config entry."""
entry_data = entry.runtime_data
async_add_entities(
SmartThingsButtonEvent(
entry_data.client, device, device.device.components[component]
)
for device in entry_data.devices.values()
for component, capabilities in device.status.items()
if Capability.BUTTON in capabilities
)
class SmartThingsButtonEvent(SmartThingsEntity, EventEntity):
"""Define a SmartThings event."""
_attr_device_class = EventDeviceClass.BUTTON
_attr_translation_key = "button"
def __init__(
self,
client: SmartThings,
device: FullDevice,
component: Component,
) -> None:
"""Init the class."""
super().__init__(client, device, {Capability.BUTTON}, component=component.id)
self._attr_name = component.label
self._attr_unique_id = (
f"{device.device.device_id}_{component.id}_{Capability.BUTTON}"
)
@property
def event_types(self) -> list[str]:
"""Return the event types."""
return self.get_attribute_value(
Capability.BUTTON, Attribute.SUPPORTED_BUTTON_VALUES
)
def _update_handler(self, event: DeviceEvent) -> None:
if event.attribute is Attribute.BUTTON:
self._trigger_event(cast(str, event.value))
super()._update_handler(event)