def login(self):
        """Login and get a valid session ID."""
        try:
            (sid, challenge) = self._login_request()
            if sid == '0000000000000000':
                secret = self._create_login_secret(challenge, self._password)
                (sid2, challenge) = self._login_request(username=self._user,
                                                        secret=secret)
                if sid2 == '0000000000000000':
                    _LOGGER.warning("login failed %s", sid2)
                    raise LoginError(self._user)
                self._sid = sid2
        except xml.parsers.expat.ExpatError:
            raise LoginError(self._user)
Login and get a valid session ID.