Exemple #1
0
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
    """Set up Automower from a config entry."""
    # TODO Store an API object for your platforms to access
    if DOMAIN not in hass.data:
        hass.data[DOMAIN] = {"entities": []}

    hass.data[DOMAIN][entry.entry_id] = HUSMOW_API()
    api = HUSMOW_API()
    await hass.async_add_executor_job(api.login, entry.data[CONF_USERNAME],
                                      entry.data[CONF_PASSWORD])

    robots = await hass.async_add_executor_job(api.list_robots)
    if not robots:
        return False

    for robot in robots:
        _LOGGER.debug("Robot: %s", robot)
        hass.data[DOMAIN]["entities"].append(await hass.async_add_executor_job(
            AutomowerEntity, robot, api))

    for component in PLATFORMS:
        hass.async_create_task(
            hass.config_entries.async_forward_entry_setup(entry, component))

    return True
Exemple #2
0
async def validate_input(hass: core.HomeAssistant, data):
    """Validate the user input allows us to connect.
    Data has the keys from DATA_SCHEMA with values provided by the user.
    """
    api = HUSMOW_API()
    try:
        await hass.async_add_executor_job(
            api.login,
            data[CONF_USERNAME],
            data[CONF_PASSWORD],
        )

    except InvalidAuth:
        raise InvalidAuth
    except CannotConnect:
        raise CannotConnect
    return {"title": "Automower"}
def setup(hass, base_config):
    """Establish connection to Husqvarna Automower API."""
    from pyhusmow import API as HUSMOW_API

    config = base_config.get(DOMAIN)

    if hass.data.get(DOMAIN) is None:
        hass.data[DOMAIN] = {'devices': []}

    api = HUSMOW_API()
    api.login(config.get(CONF_USERNAME), config.get(CONF_PASSWORD))

    robots = api.list_robots()

    if not robots:
        return False

    for robot in robots:
        hass.data[DOMAIN]['devices'].append(AutomowerDevice(robot, api))

    for component in AUTOMOWER_COMPONENTS:
        discovery.load_platform(hass, component, DOMAIN, {}, base_config)

    return True