Roborock binding for robot vacuum cleaners [5.0.0.0;5.1.0.0)

Tomorrow (Thursday) is my last day of work until the 5th Jan - I’ll try look at this - cos it would be cool, but unlikely to make it into 5.1.0

1 Like

Hey folks, for those with vacuums using the B01 protocol, who has the Q7 and who has the Q10 - they each use ‘flavours’ of B01. I have access to a Q10, just wondering who might have the Q7 as well.

Hi, I’m struggling with the Roborock binding. I’ve tried entering the 2FA code sent to my email, but I still get a ‘user is not authenticated’ error. My account was created via Google Login. Does the binding support Google-linked accounts, or do I need to set up a dedicated password?

log says:

Calling url: https://euiot.roborock.com/api/v1/getHomeDetail

GET request for https://euiot.roborock.com/api/v1/getHomeDetail

JSON response: ‘{“msg”:“user is not authentication”,“data”:null,“code”:2013}’

Hi Anders, it’s possible your account hasn’t been upgraded to the new ‘v4’ logon protocol, and the fallback code is failing.

Can you enable trace logging and paste the output of a logon attempt?

Edit: I found an issue with the legacy/fallback code logon - https://smedley.id.au/tmp/org.openhab.binding.roborock-5.2.0-SNAPSHOT.jar may fix.

Hi, I tested with the new JAR and see the same behavior. I’ve attached a log trace; let me know if you need additional information.

```

09:55:32.787 [INFO] [openhab.event.ThingStatusInfoChangedEvent] - Thing ‘roborock:account:4efa6d5a23’ changed from UNINITIALIZED to INITIALIZING

09:55:32.793 [TRACE] [org.openhab.binding.roborock.internal.RoborockAccountHandler] - 4efa6d5a23: API Init: Scheduling to run in 0 seconds

09:55:32.795 [TRACE] [org.openhab.binding.roborock.internal.RoborockAccountHandler] - 4efa6d5a23: API Init: Running one-shot

09:55:32.795 [INFO] [openhab.event.ThingStatusInfoChangedEvent] - Thing ‘roborock:account:4efa6d5a23’ changed from INITIALIZING to UNKNOWN

09:55:32.797 [DEBUG] [org.openhab.binding.roborock.internal.RoborockWebTargets] - Calling url: https://euiot.roborock.com/api/v1/getUrlByEmail?email=xxxxxxxxxx%40gmail.com&needtwostepauth=false

09:55:32.798 [TRACE] [org.openhab.binding.roborock.internal.RoborockWebTargets] - POST request for https://euiot.roborock.com/api/v1/getUrlByEmail?email=xxxxxxxxxx%40gmail.com&needtwostepauth=false

09:55:32.936 [TRACE] [org.openhab.binding.roborock.internal.RoborockWebTargets] - JSON response: ‘{“code”:200,“msg”:“success”,“data”:{“url”:“https://euiot.roborock.com”,“country”:null,“countrycode”:“45”}}’

09:55:32.938 [TRACE] [org.openhab.binding.roborock.internal.RoborockAccountHandler] - Country determined to be null and code 45

09:55:32.938 [DEBUG] [org.openhab.binding.roborock.internal.RoborockAccountHandler] - No available token or rriot values from sessionStorage, logging in

09:55:32.939 [DEBUG] [org.openhab.binding.roborock.internal.RoborockWebTargets] - Calling url: https://euiot.roborock.com/api/v4/email/code/send?email=xxxxxxxxxx%40gmail.com&type=login&platform=

09:55:32.940 [TRACE] [org.openhab.binding.roborock.internal.RoborockWebTargets] - POST request for https://euiot.roborock.com/api/v4/email/code/send?email=xxxxxxxxxx%40gmail.com&type=login&platform=

09:55:33.164 [TRACE] [org.openhab.binding.roborock.internal.RoborockWebTargets] - JSON response: ‘{“code”:200,“msg”:“success”,“data”:null}’

09:55:59.178 [TRACE] [org.openhab.binding.roborock.internal.RoborockAccountHandler] - 4efa6d5a23: API Init: Scheduling to run in 0 seconds

09:55:59.179 [TRACE] [org.openhab.binding.roborock.internal.RoborockAccountHandler] - 4efa6d5a23: API Init: Running one-shot

09:55:59.179 [DEBUG] [org.openhab.binding.roborock.internal.RoborockAccountHandler] - No available token or rriot values from sessionStorage, logging in

09:56:32.786 [DEBUG] [org.openhab.binding.roborock.internal.discovery.RoborockVacuumDiscoveryService] - Starting device discovery

09:56:32.787 [DEBUG] [org.openhab.binding.roborock.internal.RoborockWebTargets] - Calling url: https://euiot.roborock.com/api/v1/getHomeDetail

09:56:32.787 [TRACE] [org.openhab.binding.roborock.internal.RoborockWebTargets] - GET request for https://euiot.roborock.com/api/v1/getHomeDetail

09:56:32.809 [TRACE] [org.openhab.binding.roborock.internal.RoborockWebTargets] - JSON response: ‘{“msg”:“user is not authentication”,“data”:null,“code”:2013}’

```

