Cleanup rainbird controller setup as feedback from previous PR (#84504)

Additional rainbird cleanup from last PR
pull/84525/head
Allen Porter 2022-12-23 19:54:25 -08:00 committed by GitHub
parent 55b46bfa7a
commit 1807f44e03
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 21 additions and 22 deletions

View File

@ -36,7 +36,6 @@ PLATFORMS = [Platform.SWITCH, Platform.SENSOR, Platform.BINARY_SENSOR]
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
DATA_RAINBIRD = "rainbird"
DOMAIN = "rainbird" DOMAIN = "rainbird"
TRIGGER_TIME_SCHEMA = vol.All( TRIGGER_TIME_SCHEMA = vol.All(
@ -65,13 +64,14 @@ CONFIG_SCHEMA = vol.Schema(
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
"""Set up the Rain Bird component.""" """Set up the Rain Bird component."""
return all(
hass.data[DATA_RAINBIRD] = [] await asyncio.gather(
*[
tasks = [] _setup_controller(hass, controller_config, config)
for controller_config in config[DOMAIN]: for controller_config in config[DOMAIN]
tasks.append(_setup_controller(hass, controller_config, config)) ]
return all(await asyncio.gather(*tasks)) )
)
async def _setup_controller(hass, controller_config, config): async def _setup_controller(hass, controller_config, config):
@ -80,29 +80,28 @@ async def _setup_controller(hass, controller_config, config):
password = controller_config[CONF_PASSWORD] password = controller_config[CONF_PASSWORD]
client = AsyncRainbirdClient(async_get_clientsession(hass), server, password) client = AsyncRainbirdClient(async_get_clientsession(hass), server, password)
controller = AsyncRainbirdController(client) controller = AsyncRainbirdController(client)
position = len(hass.data[DATA_RAINBIRD])
try: try:
await controller.get_serial_number() await controller.get_serial_number()
except RainbirdApiException as exc: except RainbirdApiException as exc:
_LOGGER.error("Unable to setup controller: %s", exc) _LOGGER.error("Unable to setup controller: %s", exc)
return False return False
hass.data[DATA_RAINBIRD].append(controller)
rain_coordinator = RainbirdUpdateCoordinator(hass, controller.get_rain_sensor_state) rain_coordinator = RainbirdUpdateCoordinator(hass, controller.get_rain_sensor_state)
delay_coordinator = RainbirdUpdateCoordinator(hass, controller.get_rain_delay) delay_coordinator = RainbirdUpdateCoordinator(hass, controller.get_rain_delay)
_LOGGER.debug("Rain Bird Controller %d set to: %s", position, server)
for platform in PLATFORMS: for platform in PLATFORMS:
discovery.load_platform( hass.async_create_task(
hass, discovery.async_load_platform(
platform, hass,
DOMAIN, platform,
{ DOMAIN,
RAINBIRD_CONTROLLER: controller, {
SENSOR_TYPE_RAINSENSOR: rain_coordinator, RAINBIRD_CONTROLLER: controller,
SENSOR_TYPE_RAINDELAY: delay_coordinator, SENSOR_TYPE_RAINSENSOR: rain_coordinator,
**controller_config, SENSOR_TYPE_RAINDELAY: delay_coordinator,
}, **controller_config,
config, },
config,
)
) )
return True return True