async def test_connection(hass: HomeAssistant, data) -> str: """Test the connection to the inverter. Data has the keys from DATA_SCHEMA with values provided by the user. """ session = async_get_clientsession(hass) async with PlenticoreApiClient(session, data["host"]) as client: await client.login(data["password"]) values = await client.get_setting_values("scb:network", "Hostname") return values["scb:network"]["Hostname"]
async def async_setup(self) -> bool: """Set up Plenticore API client.""" self._client = PlenticoreApiClient( async_get_clientsession(self.hass), host=self.host ) try: await self._client.login(self.config_entry.data[CONF_PASSWORD]) except PlenticoreAuthenticationException as err: _LOGGER.error( "Authentication exception connecting to %s: %s", self.host, err ) return False except (ClientError, asyncio.TimeoutError) as err: _LOGGER.error("Error connecting to %s", self.host) raise ConfigEntryNotReady from err else: _LOGGER.debug("Log-in successfully to %s", self.host) self._shutdown_remove_listener = self.hass.bus.async_listen_once( EVENT_HOMEASSISTANT_STOP, self._async_shutdown ) # get some device meta data settings = await self._client.get_setting_values( { "devices:local": [ "Properties:SerialNo", "Branding:ProductName1", "Branding:ProductName2", "Properties:VersionIOC", "Properties:VersionMC", ], "scb:network": ["Hostname"], } ) device_local = settings["devices:local"] prod1 = device_local["Branding:ProductName1"] prod2 = device_local["Branding:ProductName2"] self.device_info = { "identifiers": {(DOMAIN, device_local["Properties:SerialNo"])}, "manufacturer": "Kostal", "model": f"{prod1} {prod2}", "name": settings["scb:network"]["Hostname"], "sw_version": f'IOC: {device_local["Properties:VersionIOC"]}' + f' MC: {device_local["Properties:VersionMC"]}', } return True