def _login_and_fetch_site_info( power_wall: Powerwall, password: str ) -> tuple[SiteInfo, str]: """Login to the powerwall and fetch the base info.""" if password is not None: power_wall.login(password) return power_wall.get_site_info(), power_wall.get_gateway_din()
def call_base_info(power_wall: Powerwall, host: str) -> PowerwallBaseInfo: """Return PowerwallBaseInfo for the device.""" # Make sure the serial numbers always have the same order gateway_din = None with contextlib.suppress(AssertionError, PowerwallError): gateway_din = power_wall.get_gateway_din().upper() return PowerwallBaseInfo( gateway_din=gateway_din, site_info=power_wall.get_site_info(), status=power_wall.get_status(), device_type=power_wall.get_device_type(), serial_numbers=sorted(power_wall.get_serial_numbers()), url=f"https://{host}", )