async def validate_input(hass: core.HomeAssistant, data): """Validate the user input allows us to connect.""" username = data.get(CONF_USERNAME) password = data.get(CONF_PASSWORD) pin = data.get(CONF_PIN) host = data[CONF_HOST] timeout = VENSTAR_TIMEOUT protocol = "https" if data[CONF_SSL] else "http" client = VenstarColorTouch( addr=host, timeout=timeout, user=username, password=password, pin=pin, proto=protocol, ) # perform a full info pull, because this calls login also. info_success = await hass.async_add_executor_job(client.update_info) if not info_success: raise CannotConnect return {"title": client.name}
async def async_setup_entry(hass, config): """Set up the Venstar thermostat.""" username = config.data.get(CONF_USERNAME) password = config.data.get(CONF_PASSWORD) pin = config.data.get(CONF_PIN) host = config.data[CONF_HOST] timeout = VENSTAR_TIMEOUT protocol = "https" if config.data[CONF_SSL] else "http" client = VenstarColorTouch( addr=host, timeout=timeout, user=username, password=password, pin=pin, proto=protocol, ) try: await hass.async_add_executor_job(client.update_info) except (OSError, RequestException) as ex: raise ConfigEntryNotReady( f"Unable to connect to the thermostat: {ex}") from ex hass.data.setdefault(DOMAIN, {})[config.entry_id] = client hass.config_entries.async_setup_platforms(config, PLATFORMS) return True
async def async_setup_entry(hass: HomeAssistant, config: ConfigEntry) -> bool: """Set up the Venstar thermostat.""" username = config.data.get(CONF_USERNAME) password = config.data.get(CONF_PASSWORD) pin = config.data.get(CONF_PIN) host = config.data[CONF_HOST] timeout = VENSTAR_TIMEOUT protocol = "https" if config.data[CONF_SSL] else "http" client = VenstarColorTouch( addr=host, timeout=timeout, user=username, password=password, pin=pin, proto=protocol, ) venstar_data_coordinator = VenstarDataUpdateCoordinator( hass, venstar_connection=client, ) await venstar_data_coordinator.async_config_entry_first_refresh() hass.data.setdefault(DOMAIN, {})[config.entry_id] = venstar_data_coordinator await hass.config_entries.async_forward_entry_setups(config, PLATFORMS) return True
def setup_platform(hass, config, add_entities, discovery_info=None): """Set up the Venstar thermostat.""" username = config.get(CONF_USERNAME) password = config.get(CONF_PASSWORD) pin = config.get(CONF_PIN) host = config.get(CONF_HOST) timeout = config.get(CONF_TIMEOUT) humidifier = config.get(CONF_HUMIDIFIER) if config.get(CONF_SSL): proto = "https" else: proto = "http" client = VenstarColorTouch( addr=host, timeout=timeout, user=username, password=password, pin=pin, proto=proto, ) add_entities([VenstarThermostat(client, humidifier)], True)