Roborock (integration) map configuration

Hi,

Started to use the new roborock integration with map support (as image).
I was previously using Map Cloud Extractor and it allows to configure what exactly you expect to see on the map (backgrounds, rooms, walls, vacuum path and etc…) and provide custom colors, it allows to seamlessly overlay over a floor plan.
How the same can be achieved within a new integration?

Example of cloud extractor (map) camera config:

 draw:
    - charger
    - path
    - goto_path
    # - obstacles
    # - ignored_obstacles
    # - obstacles_with_photo
    # - ignored_obstacles_with_photo
    - predicted_path
    # - no_go_zones
    # - no_mopping_zones
    - vacuum_position
    # - virtual_walls
    - zones
2 Likes

Wondering the same. I’ve been playing around with the custom vacuum map card trying to get it to work but no luck yet.

I am unsure how to set the calibration source.

Oooh, very timely. We just got an S8 Pro Ultra for Christmas, so I’ll need to be getting that added to HA here soon…

So, I found some solution, but it’s ugly and will not survive the update (i’m with supervised ha).
I found that all colors set in python library vacuum_map_parser_base localte in ha docker in /usr/local/lib/python3.11/site-packages/vacuum_map_parser_base/config/color.py in class ColorsPalette.
I’ve set all not needed entries with opacity 0 and got a working result.
I believe there’s should an easy way to implement this color mapping from the config, however i don’t have dev environment (and time) to start looking into…


image
image

So how do you just display the live map as the vacuum is running?

If you just want the map and not the overlay, the regular roborock integration will display it.

That doesn’t answer my question. What is the code to display it? For example, I have a conditional card that shows when I press a button. That card should be the map. Currently I use the xaomi camera stuff. There’so camera for the Roborock integration.

There’s an image entity from the integration. Just replace your camera.xiaomi_vacuum to image.xiaomi_vacuum (replace with your actual vacuum name)

type: custom:xiaomi-vacuum-map-card
map_source:
  image: image.roborock_s7_maxv
calibration_source:
  camera: true
entity: vacuum.roborock_s7_maxv
vacuum_platform: default

Invalid calibration error

The code? Bro, it’s literally a picture entity card. Just add it to your dashboard.

So I’m not replacing the camera at all if I’m just using a picture elements card:

type: picture-elements
elements:
  - type: state-badge
    entity: binary_sensor.remote_ui
    style:
      top: 32%
      left: 40%
image: image.roborock_s7_maxv

Maybe I’m not understanding. Does that image change constantly while the vacuum is running?

Here is all the code from my card:

show_state: false
show_name: false
camera_view: auto
type: picture-entity
entity: camera.roborock_s8_pro_ultra_map

Yes, the picture regularly updates since the source is a camera. Every couple/3 seconds or so? I wouldn’t say constantly, but it then doesn’t constantly update in the native Roborock app either, so…

Also - keep in mind that this is, as I said when I first replied to this - an entity from the regular Roborock integration. It appears to have been recently added since I didn’t see this before the last update?

Also, this doesn’t extract the overlay, it just shows you the exact same map as you’d see in the app, just like the pic I posted.

This does NOT use the xiaomi integration (since the s8 isn’t on the supported list and I couldn’t seem to get that working).

There’s my problem. I have no camera entity for s7 Max V. Is that native to your integration based on model or is it created elsewhere (like the xiaomi cloud extractor)? I know the vac has a camera, but it’s not listed anywhere.

The s8 doesn’t actually have a camera. The map entity is exposed via the roborock integration as a camera so that the image updates. If it was just a jpg, it would be cached by a web browser and never update.

I’m not using the xiaomi integration since it doesn’t support the s8.

On my S7 the map is exposed as an image(e.g., image.roborock_s7_main_20floor).

When I used the Xiaomi integration with the Xiaomi cloud extractor, I had a “camera”, but no longer after switching to the Roborock integration.

That is exactly why I’m having a problem. Thanks for verifying that I’m not just stupid. SO…how do you get an S7 map to display via Roborock, not Xiaomi?

Can you define the image as a generic camera perhaps? I have several jpgs on my system that I’ve defined that way. For example, snapshots that I take from my doorbell cameras every time someone rings the doorbell. I want them to update on the dashboard instead of be cached by browsers. So I defined them as a generic camera entity under the generic camera integration, then used that “camera” on a picture entity card. Whenever the jpg updates, the picture entity updates.

I’m just thinking out loud here, I have no idea if that would work or not.

Not sure how that would be possible since the generic camera wants an external URL for image and a stream source.

Erm, no? There is no requirement that it be external. Re-read what I said about how I am using it. I am displaying several jog files located directly on my home assistant instance. As in, local - not external.

@bkr1969, I think the way to currently do it is to create a “Generic Camera” entity with your image like this.

  1. Under settings → Integrations click “Add Integration”, search for (and select) “generic camera”.
  2. Fill in “Still Image URL” with http://127.0.0.1:8123/$PATH
    • $PATH can be found by looking at your image.roborock entity; just copy the entire string listed in the entity_picture attribute, something like /api/image_proxy/image.roborock_s7_main_20floor?token=REDACTED.
  3. No need to fill in/change anything else, just click “Submit”, and you should see your image. If you do, check the “This image looks good” box and click “Submit”.

I will agree, though, that this is not the most user friendly way. Preferably, either the Roborock integration should provide a camera entity, or the xiaomi-vacuum-map-card should accept an image entity.

Does anyone have a suggestion for which solution would be better? Then I’ll add a feature request for the relevant repo.