Files
core/homeassistant/components/togrill/button.py
T
2026-08-04 10:08:37 +02:00

58 lines
1.5 KiB
Python

"""Support for button entities."""
from typing import override
from togrill_bluetooth.packets import PacketA5Write
from homeassistant.components.button import ButtonEntity, ButtonEntityDescription
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from . import ToGrillConfigEntry
from .coordinator import ToGrillCoordinator
from .entity import ToGrillEntity
PARALLEL_UPDATES = 0
ENTITY_DESCRIPTIONS = (
ButtonEntityDescription(
key="silence",
translation_key="silence",
),
)
async def async_setup_entry(
hass: HomeAssistant,
entry: ToGrillConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Set up button based on a config entry."""
coordinator = entry.runtime_data
async_add_entities(
ToGrillButton(coordinator, entity_description)
for entity_description in ENTITY_DESCRIPTIONS
)
class ToGrillButton(ToGrillEntity, ButtonEntity):
"""Representation of a button."""
def __init__(
self,
coordinator: ToGrillCoordinator,
entity_description: ButtonEntityDescription,
) -> None:
"""Initialize."""
super().__init__(coordinator)
self.entity_description = entity_description
self._attr_unique_id = f"{coordinator.address}_{entity_description.key}"
@override
async def async_press(self) -> None:
"""Silence any active alarm on the device."""
await self._write_packet(PacketA5Write())