meross-homeassistant: Devices becoming unavailable often

Describe the bug This happens at least once per day breaking all HA integrations for meross devices. Looks to be timing out on some devices but not sure why all of them go offline and the only way to bring them back is to restart HA - can this be updated for them to just come back online without reboot (like tuya integration for example)

Your environment HomeAssistant version: – 0.118.5 – Hassio Version (if applicable): – 5.7 – Hardware environment: – pi4 –

Logs taken when the issue happened

2020-12-12 16:24:16 ERROR (MainThread) [meross_iot.manager] Timeout occurred while waiting a response for message b'{"header": {"from": "/app/63513-5c8f2ad00fe8972ec8173244740c48e7/subscribe", "messageId": "c1cd3e84bc6c69e616a4d8c945d182e3", "method": "GET", "namespace": "Appliance.Control.Electricity", "payloadVersion": 1, "sign": "dadd08c2ab5e670fc2ad14ca249743fc", "timestamp": 1607790252, "triggerSrc": "Android"}, "payload": {"channel": 0}}' sent to device uuid 1801304134135025130834298f11356b. Timeout was: 5 seconds.
2020-12-12 16:24:16 ERROR (MainThread) [custom_components.meross_cloud.sensor] Error occurred.
-------------------------------------
Component version: 0.4.1.0rc7
Device info: 
	Name: Garden lights
	UUID: 1801304134135025130834298f11356b
	Type: mss310
	HW Version: 1.0.0
	FW Version: 1.1.18
Error Message: "An exception occurred"
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/meross_iot/manager.py", line 630, in _async_send_and_wait_ack
    return await asyncio.wait_for(future, timeout, loop=self._loop)
  File "/usr/local/lib/python3.8/asyncio/tasks.py", line 498, in wait_for
    raise exceptions.TimeoutError()
