Xiaomi Cloud Vacuum Map Extractor

I don’t think this is possible… Splitting/joining rooms should be achievable, but probably via the cloud, so still basically the same as using the app.

1 Like

Hi everyone,

I’m really lost here haha
How can I define no a go zone?
Also can’t find the info on how to add more map_modes in the card? All I have is zoned clearning and pin & go

I have the first gen roborock. The V1 vac doesn’t allow you to draw virtual walls. Can I somehow define a virtual wall within the card?

You can’t edit map using this card (at least at this moment). All edits has to be done in Xiaomi Home app.

You can add map modes in yaml

Oh so if the app doesn’t support virtual walls because I have an old vac, then that’s it?

I thought I’d somehow have the ability to define that through this integration like I can define rooms etc

Hello and in the meantime thank you for the work you have done, magnificent.
My roborck s7 can also wash how i implement it in code?
To create the rooms, don’t you import them directly from the xiaomi app?
Thank you

@RKor yup, I can’t add things that your vacuum doesn’t support

@Ciccia89

1 Like

Does anyone have the color config for this? (Screenshot from the github readme)

Great idea!!!.
Im trying to replicate but not working for me. The name of the picture saving in the folder its diferent, and i dont know why :frowning:
Its posible, you change something in the script to work?

I’m getting an error when trying to obtain the map:

Update for camera.xiaomi_cloud_map_extractor fails
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 514, in async_update_ha_state
    await self.async_device_update()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 709, in async_device_update
    raise exc
  File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/xiaomi_cloud_map_extractor/camera.py", line 278, in update
    self._handle_map_data(map_name)
  File "/config/custom_components/xiaomi_cloud_map_extractor/camera.py", line 335, in _handle_map_data
    map_data, map_stored = self._device.get_map(map_name, self._colors, self._drawables, self._texts,
  File "/config/custom_components/xiaomi_cloud_map_extractor/common/vacuum.py", line 36, in get_map
    map_data = self.decode_map(response, colors, drawables, texts, sizes, image_config)
  File "/config/custom_components/xiaomi_cloud_map_extractor/dreame/vacuum.py", line 24, in decode_map
    return MapDataParserDreame.decode_map(raw_map_string, colors, drawables, texts, sizes, image_config)
  File "/config/custom_components/xiaomi_cloud_map_extractor/dreame/map_data_parser.py", line 51, in decode_map
    unzipped = zlib.decompress(base64.decodebytes(raw_map_string.encode("utf8")))
zlib.error: Error -3 while decompressing data: incorrect header check

Vacuum Model: dreame.vacuum.p2140p

Config:

camera:
  - platform: xiaomi_cloud_map_extractor
    host: ...
    token: ...
    username: ...
    password: ...
    force_api: dreame
    store_map_raw: true
    store_map_path: "/config"

I tried forcing the api to use dreame, xiaomi, roidmi, viomi and got an error every time.

I got the map file in three different formats (.b64; .gz; .zlib) for if it can help to solve the problem.

Thanks in advance!

Check out this repo/issue

1 Like

Is there a way to have the card in a horizontal layout instead of vertical? This would be great for something like a computer or tablet screen. I was thinking map on the left, all the controls / buttons on the right.

1 Like

Thanks Piotr, the only problem now is that my map is so big! Any idea how to reduce the size of it? I had a play with the map_transformation settings but no luck.

You can try different values for flex-grow and width

Hi all thanks for this integration .
I have a robo s5 that works with the other iXaomi app . but i cant get it to work with the maps . I have to say that i use the cloud connection in the other iXaomi app . So not IP . I see here that i need to fill in the IP . I don’t use it bicose its on a diferent nework then HA . Is the Host IP nessesery to get it to work ?

Thanks guys

HA has to be able to communicate with vacuum over LAN for Map Extractor to work.

that explanes :slight_smile:

Hello I recently switched over from the Mi Home App to the Roborock app and started running the new corresponding HACS integration. At about the same time I began seeing “Invalid calibration, please check your configuration” on the map extractor card. As a troubleshooting step I removed the map extractor card and reinstalled but I am still continuing to get the error. The map does show intermittently and then the error shows up again eventually. Here is the entry in my config.yaml:

camera:
  - platform: xiaomi_cloud_map_extractor
    host: !secret xiaomi_vacuum_host
    token: !secret xiaomi_vacuum_token
    username: !secret xiaomi_cloud_username
    password: !secret xiaomi_cloud_password
    draw: ['all']
    attributes:
      - calibration_points

Is there something I’m missing? Thank you.

Is a map displayed?