Home Assistant Unofficial Reference 2024.12.1
utils.py
Go to the documentation of this file.
1 """Switcher integration helpers functions."""
2 
3 from __future__ import annotations
4 
5 import asyncio
6 import logging
7 
8 from aioswitcher.api.remotes import SwitcherBreezeRemoteManager
9 from aioswitcher.bridge import SwitcherBase, SwitcherBridge
10 
11 from homeassistant.core import HomeAssistant, callback
12 from homeassistant.helpers import singleton
13 
14 from .const import DISCOVERY_TIME_SEC
15 
16 _LOGGER = logging.getLogger(__name__)
17 
18 
19 async def async_discover_devices() -> dict[str, SwitcherBase]:
20  """Discover Switcher devices."""
21  _LOGGER.debug("Starting discovery")
22  discovered_devices = {}
23 
24  @callback
25  def on_device_data_callback(device: SwitcherBase) -> None:
26  """Use as a callback for device data."""
27  if device.device_id in discovered_devices:
28  return
29 
30  discovered_devices[device.device_id] = device
31 
32  bridge = SwitcherBridge(on_device_data_callback)
33  await bridge.start()
34  await asyncio.sleep(DISCOVERY_TIME_SEC)
35  await bridge.stop()
36 
37  _LOGGER.debug("Finished discovery, discovered devices: %s", len(discovered_devices))
38  return discovered_devices
39 
40 
41 @singleton.singleton("switcher_breeze_remote_manager")
42 def get_breeze_remote_manager(hass: HomeAssistant) -> SwitcherBreezeRemoteManager:
43  """Get Switcher Breeze remote manager."""
44  return SwitcherBreezeRemoteManager()
dict[str, SwitcherBase] async_discover_devices()
Definition: utils.py:19
SwitcherBreezeRemoteManager get_breeze_remote_manager(HomeAssistant hass)
Definition: utils.py:42