Speed up connecting to legacy flux_led devices (#62614)
This commit is contained in:
parent
e593377fba
commit
91a8b1e7b3
2 changed files with 11 additions and 8 deletions
|
@ -8,6 +8,7 @@ from typing import Any, Final, cast
|
|||
from flux_led import DeviceType
|
||||
from flux_led.aio import AIOWifiLedBulb
|
||||
from flux_led.const import ATTR_ID
|
||||
from flux_led.scanner import FluxLEDDiscovery
|
||||
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import CONF_HOST, EVENT_HOMEASSISTANT_STARTED, Platform
|
||||
|
@ -52,9 +53,11 @@ REQUEST_REFRESH_DELAY: Final = 1.5
|
|||
|
||||
|
||||
@callback
|
||||
def async_wifi_bulb_for_host(host: str) -> AIOWifiLedBulb:
|
||||
def async_wifi_bulb_for_host(
|
||||
host: str, discovery: FluxLEDDiscovery | None
|
||||
) -> AIOWifiLedBulb:
|
||||
"""Create a AIOWifiLedBulb from a host."""
|
||||
return AIOWifiLedBulb(host)
|
||||
return AIOWifiLedBulb(host, discovery=discovery)
|
||||
|
||||
|
||||
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
||||
|
@ -78,7 +81,10 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
|||
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
"""Set up Flux LED/MagicLight from a config entry."""
|
||||
host = entry.data[CONF_HOST]
|
||||
device: AIOWifiLedBulb = async_wifi_bulb_for_host(host)
|
||||
directed_discovery = None
|
||||
if discovery := async_get_discovery(hass, host):
|
||||
directed_discovery = False
|
||||
device: AIOWifiLedBulb = async_wifi_bulb_for_host(host, discovery=discovery)
|
||||
signal = SIGNAL_STATE_UPDATED.format(device.ipaddr)
|
||||
|
||||
@callback
|
||||
|
@ -94,10 +100,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||
) from ex
|
||||
|
||||
# UDP probe after successful connect only
|
||||
directed_discovery = None
|
||||
if discovery := async_get_discovery(hass, host):
|
||||
directed_discovery = False
|
||||
elif discovery := await async_discover_device(hass, host):
|
||||
if not discovery and (discovery := await async_discover_device(hass, host)):
|
||||
directed_discovery = True
|
||||
|
||||
if discovery:
|
||||
|
|
|
@ -225,7 +225,7 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
|||
# identifying the device as the chip model number
|
||||
# AKA `HF-LPB100-ZJ200`
|
||||
return device
|
||||
bulb = async_wifi_bulb_for_host(host)
|
||||
bulb = async_wifi_bulb_for_host(host, discovery=device)
|
||||
try:
|
||||
await bulb.async_setup(lambda: None)
|
||||
finally:
|
||||
|
|
Loading…
Add table
Reference in a new issue