Home Assistant Unofficial Reference 2024.12.1
util.py
Go to the documentation of this file.
1 """Ecovacs util functions."""
2 
3 from __future__ import annotations
4 
5 from enum import Enum
6 import random
7 import string
8 from typing import TYPE_CHECKING
9 
10 from homeassistant.core import HomeAssistant, callback
11 from homeassistant.util import slugify
12 
13 from .entity import (
14  EcovacsCapabilityEntityDescription,
15  EcovacsDescriptionEntity,
16  EcovacsEntity,
17 )
18 
19 if TYPE_CHECKING:
20  from .controller import EcovacsController
21 
22 
23 def get_client_device_id(hass: HomeAssistant, self_hosted: bool) -> str:
24  """Get client device id."""
25  if self_hosted:
26  return f"HA-{slugify(hass.config.location_name)}"
27 
28  return "".join(
29  random.choice(string.ascii_uppercase + string.digits) for _ in range(8)
30  )
31 
32 
34  controller: EcovacsController,
35  entity_class: type[EcovacsDescriptionEntity],
36  descriptions: tuple[EcovacsCapabilityEntityDescription, ...],
37 ) -> list[EcovacsEntity]:
38  """Return all supported entities for all devices."""
39  return [
40  entity_class(device, capability, description)
41  for device in controller.devices
42  for description in descriptions
43  if (capability := description.capability_fn(device.capabilities))
44  ]
45 
46 
47 @callback
48 def get_name_key(enum: Enum) -> str:
49  """Return the lower case name of the enum."""
50  return enum.name.lower()
list[EcovacsEntity] get_supported_entitites(EcovacsController controller, type[EcovacsDescriptionEntity] entity_class, tuple[EcovacsCapabilityEntityDescription,...] descriptions)
Definition: util.py:37
str get_client_device_id(HomeAssistant hass, bool self_hosted)
Definition: util.py:23