#!/usr/bin/env python3
"""
Test Dreame cloud login
"""
import json
import requests
def test_dreame_cloud_login(username=None, password=None):
"""Test Dreame cloud login with provided credentials"""
if not username or not password:
print("No credentials provided. To test cloud login:")
print("1. Get your Dreamehome account email and password")
print("2. Run: python test_cloud_login.py your-email@example.com your-password")
return None
print(f"Testing Dreame cloud login for {username}...")
# Xiaomi cloud login endpoint
login_url = "https://us.api.io.mi.com/app/user/login"
headers = {
"User-Agent": "Dreamehome/1.0.0",
"Content-Type": "application/x-www-form-urlencoded",
}
data = {"username": username, "password": password, "sid": "dreamehome"}
try:
print("Attempting cloud login...")
response = requests.post(login_url, headers=headers, data=data, timeout=10)
print(f"Response status: {response.status_code}")
if response.status_code == 200:
result = response.json()
print(f"Login result: {json.dumps(result, indent=2)}")
if result.get("code") == 0:
print("SUCCESS! Cloud login worked")
token = result["result"]["token"]
user_id = result["result"]["user_id"]
print(f"User ID: {user_id}")
print(f"Token: {token}")
# Save to config
print("\nTo use this token, update config/config.yaml:")
print(f' token: "{token}"')
print(" mock_mode: false")
return result["result"]
else:
print(f"Login failed with code: {result.get('code')}")
else:
print(f"HTTP error: {response.status_code}")
except Exception as e:
print(f"Cloud login error: {e}")
return None
if __name__ == "__main__":
import sys
if len(sys.argv) >= 3:
username = sys.argv[1]
password = sys.argv[2]
test_dreame_cloud_login(username, password)
elif len(sys.argv) >= 2:
username = sys.argv[1]
print(f"Testing cloud login for: {username}")
print("Please provide password as second argument:")
print("Usage: python test_cloud_login.py email@example.com yourpassword")
else:
test_dreame_cloud_login()