Home Assistant Unofficial Reference 2024.12.1
bridge.py
Go to the documentation of this file.
1 """Refoss integration."""
2 
3 from __future__ import annotations
4 
5 from refoss_ha.device import DeviceInfo
6 from refoss_ha.device_manager import async_build_base_device
7 from refoss_ha.discovery import Discovery, Listener
8 
9 from homeassistant.core import HomeAssistant
10 from homeassistant.helpers.dispatcher import async_dispatcher_send
11 
12 from .const import COORDINATORS, DISPATCH_DEVICE_DISCOVERED, DOMAIN
13 from .coordinator import RefossDataUpdateCoordinator
14 
15 
16 class DiscoveryService(Listener):
17  """Discovery event handler for refoss devices."""
18 
19  def __init__(self, hass: HomeAssistant, discovery: Discovery) -> None:
20  """Init discovery service."""
21  self.hasshass = hass
22 
23  self.discoverydiscovery = discovery
24  self.discoverydiscovery.add_listener(self)
25 
26  hass.data[DOMAIN].setdefault(COORDINATORS, [])
27 
28  async def device_found(self, device_info: DeviceInfo) -> None:
29  """Handle new device found on the network."""
30 
31  device = await async_build_base_device(device_info)
32  if device is None:
33  return
34 
35  coordo = RefossDataUpdateCoordinator(self.hasshass, device)
36  self.hasshass.data[DOMAIN][COORDINATORS].append(coordo)
37  await coordo.async_refresh()
38 
39  async_dispatcher_send(self.hasshass, DISPATCH_DEVICE_DISCOVERED, coordo)
40 
41  async def device_update(self, device_info: DeviceInfo) -> None:
42  """Handle updates in device information, update if ip has changed."""
43  for coordinator in self.hasshass.data[DOMAIN][COORDINATORS]:
44  if coordinator.device.device_info.mac == device_info.mac:
45  coordinator.device.device_info.inner_ip = device_info.inner_ip
46  await coordinator.async_refresh()
None __init__(self, HomeAssistant hass, Discovery discovery)
Definition: bridge.py:19
None device_update(self, DeviceInfo device_info)
Definition: bridge.py:41
None device_found(self, DeviceInfo device_info)
Definition: bridge.py:28
None async_dispatcher_send(HomeAssistant hass, str signal, *Any args)
Definition: dispatcher.py:193