### The problem
For about a month now I've had this issue where the Roborock in…tegration breaks and fails to connect to the vacuum.
First it only happened occasionally and a reload of the integration solved it, so I just made an automation for that.
But now it fails almost every day and it's not recoverable.
According to logs it fails to connect locally to the vacuum and are using the cloud api. This is strange since the vacuum and Home Assistant is on the same subnet/vlan and it worked fine before.
Packet captures shows no attempt from Home Assistant to connect to the vacuums mac-adress.
This however may be fair since debug-logs shows that the integration seems to forget the network configuration of the vacuum and fails to collect the data from cloud.
I've looked at this as an network issue but found no such proof. I have a lot of different devices, both wired and wireless communicating with Home Assistant just fine.
Multiple updates has occurred since the issue started, this does not solve the issue.
However, sometimes deleting the integration and setting it up again solves it. But so can disabling it for a while so I suspect it eventually hits rate-limiting and that is the cause for it breaking. This however does not explain the initial communication issues.
If I can provide any additional information or test anything, let me know :).
### What version of Home Assistant Core has the issue?
core-2025.9.1
### What was the last working version of Home Assistant Core?
_No response_
### What type of installation are you running?
Home Assistant OS
### Integration causing the issue
Roborock
### Link to integration documentation on our website
https://www.home-assistant.io/integrations/roborock
### Diagnostics information
_No response_
### Example YAML snippet
```yaml
```
### Anything in the logs that might be useful for us?
```txt
When the integration breaks, the following logs show up:
Logger: homeassistant.components.roborock.coordinator
Source: components/roborock/coordinator.py:273
integration: Roborock
First occurred: 07:46:15 (4 occurrences)
Last logged: 13:04:33
Using the cloud API for device 6IRlTJif3aQ7fcQGwBWrXy. This is not recommended as it can lead to rate limiting. We recommend making your vacuum accessible by your Home Assistant instance
Logger: roborock.version_1_apis.roborock_local_client_v1
Source: components/roborock/coordinator.py:271
First occurred: 07:46:05 (4 occurrences)
Last logged: 13:04:23
[The Rocketeer] id=1 Timeout after 5 seconds
Logger: homeassistant.components.roborock
Source: components/roborock/__init__.py:289
integration: Roborock (documentation, issues)
First occurred: 13:04:05 (1 occurrence)
Last logged: 13:04:05
Not setting up The Rocketeer because the we failed to get data for the first time using the online client. Please ensure your Home Assistant instance can communicate with this device. You may need to open firewall instances on your Home Assistant network and on your Vacuum's network
Logger: homeassistant.components.roborock.coordinator
Source: helpers/update_coordinator.py:424
integration: Roborock (documentation, issues)
First occurred: 10:47:10 (2 occurrences)
Last logged: 13:03:28
Error fetching roborock data: Failed to update data
Logger: homeassistant
Source: components/roborock/vacuum.py:141
First occurred: 13:02:17 (1 occurrence)
Last logged: 13:02:17
Error doing job: Task exception was never retrieved (None)
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 280, in _handle_refresh_interval
await self._async_refresh(log_failures=True, scheduled=True)
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 491, in _async_refresh
self.async_update_listeners()
~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 190, in async_update_listeners
update_callback()
~~~~~~~~~~~~~~~^^
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 571, in _handle_coordinator_update
self.async_write_ha_state()
~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1026, in async_write_ha_state
self._async_write_ha_state()
~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1151, in _async_write_ha_state
self.__async_calculate_state()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1088, in __async_calculate_state
state = self._stringify_state(available)
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1032, in _stringify_state
if (state := self.state) is None:
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/vacuum/__init__.py", line 424, in state
if (activity := self.activity) is not None:
^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/roborock/vacuum.py", line 141, in activity
assert self._device_status.state is not None
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError
The following debug-log is a result of reloading the integration to trigger it's connection attempt:
2025-09-08 13:52:02.361 WARNING (MainThread) [homeassistant.components.roborock] Not setting up The Rocketeer because we could not get the network information of the device. Please confirm it is online and the Roborock servers can communicate with it
2025-09-08 13:52:22.854 WARNING (MainThread) [homeassistant.components.roborock] Not setting up The Rocketeer because we could not get the network information of the device. Please confirm it is online and the Roborock servers can communicate with it
2025-09-08 13:52:53.583 WARNING (MainThread) [homeassistant.components.roborock] Not setting up The Rocketeer because we could not get the network information of the device. Please confirm it is online and the Roborock servers can communicate with it
2025-09-08 13:53:44.465 WARNING (MainThread) [homeassistant.components.roborock] Not setting up The Rocketeer because we could not get the network information of the device. Please confirm it is online and the Roborock servers can communicate with it
2025-09-08 13:54:36.553 WARNING (MainThread) [homeassistant.components.roborock] Not setting up The Rocketeer because we could not get the network information of the device. Please confirm it is online and the Roborock servers can communicate with it
2025-09-08 13:54:52.459 WARNING (MainThread) [homeassistant.components.roborock] Not setting up The Rocketeer because we could not get the network information of the device. Please confirm it is online and the Roborock servers can communicate with it
2025-09-08 13:55:13.002 WARNING (MainThread) [homeassistant.components.roborock] Not setting up The Rocketeer because we could not get the network information of the device. Please confirm it is online and the Roborock servers can communicate with it
2025-09-08 13:55:43.514 WARNING (MainThread) [homeassistant.components.roborock] Not setting up The Rocketeer because we could not get the network information of the device. Please confirm it is online and the Roborock servers can communicate with it
2025-09-08 13:55:50.816 DEBUG (MainThread) [homeassistant.components.roborock] Getting home data
2025-09-08 13:55:51.248 DEBUG (MainThread) [homeassistant.components.roborock] Got home data HomeData(id=7869238, name='My Home', products=[HomeDataProduct(id='6IApKn1vVzqlFpLYe0LFaQ', name='Roborock Qrevo Edge', model='roborock.vacuum.a156', category=<RoborockCategory.VACUUM: 'robot.vacuum.cleaner'>, code=None, icon_url=None, attribute=None, capability=0, schema=[HomeDataProductSchema(id=101, name='rpc_request', code='rpc_request', mode='rw', type='RAW', product_property=None, property=None, desc=None), HomeDataProductSchema(id=102, name='rpc_response', code='rpc_response', mode='rw', type='RAW', product_property=None, property=None, desc=None), HomeDataProductSchema(id=120, name='错误代码', code='error_code', mode='ro', type='ENUM', product_property=None, property='{"range": [""]}', desc=None), HomeDataProductSchema(id=121, name='设备状态', code='state', mode='ro', type='ENUM', product_property=None, property='{"range": [""]}', desc=None), HomeDataProductSchema(id=122, name='设备电量', code='battery', mode='ro', type='ENUM', product_property=None, property='{"range": [""]}', desc=None), HomeDataProductSchema(id=123, name='清扫模式', code='fan_power', mode='rw', type='ENUM', product_property=None, property='{"range": [""]}', desc=None), HomeDataProductSchema(id=124, name='拖地模式', code='water_box_mode', mode='rw', type='ENUM', product_property=None, property='{"range": [""]}', desc=None), HomeDataProductSchema(id=125, name='主刷寿命', code='main_brush_life', mode='rw', type='VALUE', product_property=None, property='{"max": 100, "min": 0, "step": 1, "unit": "null", "scale": 1}', desc=None), HomeDataProductSchema(id=126, name='边刷寿命', code='side_brush_life', mode='rw', type='VALUE', product_property=None, property='{"max": 100, "min": 0, "step": 1, "unit": "null", "scale": 1}', desc=None), HomeDataProductSchema(id=127, name='滤网寿命', code='filter_life', mode='rw', type='VALUE', product_property=None, property='{"max": 100, "min": 0, "step": 1, "unit": "null", "scale": 1}', desc=None), HomeDataProductSchema(id=128, name='额外状态', code='additional_props', mode='ro', type='RAW', product_property=None, property=None, desc=None), HomeDataProductSchema(id=130, name='完成事件', code='task_complete', mode='ro', type='RAW', product_property=None, property=None, desc=None), HomeDataProductSchema(id=131, name='电量不足任务取消', code='task_cancel_low_power', mode='ro', type='RAW', product_property=None, property=None, desc=None), HomeDataProductSchema(id=132, name='运动中任务取消', code='task_cancel_in_motion', mode='ro', type='RAW', product_property=None, property=None, desc=None), HomeDataProductSchema(id=133, name='充电状态', code='charge_status', mode='ro', type='RAW', product_property=None, property=None, desc=None), HomeDataProductSchema(id=134, name='烘干状态', code='drying_status', mode='ro', type='RAW', product_property=None, property=None, desc=None), HomeDataProductSchema(id=135, name='离线原因细分', code='offline_status', mode='ro', type='RAW', product_property=None, property=None, desc=None), HomeDataProductSchema(id=139, name='回基站目的', code='back_type', mode='ro', type='RAW', product_property=None, property=None, desc=None)])], devices=[HomeDataDevice(duid='6IRlTJif3aQ7fcQGwBWrXy', name='The Rocketeer', local_key='GRivYVgewg7iMLqp', fv='02.26.86', product_id='6IApKn1vVzqlFpLYe0LFaQ', attribute=None, active_time=1739975303, runtime_env=None, time_zone_id='Europe/Stockholm', icon_url='', lon=None, lat=None, share=False, share_time=None, online=True, pv='1.0', room_id=None, tuya_uuid=None, tuya_migrated=False, extra='{"RRPhotoPrivacyVersion": "1", "RRMonitorPrivacyVersion": "1"}', sn='RBBEBR44401995', feature_set='4499197267967999', new_feature_set='0000000000803EDDC2FF8F7F7EFEFFFF', device_status={'121': 8, '122': 100, '123': 104, '124': 203, '125': 73, '126': 55, '127': 46, '128': 0, '133': 1, '135': 0, '120': 0, '134': 1}, silent_ota_switch=True, setting=None, f=False, device_features=None)], received_devices=[], lon=None, lat=None, geo_name=None, rooms=[HomeDataRoom(id=26837925, name='Martins Office'), HomeDataRoom(id=26837475, name='Kitchen'), HomeDataRoom(id=26837447, name='Livingroom'), HomeDataRoom(id=26837439, name='Hallway'), HomeDataRoom(id=26837367, name='Calvins Room'), HomeDataRoom(id=26837344, name='Alex Room'), HomeDataRoom(id=26837340, name='Bathroom'), HomeDataRoom(id=26837308, name='Martins Bedroom'), HomeDataRoom(id=26837301, name="Calvin's Room")])
2025-09-08 13:55:51.305 DEBUG (MainThread) [roborock.version_1_apis.roborock_mqtt_client_v1] [The Rocketeer] Building message id 20011 for method RoborockCommand.GET_NETWORK_INFO
2025-09-08 13:55:51.305 DEBUG (MainThread) [roborock.version_1_apis.roborock_mqtt_client_v1] [The Rocketeer] Connecting to mqtt
2025-09-08 13:55:51.395 INFO (MainThread) [roborock.cloud_api] Starting mqtt loop
2025-09-08 13:55:51.422 INFO (paho-mqtt-client-) [roborock.version_1_apis.roborock_mqtt_client_v1] [The Rocketeer] Connected to mqtt mqtt-eu-2.roborock.com:8883
2025-09-08 13:55:51.423 INFO (paho-mqtt-client-) [roborock.version_1_apis.roborock_mqtt_client_v1] [The Rocketeer] Subscribed to topic rr/m/o/4yH2u9kStD1GbK3e7zcBiF/22ae44e5/6IRlTJif3aQ7fcQGwBWrXy
2025-09-08 13:55:51.462 DEBUG (MainThread) [roborock.version_1_apis.roborock_mqtt_client_v1] [The Rocketeer] id=20011 Requesting method get_network_info with []
2025-09-08 13:56:01.466 WARNING (MainThread) [homeassistant.components.roborock] Not setting up The Rocketeer because we could not get the network information of the device. Please confirm it is online and the Roborock servers can communicate with it
2025-09-08 13:56:01.466 DEBUG (MainThread) [homeassistant.components.roborock] id=20011 Timeout after 10 seconds
2025-09-08 13:56:01.466 INFO (MainThread) [roborock.version_1_apis.roborock_mqtt_client_v1] [The Rocketeer] Disconnecting from mqtt
2025-09-08 13:56:01.470 INFO (paho-mqtt-client-) [roborock.version_1_apis.roborock_mqtt_client_v1] [The Rocketeer] Roborock client disconnected
2025-09-08 13:56:06.580 DEBUG (MainThread) [homeassistant.components.roborock] Getting home data
2025-09-08 13:56:06.886 DEBUG (MainThread) [homeassistant.components.roborock] Got home data HomeData(id=7869238, name='My Home', products=[HomeDataProduct(id='6IApKn1vVzqlFpLYe0LFaQ', name='Roborock Qrevo Edge', model='roborock.vacuum.a156', category=<RoborockCategory.VACUUM: 'robot.vacuum.cleaner'>, code=None, icon_url=None, attribute=None, capability=0, schema=[HomeDataProductSchema(id=101, name='rpc_request', code='rpc_request', mode='rw', type='RAW', product_property=None, property=None, desc=None), HomeDataProductSchema(id=102, name='rpc_response', code='rpc_response', mode='rw', type='RAW', product_property=None, property=None, desc=None), HomeDataProductSchema(id=120, name='错误代码', code='error_code', mode='ro', type='ENUM', product_property=None, property='{"range": [""]}', desc=None), HomeDataProductSchema(id=121, name='设备状态', code='state', mode='ro', type='ENUM', product_property=None, property='{"range": [""]}', desc=None), HomeDataProductSchema(id=122, name='设备电量', code='battery', mode='ro', type='ENUM', product_property=None, property='{"range": [""]}', desc=None), HomeDataProductSchema(id=123, name='清扫模式', code='fan_power', mode='rw', type='ENUM', product_property=None, property='{"range": [""]}', desc=None), HomeDataProductSchema(id=124, name='拖地模式', code='water_box_mode', mode='rw', type='ENUM', product_property=None, property='{"range": [""]}', desc=None), HomeDataProductSchema(id=125, name='主刷寿命', code='main_brush_life', mode='rw', type='VALUE', product_property=None, property='{"max": 100, "min": 0, "step": 1, "unit": "null", "scale": 1}', desc=None), HomeDataProductSchema(id=126, name='边刷寿命', code='side_brush_life', mode='rw', type='VALUE', product_property=None, property='{"max": 100, "min": 0, "step": 1, "unit": "null", "scale": 1}', desc=None), HomeDataProductSchema(id=127, name='滤网寿命', code='filter_life', mode='rw', type='VALUE', product_property=None, property='{"max": 100, "min": 0, "step": 1, "unit": "null", "scale": 1}', desc=None), HomeDataProductSchema(id=128, name='额外状态', code='additional_props', mode='ro', type='RAW', product_property=None, property=None, desc=None), HomeDataProductSchema(id=130, name='完成事件', code='task_complete', mode='ro', type='RAW', product_property=None, property=None, desc=None), HomeDataProductSchema(id=131, name='电量不足任务取消', code='task_cancel_low_power', mode='ro', type='RAW', product_property=None, property=None, desc=None), HomeDataProductSchema(id=132, name='运动中任务取消', code='task_cancel_in_motion', mode='ro', type='RAW', product_property=None, property=None, desc=None), HomeDataProductSchema(id=133, name='充电状态', code='charge_status', mode='ro', type='RAW', product_property=None, property=None, desc=None), HomeDataProductSchema(id=134, name='烘干状态', code='drying_status', mode='ro', type='RAW', product_property=None, property=None, desc=None), HomeDataProductSchema(id=135, name='离线原因细分', code='offline_status', mode='ro', type='RAW', product_property=None, property=None, desc=None), HomeDataProductSchema(id=139, name='回基站目的', code='back_type', mode='ro', type='RAW', product_property=None, property=None, desc=None)])], devices=[HomeDataDevice(duid='6IRlTJif3aQ7fcQGwBWrXy', name='The Rocketeer', local_key='GRivYVgewg7iMLqp', fv='02.26.86', product_id='6IApKn1vVzqlFpLYe0LFaQ', attribute=None, active_time=1739975303, runtime_env=None, time_zone_id='Europe/Stockholm', icon_url='', lon=None, lat=None, share=False, share_time=None, online=True, pv='1.0', room_id=None, tuya_uuid=None, tuya_migrated=False, extra='{"RRPhotoPrivacyVersion": "1", "RRMonitorPrivacyVersion": "1"}', sn='RBBEBR44401995', feature_set='4499197267967999', new_feature_set='0000000000803EDDC2FF8F7F7EFEFFFF', device_status={'121': 8, '122': 100, '123': 104, '124': 203, '125': 73, '126': 55, '127': 46, '128': 0, '133': 1, '135': 0, '120': 0, '134': 1}, silent_ota_switch=True, setting=None, f=False, device_features=None)], received_devices=[], lon=None, lat=None, geo_name=None, rooms=[HomeDataRoom(id=26837925, name='Martins Office'), HomeDataRoom(id=26837475, name='Kitchen'), HomeDataRoom(id=26837447, name='Livingroom'), HomeDataRoom(id=26837439, name='Hallway'), HomeDataRoom(id=26837367, name='Calvins Room'), HomeDataRoom(id=26837344, name='Alex Room'), HomeDataRoom(id=26837340, name='Bathroom'), HomeDataRoom(id=26837308, name='Martins Bedroom'), HomeDataRoom(id=26837301, name="Calvin's Room")])
2025-09-08 13:56:06.926 DEBUG (MainThread) [roborock.version_1_apis.roborock_mqtt_client_v1] [The Rocketeer] Building message id 20012 for method RoborockCommand.GET_NETWORK_INFO
2025-09-08 13:56:06.926 DEBUG (MainThread) [roborock.version_1_apis.roborock_mqtt_client_v1] [The Rocketeer] Connecting to mqtt
2025-09-08 13:56:07.009 INFO (MainThread) [roborock.cloud_api] Starting mqtt loop
2025-09-08 13:56:07.035 INFO (paho-mqtt-client-) [roborock.version_1_apis.roborock_mqtt_client_v1] [The Rocketeer] Connected to mqtt mqtt-eu-2.roborock.com:8883
2025-09-08 13:56:07.037 INFO (paho-mqtt-client-) [roborock.version_1_apis.roborock_mqtt_client_v1] [The Rocketeer] Subscribed to topic rr/m/o/4yH2u9kStD1GbK3e7zcBiF/22ae44e5/6IRlTJif3aQ7fcQGwBWrXy
2025-09-08 13:56:07.040 DEBUG (MainThread) [roborock.version_1_apis.roborock_mqtt_client_v1] [The Rocketeer] id=20012 Requesting method get_network_info with []
2025-09-08 13:56:17.042 WARNING (MainThread) [homeassistant.components.roborock] Not setting up The Rocketeer because we could not get the network information of the device. Please confirm it is online and the Roborock servers can communicate with it
2025-09-08 13:56:17.043 DEBUG (MainThread) [homeassistant.components.roborock] id=20012 Timeout after 10 seconds
2025-09-08 13:56:17.043 INFO (MainThread) [roborock.version_1_apis.roborock_mqtt_client_v1] [The Rocketeer] Disconnecting from mqtt
2025-09-08 13:56:17.045 INFO (paho-mqtt-client-) [roborock.version_1_apis.roborock_mqtt_client_v1] [The Rocketeer] Roborock client disconnected
```
### Additional information
The vacuum has no reported issues on the network, it roams between APs just fine.
The app reaches the vacuum without issues.
Since Home Assistant doesn't attempt connection to the vacuum the issue is probably there but for the sake of completeness, Home Assistant can ping IPv4, IPv6-ULA and IPv6-LL addresses of the vacuum.
PING 10.150.10.107 (10.150.10.107): 56 data bytes
64 bytes from 10.150.10.107: seq=0 ttl=64 time=3.062 ms
64 bytes from 10.150.10.107: seq=1 ttl=64 time=2.750 ms
PING fc00:0:0:2:b24a:39ff:feda:b3a7 (fc00::2:b24a:39ff:feda:b3a7): 56 data bytes
64 bytes from fc00::2:b24a:39ff:feda:b3a7: seq=0 ttl=64 time=2.762 ms
64 bytes from fc00::2:b24a:39ff:feda:b3a7: seq=1 ttl=64 time=3.371 ms
PING fe80:0:0:0:b24a:39ff:feda:b3a7%enp3s0 (fe80::b24a:39ff:feda:b3a7%2): 56 data bytes
64 bytes from fe80::b24a:39ff:feda:b3a7: seq=0 ttl=64 time=3.611 ms
64 bytes from fe80::b24a:39ff:feda:b3a7: seq=1 ttl=64 time=3.087 ms
There are no filtering of L2-traffic on that subnet either.