Home Assistant Unofficial Reference 2024.12.1
button.py
Go to the documentation of this file.
1 """Support for the NextDNS service."""
2 
3 from __future__ import annotations
4 
5 from nextdns import AnalyticsStatus
6 
7 from homeassistant.components.button import ButtonEntity, ButtonEntityDescription
8 from homeassistant.const import EntityCategory
9 from homeassistant.core import HomeAssistant
10 from homeassistant.helpers.entity_platform import AddEntitiesCallback
11 from homeassistant.helpers.update_coordinator import CoordinatorEntity
12 
13 from . import NextDnsConfigEntry
14 from .coordinator import NextDnsUpdateCoordinator
15 
16 PARALLEL_UPDATES = 1
17 
18 CLEAR_LOGS_BUTTON = ButtonEntityDescription(
19  key="clear_logs",
20  translation_key="clear_logs",
21  entity_category=EntityCategory.CONFIG,
22 )
23 
24 
26  hass: HomeAssistant,
27  entry: NextDnsConfigEntry,
28  async_add_entities: AddEntitiesCallback,
29 ) -> None:
30  """Add aNextDNS entities from a config_entry."""
31  coordinator = entry.runtime_data.status
32 
33  async_add_entities([NextDnsButton(coordinator, CLEAR_LOGS_BUTTON)])
34 
35 
37  CoordinatorEntity[NextDnsUpdateCoordinator[AnalyticsStatus]], ButtonEntity
38 ):
39  """Define an NextDNS button."""
40 
41  _attr_has_entity_name = True
42 
43  def __init__(
44  self,
45  coordinator: NextDnsUpdateCoordinator[AnalyticsStatus],
46  description: ButtonEntityDescription,
47  ) -> None:
48  """Initialize."""
49  super().__init__(coordinator)
50  self._attr_device_info_attr_device_info = coordinator.device_info
51  self._attr_unique_id_attr_unique_id = f"{coordinator.profile_id}_{description.key}"
52  self.entity_descriptionentity_description = description
53 
54  async def async_press(self) -> None:
55  """Trigger cleaning logs."""
56  await self.coordinator.nextdns.clear_logs(self.coordinator.profile_id)
None __init__(self, NextDnsUpdateCoordinator[AnalyticsStatus] coordinator, ButtonEntityDescription description)
Definition: button.py:47
None async_setup_entry(HomeAssistant hass, NextDnsConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: button.py:29