OK this is helpful… It actually isn’t submitting the authentication code…

There were several issues with the fallback code where country=null.

Please try again with https://smedley.id.au/tmp/org.openhab.binding.roborock-5.2.0-SNAPSHOT.jar

Give https://smedley.id.au/tmp/org.openhab.binding.roborock-5.2.0-SNAPSHOT.jar a try - it should now add the routines detected to the actions#routine channel as options.

1 Like

This works perfectly! Nice feature, thanks for implementation :slight_smile:

Thanks for the suggestion - I learned something along the way :slight_smile: I’ll raise a PR to get this into OH!

Edit: [roborock] Add available routines as options on the actions#routine channel by psmedley · Pull Request #19916 · openhab/openhab-addons · GitHub raised.

1 Like

routines change is now committed. As it’s considered an enhancement, it will be in 5.2.0

1 Like

Hi Paul, Im using 5.1.0 and I see two bindings. Which should I be using for the S8 Ultra? Despite getting my thing online for the account and vaccum, I cant get it to control the vaccum at all.

Cheers

For 5.1.0 you should really only see the OpenHAB version - unless you previously installed a binding manually in /usr/share/openhab/addons ?

Is the S8 Ultra detected and appear in inbox? If not, trace logs please :slight_smile:

I see this, but im using the OH version

Yes, its online as is the account

The one on the right is the marketplace version, which shouldn’t show up in 5.1.x?

Trace logs should show why the vac isn’t being detected.

1 Like

But it does. Change [5.0.0; 5.0.99] to [5.0.0.0; 5.1.0.0) in thread header will fix this. openHAB checks 4 digits, don’t ask me why.

1 Like

I have succesfully connected this great binding in Openhab 5.11 to my Roborock S7 MaxV. So far all connected channels work well unless _Room_Mapping. The string remains empty. In want to use the app_segment_clean command but I need to figure out the room names/numbers. Wild guesses in using this command (like app_segment_clean[16] and varying the number) give the reponse “unknown method”. Any ideas what can go wrong?

I recently upgraded to openHAB 5.1 and installed this binding. After some troubles I was able to get the account and my vacuum (QRevo Master) online. Unfortunately I only get values for some channels like battery or fan-power. In the logs i see the message Received MQTT message for unknown device destination popping up, with the same value I used for the duid of my vacuum thing. I’m using file configuration for this, but I also tried it via MainUI with the same result. I also had this issues in openHAB 5.0. Any idea how to solve this.

Check out the info#room-mapping channel - it will give you a string like:

\[\[16,"Dining room"\],\[17,"Living room"\],\[18,"Toilet"\],\[19,"Storage"\],\[20,"Master bedroom"\],\[21,"Corridor"\],\[22,"Ensuite"\],\[23,"Laundry"\],\[24,"Kitchen"\]\]

Which are the room numbers. If you want to vac multiple rooms, separate with a comma.

1 Like

Trace logs please. Nothing obvious springs to mind. The ‘unknown destination’ suggests the ‘vacuum’ thing isn’t subscribing to mqtt correctly (hence the unknown destination) but I need to see logs to try understand it.

Thanks Paul, getting there with it!

1 Like