This has worked for a long time without issue, and I haven’t changed anything recently. I scoured the release notes in the previous HA release but didn’t find any breaking changes.
I am just curious if others have hit this. I will file a bug on Github later today once I rule out something stupid that I am doing.
Hmmm very interesting. I also see this in the logs which I guess explains that I am getting rate limited:
Using the cloud API for device (ID redacted). This is not recommended as it can lead to rate limiting. We recommend making your vacuum accessible by your Home Assistant instance
I have changed nothing and this has worked for a long time - so I shall investigate more to see what is going on!
Ah. Looks like HA might be using an old key when trying to decrypt data coming in on the MQTT pipe. I will file a bug.
Traceback (most recent call last):
File "/usr/local/lib/python3.13/site-packages/roborock/version_1_apis/roborock_client_v1.py", line 466, in on_message_received
decrypted = Utils.decrypt_cbc(data.payload[24:], self._nonce)
File "/usr/local/lib/python3.13/site-packages/roborock/protocol.py", line 161, in decrypt_cbc
return unpad(decipher.decrypt(ciphertext), AES.block_size)
File "/usr/local/lib/python3.13/site-packages/Crypto/Util/Padding.py", line 98, in unpad
raise ValueError("Padding is incorrect.")
ValueError: Padding is incorrect.
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.13/site-packages/roborock/version_1_apis/roborock_client_v1.py", line 468, in on_message_received
raise RoborockException(f"Failed to decode {data.payload!r} for {data.protocol}") from err
@Lash-L , do you happen to have any ideas? I’ve been debugging this without success.
I’m on the latest 2025.7, HAOS.
The integration loads fine (nothing show unavailable).
I have deleted the integration and re-added it (thinking it might update the key or something).
I’ve ensured the QRevo Curv is on up to date firmware.
I ran nc -z from
The HA host to confirm it can talk to the vacuum on the right port, which was successful.
Having trouble figuring out what changed since this has worked for me for months and doesn’t seem to be tied to a release, it just kinda stopped working.
Update… after more debugging, this was the offending issue apparently:
- action: vacuum.set_fan_speed
data:
fan_speed: >
{% import 'common.jinja' as c with context %}
{{ 'balanced' if not c.ethan_is_sleeping else 'quiet' }}"
target:
entity_id: vacuum.remi
Removing the YAML and just putting the “balanced” or “quiet” string literal works just fine. I have no idea why. Just in case it helps anyone else.