python-miio icon indicating copy to clipboard operation
python-miio copied to clipboard

`miiocli device [...] info` fails with `lumi.gateway.mgl03`: `miio.exceptions.DeviceException: Unable to recover failed command`

Open StarterCraft opened this issue 2 years ago • 0 comments

Describe the bug When trying to get device information with the device [...] info command for lumi.gateway.mgl03 Mi Gateway 3 ZNDMWG02LM gateway, it is possible to get the device's IP and token via miiocli cloud, but getting a response from the device is not achievable.

Version information (please complete the following information):

  • OS: Windows 10 21H1 10.0.19043.1526
  • python: python 3.11.3
  • python-miio: version 0.6.0dev0

Device information: If the issue is specific to a device [Use miiocli device --ip <ip address> --token <token> info]:

  • Model: lumi.gateway.mgl03
  • Hardware version: Mi Gateway 3 ZNDMWG02LM
  • Firmware version: 1.5.0_0026

To Reproduce Steps to reproduce the behavior:

  1. run miiocli device [...] info with the specified device.

Expected behavior A generic info text is expected.=

Console output

C:\Users\User>miiocli device --ip IP --token TOKEN info
ERROR:miio.miioprotocol:Got error when receiving: {'code': -9999, 'message': 'user ack timeout'}
ERROR:miio.click_common:Exception: Unable to recover failed command
Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\miio\miioprotocol.py", line 215, in send
    self._handle_error(payload["error"])
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\miio\miioprotocol.py", line 275, in _handle_error
    raise RecoverableError(error)
miio.exceptions.RecoverableError: {'code': -9999, 'message': 'user ack timeout'}

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\miio\miioprotocol.py", line 215, in send
    self._handle_error(payload["error"])
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\miio\miioprotocol.py", line 275, in _handle_error
    raise RecoverableError(error)
miio.exceptions.RecoverableError: {'code': -9999, 'message': 'user ack timeout'}

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\miio\miioprotocol.py", line 215, in send
    self._handle_error(payload["error"])
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\miio\miioprotocol.py", line 275, in _handle_error
    raise RecoverableError(error)
miio.exceptions.RecoverableError: {'code': -9999, 'message': 'user ack timeout'}

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\miio\miioprotocol.py", line 215, in send
    self._handle_error(payload["error"])
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\miio\miioprotocol.py", line 275, in _handle_error
    raise RecoverableError(error)
miio.exceptions.RecoverableError: {'code': -9999, 'message': 'user ack timeout'}

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\miio\click_common.py", line 54, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 1055, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 760, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\miio\click_common.py", line 313, in wrap
    result_msg = result_msg_fmt(**kwargs)
                 ^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\miio\device.py", line 49, in _info_output
    s += f"Supported by genericmiot: {dev.supports_miot()}"
                                      ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\miio\device.py", line 376, in supports_miot
    self.send("get_properties", [{"did": "dummy", "siid": 1, "piid": 1}])
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\miio\device.py", line 122, in send
    return self._protocol.send(
           ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\miio\miioprotocol.py", line 249, in send
    return self.send(
           ^^^^^^^^^^
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\miio\miioprotocol.py", line 249, in send
    return self.send(
           ^^^^^^^^^^
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\miio\miioprotocol.py", line 249, in send
    return self.send(
           ^^^^^^^^^^
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\miio\miioprotocol.py", line 257, in send
    raise DeviceException("Unable to recover failed command") from ex
miio.exceptions.DeviceException: Unable to recover failed command

StarterCraft avatar May 17 '23 13:05 StarterCraft