1
0
mirror of https://github.com/home-assistant/core.git synced 2025-05-15 03:19:15 +00:00
Joost Lekkerkerker d88f7b8600
Only trigger events on button updates in SmartThings ()
Only trigger events on button updates
2025-03-29 10:17:38 +01:00

64 lines
2.0 KiB
Python

"""Support for events through the SmartThings cloud API."""
from __future__ import annotations
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)