59 lines
1.5 KiB
Python
59 lines
1.5 KiB
Python
"""
|
|
Custom integration to integrate irrigation_unlimited with Home Assistant.
|
|
|
|
For more details about this integration, please refer to
|
|
https://github.com/rgc99/irrigation_unlimited
|
|
"""
|
|
import logging
|
|
import voluptuous as vol
|
|
from homeassistant.helpers.entity_component import EntityComponent
|
|
from homeassistant.core import Config, HomeAssistant
|
|
from homeassistant.helpers.discovery import async_load_platform
|
|
|
|
from .irrigation_unlimited import IUCoordinator
|
|
from .entity import IUComponent
|
|
from .service import register_component_services
|
|
|
|
from .schema import (
|
|
IRRIGATION_SCHEMA,
|
|
)
|
|
|
|
from .const import (
|
|
BINARY_SENSOR,
|
|
DOMAIN,
|
|
COORDINATOR,
|
|
COMPONENT,
|
|
STARTUP_MESSAGE,
|
|
)
|
|
|
|
_LOGGER: logging.Logger = logging.getLogger(__package__)
|
|
|
|
|
|
CONFIG_SCHEMA = vol.Schema({DOMAIN: IRRIGATION_SCHEMA}, extra=vol.ALLOW_EXTRA)
|
|
|
|
|
|
async def async_setup(hass: HomeAssistant, config: Config):
|
|
"""Set up this integration using YAML."""
|
|
|
|
_LOGGER.info(STARTUP_MESSAGE)
|
|
|
|
hass.data[DOMAIN] = {}
|
|
coordinator = IUCoordinator(hass).load(config[DOMAIN])
|
|
hass.data[DOMAIN][COORDINATOR] = coordinator
|
|
|
|
component = EntityComponent(_LOGGER, DOMAIN, hass)
|
|
hass.data[DOMAIN][COMPONENT] = component
|
|
|
|
await component.async_add_entities([IUComponent(coordinator)])
|
|
|
|
await hass.async_create_task(
|
|
async_load_platform(hass, BINARY_SENSOR, DOMAIN, {}, config)
|
|
)
|
|
|
|
register_component_services(component, coordinator)
|
|
|
|
coordinator.listen()
|
|
coordinator.clock.start()
|
|
|
|
return True
|