async def _async_update_data_200(self): """Get the latest data from the Eagle-200 device.""" eagle200_meter = self.eagle200_meter if eagle200_meter is None: hub = aioeagle.EagleHub( aiohttp_client.async_get_clientsession(self.hass), self.cloud_id, self.entry.data[CONF_INSTALL_CODE], host=self.entry.data[CONF_HOST], ) eagle200_meter = aioeagle.ElectricMeter.create_instance( hub, self.hardware_address) is_connected = True else: is_connected = eagle200_meter.is_connected async with async_timeout.timeout(30): data = await eagle200_meter.get_device_query() if self.eagle200_meter is None: self.eagle200_meter = eagle200_meter elif is_connected and not eagle200_meter.is_connected: _LOGGER.warning("Lost connection with electricity meter") _LOGGER.debug("API data: %s", data) return {var["Name"]: var["Value"] for var in data.values()}
async def _async_update_data_200(self): """Get the latest data from the Eagle-200 device.""" if (eagle200_meter := self.eagle200_meter) is None: hub = aioeagle.EagleHub( aiohttp_client.async_get_clientsession(self.hass), self.cloud_id, self.entry.data[CONF_INSTALL_CODE], host=self.entry.data[CONF_HOST], ) eagle200_meter = aioeagle.ElectricMeter.create_instance( hub, self.hardware_address) is_connected = True
async def async_get_type(hass, cloud_id, install_code, host): """Try API call 'get_network_info' to see if target device is Eagle-100 or Eagle-200.""" # For EAGLE-200, fetch the hardware address of the meter too. hub = aioeagle.EagleHub( aiohttp_client.async_get_clientsession(hass), cloud_id, install_code, host=host ) try: with async_timeout.timeout(30): meters = await hub.get_device_list() except aioeagle.BadAuth as err: raise InvalidAuth from err except (KeyError, aiohttp.ClientError): # This can happen if it's an eagle-100 meters = None if meters is not None: if meters: hardware_address = meters[0].hardware_address else: hardware_address = None return TYPE_EAGLE_200, hardware_address reader = Eagle100Reader(cloud_id, install_code, host) try: response = await hass.async_add_executor_job(reader.get_network_info) except ValueError as err: # This could be invalid auth because it doesn't check 401 and tries to read JSON. raise InvalidAuth from err except UPDATE_100_ERRORS as error: _LOGGER.error("Failed to connect during setup: %s", error) raise CannotConnect from error # Branch to test if target is Legacy Model if ( "NetworkInfo" in response and response["NetworkInfo"].get("ModelId") == "Z109-EAGLE" ): return TYPE_EAGLE_100, None return None, None