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
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