asyncio.exceptions.TimeoutError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/config/custom_components/meross_cloud/sensor.py", line 322, in async_update
    await self._device.async_get_instant_metrics(channel=self._channel_id)
  File "/usr/local/lib/python3.8/site-packages/meross_iot/controller/mixins/electricity.py", line 38, in async_get_instant_metrics
    result = await self._execute_command(method="GET",
  File "/usr/local/lib/python3.8/site-packages/meross_iot/controller/device.py", line 227, in _execute_command
    return await self._manager.async_execute_cmd(destination_device_uuid=self.uuid,
  File "/usr/local/lib/python3.8/site-packages/meross_iot/manager.py", line 621, in async_execute_cmd
    response = await self._async_send_and_wait_ack(future=fut,
  File "/usr/local/lib/python3.8/site-packages/meross_iot/manager.py", line 634, in _async_send_and_wait_ack
    raise CommandTimeoutError()
meross_iot.model.exception.CommandTimeoutError
2020-12-12 16:24:22 WARNING (MainThread) [custom_components.meross_cloud.sensor] Device Garden lights (mss310) - power sensor (W, 0) reported online event.
2020-12-12 16:24:22 WARNING (MainThread) [custom_components.meross_cloud.sensor] Device Garden lights (mss310) - power sensor (A, 0) reported online event.
2020-12-12 16:24:22 WARNING (MainThread) [custom_components.meross_cloud.sensor] Device Garden lights (mss310) - power sensor (V, 0) reported online event.
2020-12-12 16:24:22 WARNING (MainThread) [custom_components.meross_cloud.switch] Device Garden lights (mss310) - Main channel reported online event.
2020-12-12 16:24:23 WARNING (MainThread) [custom_components.meross_cloud.sensor] Skipping device <Entity Garden lights (mss310) - power sensor (W, 0): 0.0> as it was already added to registry once.
2020-12-12 16:24:23 WARNING (MainThread) [custom_components.meross_cloud.sensor] Skipping device <Entity Garden lights (mss310) - power sensor (A, 0): 0.0> as it was already added to registry once.
2020-12-12 16:24:23 WARNING (MainThread) [custom_components.meross_cloud.sensor] Skipping device <Entity Garden lights (mss310) - power sensor (V, 0): 225.6> as it was already added to registry once.
2020-12-12 16:24:27 ERROR (MainThread) [meross_iot.manager] Timeout occurred while waiting a response for message b'{"header": {"from": "/app/63513-5c8f2ad00fe8972ec8173244740c48e7/subscribe", "messageId": "ee291ec7fd6a85571f53e868e2bc95c4", "method": "GET", "namespace": "Appliance.Control.Electricity", "payloadVersion": 1, "sign": "196d4eeef16b1e5a05c64ff92dc02e32", "timestamp": 1607790263, "triggerSrc": "Android"}, "payload": {"channel": 0}}' sent to device uuid 1801304134135025130834298f11356b. Timeout was: 5 seconds.
2020-12-12 16:24:27 ERROR (MainThread) [custom_components.meross_cloud.sensor] Error occurred.
-------------------------------------
Component version: 0.4.1.0rc7
Device info: 
	Name: Garden lights
	UUID: 1801304134135025130834298f11356b
	Type: mss310
	HW Version: 1.0.0
	FW Version: 1.1.18
Error Message: "An exception occurred"
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/meross_iot/manager.py", line 630, in _async_send_and_wait_ack
    return await asyncio.wait_for(future, timeout, loop=self._loop)
  File "/usr/local/lib/python3.8/asyncio/tasks.py", line 498, in wait_for
    raise exceptions.TimeoutError()
asyncio.exceptions.TimeoutError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/config/custom_components/meross_cloud/sensor.py", line 288, in async_update
    await self._device.async_get_instant_metrics(channel=self._channel_id)
  File "/usr/local/lib/python3.8/site-packages/meross_iot/controller/mixins/electricity.py", line 38, in async_get_instant_metrics
    result = await self._execute_command(method="GET",
  File "/usr/local/lib/python3.8/site-packages/meross_iot/controller/device.py", line 227, in _execute_command
    return await self._manager.async_execute_cmd(destination_device_uuid=self.uuid,
  File "/usr/local/lib/python3.8/site-packages/meross_iot/manager.py", line 621, in async_execute_cmd
    response = await self._async_send_and_wait_ack(future=fut,
  File "/usr/local/lib/python3.8/site-packages/meross_iot/manager.py", line 634, in _async_send_and_wait_ack
    raise CommandTimeoutError()
meross_iot.model.exception.CommandTimeoutError
2020-12-12 16:24:27 ERROR (MainThread) [meross_iot.manager] Timeout occurred while waiting a response for message b'{"header": {"from": "/app/63513-5c8f2ad00fe8972ec8173244740c48e7/subscribe", "messageId": "c99a7e3b14afc60de85572925decf9c7", "method": "GET", "namespace": "Appliance.System.All", "payloadVersion": 1, "sign": "94d1125f5065333650611687a929a8be", "timestamp": 1607790263, "triggerSrc": "Android"}, "payload": {}}' sent to device uuid 1801304134135025130834298f11356b. Timeout was: 5 seconds.
2020-12-12 16:24:27 ERROR (MainThread) [custom_components.meross_cloud.switch] Error occurred.
-------------------------------------
Component version: 0.4.1.0rc7
Device info: 
	Name: Garden lights
	UUID: 1801304134135025130834298f11356b
	Type: mss310
	HW Version: 1.0.0
	FW Version: 1.1.18
Error Message: "An exception occurred"
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/meross_iot/manager.py", line 630, in _async_send_and_wait_ack
    return await asyncio.wait_for(future, timeout, loop=self._loop)
  File "/usr/local/lib/python3.8/asyncio/tasks.py", line 498, in wait_for
    raise exceptions.TimeoutError()
asyncio.exceptions.TimeoutError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/config/custom_components/meross_cloud/switch.py", line 57, in async_update
    await self._device.async_update()
  File "/usr/local/lib/python3.8/site-packages/meross_iot/controller/mixins/system.py", line 21, in async_update
    result = await self._execute_command(method="GET",
  File "/usr/local/lib/python3.8/site-packages/meross_iot/controller/device.py", line 227, in _execute_command
    return await self._manager.async_execute_cmd(destination_device_uuid=self.uuid,
  File "/usr/local/lib/python3.8/site-packages/meross_iot/manager.py", line 621, in async_execute_cmd
    response = await self._async_send_and_wait_ack(future=fut,
  File "/usr/local/lib/python3.8/site-packages/meross_iot/manager.py", line 634, in _async_send_and_wait_ack
    raise CommandTimeoutError()
meross_iot.model.exception.CommandTimeoutError

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Reactions: 3
  • Comments: 52 (1 by maintainers)

Most upvoted comments

@krelltunez

Do they still work (i.e. respond to actual commands) in the MEROSS app when they are offline in HA? I found that the “online” status is sometimes loosely related to the actual capacity to reach the device (not specifically for MEROSS, this is a general comment)

Yes, they do. Tested and confirmed.

Same issue here.

UPDATE: @Florian-Schmidt that workaround may have worked. Since implementing it, I’ve yet to have my devices become and remain unavailable. In fact, they went offline 3 hours ago and the automations seem to have brought them back. I’ll keep an eye on this for a while and report back.

can we use the home assistant mqtt addon for it?

This is something I would like to test today when I get back to the computer

UPDATE: since I have somehow piggy-backed on this thread, I am moving my comments back to https://github.com/albertogeniola/MerossIot/issues/1

same issue here. I have only 6 light switches and most of the time 1-2 of them are unavailable. I hate Meross and my target is to replace them in the next months. I feel is better to throw them in the garbage instead of giving them as a gift. (Nothing to do with the fine work here)