Home Assistant Unofficial Reference 2024.12.1
helpers.py
Go to the documentation of this file.
1 """Helper functions for Acmeda Pulse."""
2 
3 from __future__ import annotations
4 
5 from typing import TYPE_CHECKING
6 
7 from aiopulse import Roller
8 
9 from homeassistant.config_entries import ConfigEntry
10 from homeassistant.core import HomeAssistant, callback
11 from homeassistant.helpers import device_registry as dr
12 from homeassistant.helpers.entity_platform import AddEntitiesCallback
13 
14 from .const import DOMAIN, LOGGER
15 
16 if TYPE_CHECKING:
17  from . import AcmedaConfigEntry
18 
19 
20 @callback
22  hass: HomeAssistant,
23  entity_class: type,
24  config_entry: AcmedaConfigEntry,
25  current: set[int],
26  async_add_entities: AddEntitiesCallback,
27 ) -> None:
28  """Add any new entities."""
29  hub = config_entry.runtime_data
30  LOGGER.debug("Looking for new %s on: %s", entity_class.__name__, hub.host)
31 
32  api = hub.api.rollers
33 
34  new_items = []
35  for unique_id, roller in api.items():
36  if unique_id not in current:
37  LOGGER.debug("New %s %s", entity_class.__name__, unique_id)
38  new_item = entity_class(roller)
39  current.add(unique_id)
40  new_items.append(new_item)
41 
42  async_add_entities(new_items)
43 
44 
45 async def update_devices(
46  hass: HomeAssistant, config_entry: ConfigEntry, api: dict[int, Roller]
47 ) -> None:
48  """Tell hass that device info has been updated."""
49  dev_registry = dr.async_get(hass)
50 
51  for api_item in api.values():
52  # Update Device name
53  device = dev_registry.async_get_device(identifiers={(DOMAIN, api_item.id)})
54  if device is not None:
55  dev_registry.async_update_device(
56  device.id,
57  name=api_item.name,
58  )
None update_devices(HomeAssistant hass, ConfigEntry config_entry, dict[int, Roller] api)
Definition: helpers.py:47
None async_add_acmeda_entities(HomeAssistant hass, type entity_class, AcmedaConfigEntry config_entry, set[int] current, AddEntitiesCallback async_add_entities)
Definition: helpers.py:27
None async_add_entities(AddEntitiesCallback _async_add_entities, type[ZHAEntity] entity_class, list[EntityData] entities, **kwargs)
Definition: helpers.py:1161