python-miio
python-miio copied to clipboard
`miiocli device [...] info` fails with `lumi.gateway.mgl03`: `miio.exceptions.DeviceException: Unable to recover failed command`
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:
- run
miiocli device [...] infowith 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