Xiaomi Cloud Vacuum Map Extractor

done, nothing change except the fact that now the digit are dark blue

Is there anything in logs?


here you are

Can you search for “extractor” in raw log file?

quite “noob” here, how do i fint the raw log?

You go to logs screen and download it. Alternatively you can open homeassiatant.log file in the editor (e.g. VSC)

I’m having the same problem as you, I use Home Assistant in Docker, I use the Roborock S5 MaX and I can’t capture the map image in any way, the integration with the cleaning robot works perfectly, but I can’t get anything related to the map, it doesn’t even appear. The same image as yours appears when I include the map card. If I click on it it appears:

The entity (‘camera.xiaomi_cloud_map_extractor’) does not have a unique ID, so its settings cannot be managed from the UI. See the documentation for more details.

I have a Viomi S9 Vacuum robot, was able to install the HACS and it picked up the vacuum cleaner - vacuum.viomi_v18_b22c_robot_cleaner. The Start / Locate / Change Fan speed works but the interaction with the map I cannot master.

I also followed the guidelines to get a map and have that display. What I cannot get to work e.g is to after I create/add a simple area to clean and select the “>” button I then create an error.
“Fail to call service Xiamoi_miio/vacuum_clean_zone. Service not found.”

You probably use a different integration than selected in card’s config

The card info shows - type: custom:xiaomi-vacuum-map-card V2…2.2. Does this help in any way if I have an incorrect card install and I did it according to GitHub - PiotrMachowski/lovelace-xiaomi-vacuum-map-card: This card provides a user-friendly way to fully control map-based vacuums in Home Assistant. Supported brands include Xiaomi (Roborock/Viomi/Dreame/Roidmi/Valetudo/Valetudo RE), Neato, Wyze, Roomba, Ecovacs (and probably more)..

The card installation is correct, but you have chosen “Vacuum platform” as “default” which is Xiaomi Miio. I suspect you use Xiaomi Miot Auto

Apologies, struggle to figure out the right option. So, if I list / add the Xiaomi I have 3 options, thus I went for the Auto. Is there another addon which I should add / find for the right card.?image

Much appreciated the assistances especially for this novice.

You have to chose one that works with your vacuum.

Xiaomi Miio probably won’t work. You can try these ones:

I seem to be unable to reach the vacuum. I’m getting a ‘Failed to retrieve map from vacuum’ error on the camera entity, and the logs show various errors

2023-10-17 15:02:27.874 WARNING (SyncWorker_10) [custom_components.xiaomi_cloud_map_extractor.camera] Got exception while fetching the state: Unable to discover the device 192.168.1.12
2023-10-17 15:03:13.825 DEBUG (SyncWorker_10) [custom_components.xiaomi_cloud_map_extractor.camera] Unable to retrieve map, reasons: Logged in - True, map name - retry, device retrieved - True

My config looks like this:

camera:
  - platform: xiaomi_cloud_map_extractor
    name: Vacuum Map
    host: 192.168.1.12
    token: "token"
    username: user
    password: pw
    draw: ['all']
    attributes:
      - calibration_points
      - vacuum_position
      - rooms

The IP is correct but it doesn’t seem to like it. I use the Roborock app - I did used to use the Xiaomi Home app and I believe this map worked then (I’ve fresh reinstalled HA since so I can’t remember), is it something to do with that as the token is different?

Map Extractor doesn’t work with Roborock cloud. Use this integration instead

Hi

Im using a roborock s5 with the xiaomi miio integration, and map extractor. but after my latest update to:

Home Assistant 2023.10.5
Supervisor 2023.10.1
Operating System 11.1

i get the following error “failed to retrieve map from vacuum” and just a blue screen were the map used to be.

this is the config im using configuration.yaml :

camera:

  • platform: xiaomi_cloud_map_extractor
    host: !secret *****
    token: !secret ****
    username: !secret *****
    password: !secret *****
    country: “de”
    name: “My Vacuum Camera”
    draw:
    • charger
    • path
    • goto_path
    • predicted_path
    • no_go_zones
    • no_mopping_zones
    • vacuum_position
    • virtual_walls
    • zones
      sizes:
      charger_radius: 4
      vacuum_radius: 6.5
      map_transformation:
      trim:
      top: 10
      bottom: 10
      left: 10
      right: 10
      attributes:
    • calibration_points
    • charger
    • goto
    • goto_path
    • goto_predicted_path
    • image
    • map_name
    • no_go_areas
    • no_mopping_areas
    • obstacles
    • path
    • room_numbers
    • rooms
    • vacuum_position
    • vacuum_room
    • walls
    • zones
      scan_interval:
      seconds: 10
      auto_update: true
      store_map_raw: false
      store_map_image: true
      store_map_path: “/tmp”
      force_api: xiaomi

and here is my map config for the card:

type: custom:xiaomi-vacuum-map-card
entity: vacuum.bumblebee
map_source:
camera: camera.my_vacuum_camera
calibration_source:
camera: true
map_modes:

  • template: vacuum_clean_zone
  • template: vacuum_goto
  • template: vacuum_clean_zone_predefined
    predefined_selections:
    • zones:
        • 27983
        • 20586
        • 31233
        • 25186
    • zones:
        • 27863
        • 27091
        • 31263
        • 30341
    • zones:
        • 24571
        • 20755
        • 27771
        • 24605
    • zones:
        • 24392
        • 25724
        • 28892
        • 26974
    • zones:
        • 24079
        • 24605
        • 26029
        • 26005
    • zones:
        • 24049
        • 26997
        • 25149
        • 28747
    • zones:
        • 20130
        • 25971
        • 23980
        • 28121
    • zones:
        • 20056
        • 20677
        • 24006
        • 25827
          map_locked: true
          title: ‘’
          two_finger_pan: false
          vacuum_platform: default

please help

Is there an easy way to get the coverage of cleaning in a specific room for the day using this integration?

I’m interested in keeping track of which rooms have been cleaned. To do this, I initially set up scripts in Home Assistant and kept track of last executed. However, sometimes, I run the Roborock without a specific room in mind. This doesn’t execute any scripts and so I lose track of when a room was cleaned. I don’t want to run certain automations if a room has been cleaned this way.

1 Like

could your share your YAML code

I can’t offer a working solution, but only add that is something I’m interested in doing too.

My thought was to use some sort of image analysis script to study changes to the pixels of the history map, and generate a new ‘heat map’ image of time since last cleaned. Then add sensors for rooms/ zones which take average (median?) of the appropriate areas. And trigger cleaning/ reminders etc from those.

Also - another simpler one - a sensor which uses the vacuum coordinates (from the map icon) and room definitions to indicate which room the vacuum is currently in. Then when an error is thrown (e.g. obstruction, or main brush needs cleaning) i can send notifications to mobile or Google speakers. And/ or reminders if it is left sitting there for an hour.

Hi guys

I am struggling to find a way how to use this super integration( thanks Piotr for great work) to control my s7 max ultra vacuum to choose between only vacuum, only mopping and how intense mop should be.
Is there such thing or i need to change the integration?

Thanks