[Custom Component] Roborock communication

Im a bit lost. Just got my S5 Max today, installed the repo in HACS, installed the Integration and filled in the infos (ID, Name etc. Also, my token is only 16 characters long, is that correct?).
How do I get the Vacuum to show up in Homeassistant (Hassio) now? Do I also need something else?

Iā€™m sorry, I meant I do use the Roborock app only, but the token was not 32 characters when pulling from the instructions provided.

I meant when adding it to the integration in HA

Hello @JohanPotgieter,
Thanks for your tutorial.
I followed your instructions ( as much as I could :slight_smile: )
the rr_tyua_xxxx contains in my case an empty list
however I found another file rr_rr_xxxxx that contains:

localKey 
duid
id, key, productId ( same key ) [ EDIT ]
roomId 

and other info !
Is this expected ?
and what would be then the deviceId ?

Thanks for help
Alain

You need to follow the other instruction provided above. You will not be using the normal integration.

@afawaz It has to be the tuya file

Thanks @JohanPotgieter ,
Your are talking about instructions with the 20 steps right ?
In fact I didnā€™t reinitialize the Roborock wifi connection, I just logged on with my credentials and it grabbed my map and everything in bluestacks
Maybe this is the reason ?
The first initialization have been done on iPhone app.

Do we still have to configure the vacuum in the configuration.yaml? Because the Miio integratio only accepts 32-digit tokens

@afawaz @Loony1 You need to use the custom component mentioned in this section. My little write up is only to help people get the localKey and devId.

The custom component is installed and the informations (devid, ip, token etc) are typed in. But nothing shows up after a restart.

Hi @gotschi , I have the same observations with S6maxV.
Nothing in tuya, everything in rr_rr_xxxx and ā€œtuyaMigratedā€: false
Have you succeeded to get the right token ?

I canā€™t help with the custom component. See the start of this thread for the developersā€™ details.

It doesnā€™t seem to work with s6max yet, because it doesnā€™t use tuya yet.

2 Likes

Just found out that I have the excact same error (running Hassio on a Raspberry).
How can I use your solution? Or in other words, where in Hassio can I run the lines you postet to install npm?

see my reply and workaround.
You need to change (install NPM) into the Homeassistant container to use the custom component
Every reboot these changes are gone, so you could try and use the workaround (I posted multiple above)

1 Like

In a custom dockerfile from where you create a new docker image that you run HA from.

This does only work if you run HA as a docker container, not with home assistant OS, not with venv (where you donā€™t need this actually)

2 Likes

Got it working, thanks to both of you :slight_smile:

1 Like

Iā€™m trying to use the Node-RED workaround with HassOS, but Iā€™ve never used it before and Iā€™m struggling.

I installed Node-RED from the Add-on Store, added node-red-contrib-dockerode in its config to the list of npm packages.
In the Node-RED, I can see the docker nodes. However, I need to configure the nodes to use the docker daemon, and I have no idea if or where itā€™s exposed.
I tried localhost:2375 and /var/run/docker.sock, but none of them seems to work. I have a Docker events node connected to a debug output, and it times out.

Does anyone know where the daemon is exposed in the container, or how to check that?

edit: I installed the Portainer Add-on, which comes pre-configured with /var/run/docker.sock, and I see the homeassistant container there.
But if I setup a ā€œContainer Execā€ node in Node-RED with any command, I just get Sytem Error: [undefined] undefined in the node.
Am I missing something in Node-REDā€™s config to expose the docker sock?

Okay, so, I indeed had to have the Docker engine exposed. I personally use an exposed TCP port over a socks file. Heres how you can do this.

and then about Node-red: I used it for my workaround, mainly because I already have it running, and I found some easy Pallette to do the lifting for me.
However, you could also directly connect to your Docker from Homeassistant (skipping Node-red). And use terminal commands to achieve what I did. (with Homeassistant Automation instead of Node-Red)

If you have access to the Docker shell (via ssh over 2375), you can use this oneliner:
docker exec -it $(docker ps -q --filter "name=homeassistant") apk add update nodejs npm

The Node-red flow: (using nodes from node-red-contrib-dockerode and triggering on every HA start):

[{"id":"3e29b14.856644e","type":"docker-container-actions","z":"dae1457b.578a08","name":"apk add nodejs npm","config":"fd80f885.a63da8","container":"homeassistant","action":"exec","options":"apk add nodejs npm","x":860,"y":300,"wires":[["c0c98a33.d3a828"]]},{"id":"c0c98a33.d3a828","type":"api-call-service","z":"dae1457b.578a08","name":"","server":"8b25395a.5c5ce8","version":1,"debugenabled":false,"service_domain":"homeassistant","service":"restart","entityId":"","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":970,"y":340,"wires":[[]]},{"id":"c55a7c0d.1cbe9","type":"comment","z":"dae1457b.578a08","name":"on home assistant start, install nodejs,npm into homeassistant","info":"","x":380,"y":260,"wires":[]},{"id":"745ffee4.23b44","type":"server-events","z":"dae1457b.578a08","name":"","server":"8b25395a.5c5ce8","event_type":"home_assistant_client","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"waitForRunning":true,"x":280,"y":320,"wires":[["21febf22.d4cbe"]]},{"id":"21febf22.d4cbe","type":"switch","z":"dae1457b.578a08","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"running","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":490,"y":300,"wires":[["c4e99522.cd12d8"]]},{"id":"c4e99522.cd12d8","type":"delay","z":"dae1457b.578a08","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"hour","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":530,"y":340,"wires":[["61469f09.4248c"]]},{"id":"61469f09.4248c","type":"docker-container-actions","z":"dae1457b.578a08","name":"apk info -vv","config":"fd80f885.a63da8","container":"homeassistant","action":"exec","options":"apk info -vv","x":650,"y":300,"wires":[["5a858bfe.fb20a4"]]},{"id":"5a858bfe.fb20a4","type":"switch","z":"dae1457b.578a08","name":"nodejs installed?","property":"payload","propertyType":"msg","rules":[{"t":"cont","v":"nodejs","vt":"str"},{"t":"else"}],"checkall":"false","repair":false,"outputs":2,"x":730,"y":340,"wires":[[],["3e29b14.856644e"]]},{"id":"fd80f885.a63da8","type":"docker-configuration","host":"192.168.1.10","port":"2375"},{"id":"8b25395a.5c5ce8","type":"server","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]
1 Like

Hi to all iā€™m a new user and is a pleasure to be here!

Iā€™m very interested in this discussion and i installed the component but iā€™ve a problem during the configurationā€¦

When i put the data it gives me the error:
ā€œUser input malformed
Type in the IP, the token, and give it a nameā€

I donā€™t know where iā€™m wrongā€¦the only doubt is about the field DeviceID that i donā€™t know if i have to write causally o find somewhere.

I recovered the token with the procedure of the old version of Mi Home but i suppose thatā€™s the same having 32 characters.

I attach the configuration form.

My device is an Roborock S5 Max.

Immagine 2020-11-05 211648

Thanks to all!

This custom component is made to use it with the Roborock App which has a different token length