docs: def _basic_login(self):
          """Obtain a new access token from the vendor.
  
          First, try using the refresh_token, if one is available, otherwise
          authenticate using the user credentials.
          """
          _LOGGER.debug("No/Expired/Invalid access_token, re-authenticating...")
          self.access_token = self.access_token_expires = None
  
          if self.refresh_token:
              _LOGGER.debug("Trying refresh_token...")
              credentials = {'grant_type': "refresh_token",
                             'scope': "EMEA-V1-Basic EMEA-V1-Anonymous",
                             'refresh_token': self.refresh_token}
  
              try:
                  self._obtain_access_token(credentials)
              except (requests.HTTPError, KeyError, ValueError):
                  _LOGGER.warning(
                      "Invalid refresh_token, will try user credentials.")
                  self.refresh_token = None
  
          if not self.refresh_token:
              _LOGGER.debug("Trying user credentials...")
              credentials = {'grant_type': "password",
                             'scope': "EMEA-V1-Basic EMEA-V1-Anonymous "
                                      "EMEA-V1-Get-Current-User-Account",
                             'Username': self.username,
                             'Password': self.password}
  
              self._obtain_access_token(credentials)
  
          _LOGGER.debug("refresh_token = %s", self.refresh_token)
          _LOGGER.debug("access_token = %s", self.access_token)
          _LOGGER.debug("access_token_expires = %s",
                        self.access_token_expires.strftime("%Y-%m-%d %H:%M:%S"))