Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't login, in the login response from meross API, field mfaLockExpire does not exist. #527

Open
lord0gnome opened this issue Dec 19, 2024 · 1 comment

Comments

@lord0gnome
Copy link

lord0gnome commented Dec 19, 2024

Describe the bug
I couldn't connect (First time configuring the integration) until I hardcoded the mfaLockExpire=0 value in the MerossCloudCreds function:
/config/deps/meross_iot/http_api.py", line 279, in async_login
I thought the issue came from me not having 2fa enabled initially,
but I think it would have worked had this response come back healthy from the Meross API.

⚠️ Also, I had to follow the instructions of this comment in an homeassitant-core issue to get the library to be imported.

I am using version 1.3.2 of meross-homeassistant

Your environment
HomeAssistant version: -- Core 2024.12.4
Hardware environment: podman play kube instance with host network

Logs taken when the issue happened

homeassistant.components.assist_pipeline.error.WakeWordDetectionError: Pipeline error code=wake-provider-missing, message=No wake-word-detection provider for: wake_word.openwakeword
2024-12-19 20:21:36.077 ERROR (SyncWorker_4) [aiodhcpwatcher] Cannot watch for dhcp packets: [Errno 1] Operation not permitted
2024-12-19 20:21:51.367 ERROR (MainThread) [meross_iot.http_api] Login API redirected to different region: https://iotx-us.meross.com. Login will be re-attempted
2024-12-19 20:21:51.735 ERROR (MainThread) [meross_iot.http_api] Received non-ok API status code: MFA_CODE_REQUIRED. Failed request to API. Response was: {'apiStatus': 1033, 'sysStatus': 0, 'info': 'MFA code required', 'timestamp': 1734636111, 'data': {}}
2024-12-19 20:22:04.713 ERROR (MainThread) [meross_iot.http_api] Login API redirected to different region: https://iotx-us.meross.com. Login will be re-attempted
2024-12-19 20:22:05.086 ERROR (MainThread) [meross_iot.http_api] Response data received: {'userid': '123456', 'email': '[email protected]', 'key': 'akeyimadeupsoyouwouldnothavemine', 'token': 'atokenimadeupsoyouwouldnothavemine', 'domain': 'https://iotx-us.meross.com', 'mqttDomain': 'mqtt-us-4.meross.com'}
2024-12-19 20:22:05.086 ERROR (MainThread) [custom_components.meross_iot.config_flow] Unable to connect to Meross HTTP api, ex: 'mfaLockExpire'
Traceback (most recent call last):
  File "/config/deps/meross_iot/http_api.py", line 249, in async_login
    response_data = await MerossHttpClient._async_authenticated_post(url=url,
    ...<6 lines>...
                                                                     stats_counter=stats_counter)
  File "/config/deps/meross_iot/http_api.py", line 385, in _async_authenticated_post
    raise BadDomainException(f"Invalid URL/API Endpoint used. Use: {api_domain} instead.", api_domain, mqtt_domain)
meross_iot.model.http.exception.BadDomainException: Invalid URL/API Endpoint used. Use: https://iotx-us.meross.com instead.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/config/custom_components/meross_iot/config_flow.py", line 283, in async_step_configure_manager
    creds = await self._test_authorization(
        api_base_url=http_api_endpoint, username=username, password=password, mfa_code=mfa_code
        
    )
    ^
  File "/config/custom_components/meross_iot/config_flow.py", line 383, in _test_authorization
    client = await MerossHttpClient.async_from_user_password(
        api_base_url=api_base_url, email=username, password=password, mfa_code=mfa_code
        
    )
    ^
  File "/config/deps/meross_iot/http_api.py", line 119, in async_from_user_password
    creds = await cls.async_login(email=email,
    ...<8 lines>...
                                  mfa_code=mfa_code)
  File "/config/deps/meross_iot/http_api.py", line 260, in async_login
    return await MerossHttpClient.async_login(email=email, password=password, creds_env_var_name=creds_env_var_name, api_base_url=e.api_domain,http_proxy=http_proxy,ua_header=ua_header,app_type=app_type,app_version=app_version,log_identifier=log_identifier,country_code=country_code,agree_to_terms=agree_to_terms,mfa_code=mfa_code,stats_counter=stats_counter, auto_retry_on_bad_domain=False, *args, **kwargs)
           
  File "/config/deps/meross_iot/http_api.py", line 281, in async_login
    mfa_lock_expire=response_data["mfaLockExpire"],
KeyError: 'mfaLockExpire'

I think that they have removed this value from their API.

@donations-bot-prod
Copy link

Donation bot here. Supporters can mark their interest in this issue by adding a comment
starting with "+1" (without quotes) or adding the "#supporter_sponsor" keyword
(without quotes) in their comments.

You can become a donor by subscribing as Sponsor from the GitHub sponsorship page or from the BuyMeACoffee page.

Issues marked by donors will be labeled accordingly and handled with special care

@lord0gnome lord0gnome changed the title In login response from meross API, field mfaLockExpire does not exist. Can't login, in the login response from meross API, field mfaLockExpire does not exist. Dec 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant