Xiaomi Cloud Vacuum Map Extractor

Have you checked all servers? It’s also possible that you use some new server that I am not aware about.

Yes I check all servers.

Hi,

I finally setup my HA and added the vacuum map extractor with the same credentials I used for the normal Xiaomi Miio integration. I can control my Roborock S5 Max with the Xiaomi Miio integration but the map just stays in idle and does not show anything. I copied your “Full” configuration.

Any idea what could be wrong?

Please don’t copy “full” configuration, it literally says that in the readme… Use recommended one instead

I’m so sorry! I was using RPi and when I followed to recommended in window mode I jumped to Full and took that one. Stupid of me!
Works perfectly now, thank you :slight_smile:
Now I just need to setup your other integrations to point and clean. It is not possible to use the rooms created with the official xiaomi home app, right? I have to manually create it in HA again?

Yeah, unfortunately I still haven’t incorporated rooms discovered by a vacuum… :frowning:

I need to check my browser history. I could have sworn I read about an integration that supported it. I stated something about room numbers starting at 16. I will check. Maybe it can help :slight_smile:

Sorry, my answer was a bit misleading. Map extractor retrieves a list of room numbers and HA supports room cleaning using them, but my map card only supports cleaning by coordinates

Ah, okay, so but HA supports using the room numbers that your map extractor gets? So I just need to find a way to tell HA to use the room numbers?

Okay, cool. And then I need to find a way to access the scheduling. I would like to use the scheduler in HA as well.

As far as I remember it was something like below:

service: vacuum.send_command
data:
  entity_id: vacuum.xiaomi_vacuum
  command: app_segment_clean
  params: [19, 20]

Haven’t had any success yet. I can see the map in my MiHome app. I can control the vacuum via HA. Is it the model of vacuum?

Config:

camera:

  - platform: xiaomi_cloud_map_extractor
    name: xiaomi_vacuum_map
    host: 192.168.0.**
    token: 'token from extractor tool'
    username: 'email'
    password: 'password'
    draw: ['all']
    attributes:
      - calibration_points
    scan_interval:
      seconds: 30
    auto_update: true

Info from token extractor tool

IP: 192.168.0.**
MAC: *******
Token: ******* (same that I have been using)
Model: roborock.vacuum.e2 (Actual model is Roborock E35)
Region: us

Error Logs:

2021-05-08 01:22:20 WARNING (MainThread) [homeassistant.helpers.entity] Update of camera.xiaomi_vacuum_map is taking over 10 seconds

2021-05-08 01:23:10 WARNING (MainThread) [homeassistant.components.camera] Updating xiaomi_cloud_map_extractor camera took longer than the scheduled update interval 0:00:30

2021-05-08 01:23:11 ERROR (SyncWorker_0) [miio.miioprotocol] Got error when receiving: timed out

I’m afraid that your vacuum is not supported :frowning:

2 Roborock S5 Max devices and Xiaomi Cloud Vacuum Map Extractor

Since we are living in a rather big 2 storey house we have 2 Roborock S5 Max vacuum robots which is one device for each floor.

Integration of the two devices with the Xiaomi Miio integration is working fine and the robots are showing up as different entities as expected:

  • vacuum.roborock_vacuum_s5e_2
  • vacuum.roborock_vacuum_s5e_2_2

Also the token extraction process went fine and the tokens and device-id’s are showing up as:

   ---------
   NAME:     Roborock S5 Max (first)
   ID:       xxxxxxxx1
   IP:       192.168.xxx.1
   TOKEN:    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1
   MODEL:    roborock.vacuum.s5e
   ---------
   NAME:     Roborock S5 Max (second)
   ID:       xxxxxxxx2
   IP:       192.168.xxx.2
   TOKEN:    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2
   MODEL:    roborock.vacuum.s5e
   ---------

In configuration.yaml I have:

  camera:
    - platform: xiaomi_cloud_map_extractor
      host: !secret xiaomi_vacuum_host_first
      token: !secret xiaomi_vacuum_token_first
      username: !secret xiaomi_cloud_username
      password: !secret xiaomi_cloud_password
      country: "de"
      ##name: "Roborock 1st Floor"
      draw: ['all']
      attributes:
        - calibration_points

    - platform: xiaomi_cloud_map_extractor
      host: !secret xiaomi_vacuum_host_second
      token: !secret xiaomi_vacuum_token_second
      username: !secret xiaomi_cloud_username
      password: !secret xiaomi_cloud_password
      country: "de"
      ##name: "Roborock 2nd Floor"
      draw: ['all']
      attributes:
        - calibration_points

I rechecked the referring entries inside “secrets.yaml” a couple of times to make sure that I didn’t have a typo there:

# Roborock S5 Max (first)
xiaomi_vacuum_host_first: 192.168.xxx.1
xiaomi_vacuum_token_first: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1
#
# Roborock S5 Max (second)
xiaomi_vacuum_host_second: 192.168.xxx.2
xiaomi_vacuum_token_second: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2
#
xiaomi_cloud_username: [email protected]
xiaomi_cloud_password: <awesome_password>

Unfortunately it doesn’t work. In “Developer Options” I can only see one entity for “camera.xiaomi_cloud_map_extractor” but not two instances with their respective attributes.

Nothing inside the logfiles except the usual (1 time):

2021-05-09 10:18:03 WARNING (MainThread) [homeassistant.loader] You are using a custom integration xiaomi_cloud_map_extractor which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant

Is the culprit for above problem a configuration error on my side or is the integration “Xiaomi Cloud Vacuum Map Extractor” not supposed to work with more than one vacuum device?

Any hint on this matter is very much appreciated.

PS. The map extraction for “Roborock S5 Max (first)” which I implemented first is working flawlessly and without any problems whatsoever. Only the second device (“Roborock S5 Max (second)” is not showing up.
Multiple HA-restarts didn’t make any difference.

You just have to uncomment “name” section and it should work

I have a question: I let my robot clean my house and it creates the map and that’s working fine. Then if I want to clean a zone I can select it and the robot goes there but the new map created will be partial. Is that normal? What happens if I want the robot to go on another zone that I could see on the full map but not on the new partial one?

What vacuum model do you have?

Excellent, this works :+1:t4:
Thank you so much, Piotr.

I have a Roborock vacumm v1

Well, in this case I’m afraid you have to buy a newer vacuum to solve it :frowning:

1 Like

That is sad new indeed. When you say that my vacuum is not supported, is this a “not supported yet” or “can never be supported on that model”?