{"id":13801537,"url":"https://github.com/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor","last_synced_at":"2025-05-13T11:31:19.098Z","repository":{"id":37316621,"uuid":"299753146","full_name":"PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor","owner":"PiotrMachowski","description":"This custom integration provides a way to present a live view of a map for Xiaomi (Roborock/Viomi/Roidmi/Dreame) vacuums without a need for rooting.","archived":false,"fork":false,"pushed_at":"2025-05-05T04:00:36.000Z","size":614,"stargazers_count":1256,"open_issues_count":96,"forks_count":133,"subscribers_count":35,"default_branch":"master","last_synced_at":"2025-05-05T04:25:38.271Z","etag":null,"topics":["cloud","custom-component","dreame","hacs","home-assistant","map","roborock","robot","roidmi","vacuum","vacuum-map","viomi","xiaomi","xiaomi-smart-home","xiaomi-vacuum"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PiotrMachowski.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"ko_fi":"piotrmachowski","custom":["buycoffee.to/piotrmachowski","paypal.me/PiMachowski","revolut.me/314ma"]}},"created_at":"2020-09-29T22:35:24.000Z","updated_at":"2025-05-05T04:02:25.000Z","dependencies_parsed_at":"2024-05-15T17:58:44.460Z","dependency_job_id":"c6f732b4-e035-453b-973c-236d098b8f1f","html_url":"https://github.com/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor","commit_stats":null,"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PiotrMachowski%2FHome-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PiotrMachowski%2FHome-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PiotrMachowski%2FHome-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PiotrMachowski%2FHome-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PiotrMachowski","download_url":"https://codeload.github.com/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253932868,"owners_count":21986468,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloud","custom-component","dreame","hacs","home-assistant","map","roborock","robot","roidmi","vacuum","vacuum-map","viomi","xiaomi","xiaomi-smart-home","xiaomi-vacuum"],"created_at":"2024-08-04T00:01:24.016Z","updated_at":"2025-05-13T11:31:19.087Z","avatar_url":"https://github.com/PiotrMachowski.png","language":"Python","funding_links":["https://ko-fi.com/piotrmachowski","buycoffee.to/piotrmachowski","paypal.me/PiMachowski","revolut.me/314ma","https://ko-fi.com/piotrmachowski'","https://paypal.me/PiMachowski","https://www.buymeacoffee.com/PiotrMachowski"],"categories":["Install from Source","Custom Integrations"],"sub_categories":["Smart Home Automation","Alternative Dashboards"],"readme":"[![HACS Default][hacs_shield]][hacs]\n[![GitHub Latest Release][releases_shield]][latest_release]\n[![GitHub All Releases][downloads_total_shield]][releases]\n[![Community Forum][community_forum_shield]][community_forum]\u003c!-- piotrmachowski_support_badges_start --\u003e\n[![Ko-Fi][ko_fi_shield]][ko_fi]\n[![buycoffee.to][buycoffee_to_shield]][buycoffee_to]\n[![PayPal.Me][paypal_me_shield]][paypal_me]\n[![Revolut.Me][revolut_me_shield]][revolut_me]\n\u003c!-- piotrmachowski_support_badges_end --\u003e\n\n\n[hacs_shield]: https://img.shields.io/static/v1.svg?label=HACS\u0026message=Default\u0026style=popout\u0026color=green\u0026labelColor=41bdf5\u0026logo=HomeAssistantCommunityStore\u0026logoColor=white\n[hacs]: https://hacs.xyz/docs/default_repositories\n\n[latest_release]: https://github.com/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor/releases/latest\n[releases_shield]: https://img.shields.io/github/release/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor.svg?style=popout\n\n[releases]: https://github.com/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor/releases\n[downloads_total_shield]: https://img.shields.io/github/downloads/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor/total\n\n[community_forum_shield]: https://img.shields.io/static/v1.svg?label=%20\u0026message=Forum\u0026style=popout\u0026color=41bdf5\u0026logo=HomeAssistant\u0026logoColor=white\n[community_forum]: https://community.home-assistant.io/t/xiaomi-cloud-vacuum-map-extractor/231292\n\n\n\n# Xiaomi Cloud Map Extractor\n\nThis custom integration provides a way to present a live view of a map for Xiaomi, Roborock, Viomi, Roidmi and Dreame vacuums.\n([Supported devices](#supported-devices))\n\n\u003cimg src=\"https://raw.githubusercontent.com/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor/master/images/map_no_rooms.png\" width=48%\u003e  \u003cimg src=\"https://raw.githubusercontent.com/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor/master/images/map_rooms.png\" width=48%\u003e\n\n## Installation\n\n### Using [HACS](https://hacs.xyz/) (recommended)\n\nThis integration can be installed using HACS.\nTo do it search for `Xiaomi Cloud Map Extractor` in *Integrations* section.\n\n### Manual\n\nTo install this integration manually you have to download [*xiaomi_cloud_map_extractor.zip*](https://github.com/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor/releases/latest/download/xiaomi_cloud_map_extractor.zip) and extract its contents to `config/custom_components/xiaomi_cloud_map_extractor` directory:\n```bash\nmkdir -p custom_components/xiaomi_cloud_map_extractor\ncd custom_components/xiaomi_cloud_map_extractor\nwget https://github.com/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor/releases/latest/download/xiaomi_cloud_map_extractor.zip\nunzip xiaomi_cloud_map_extractor.zip\nrm xiaomi_cloud_map_extractor.zip\n```\n\n## Configuration\n\nAfter installation of the custom component, it needs to be configured in `configuration.yaml` file.\nTo do so, add a camera entry to your configuration with at least a [basic](#basic) or [recommended](#recommended) configuration.\nVacuum token can be extracted by following [this guide](https://www.home-assistant.io/integrations/xiaomi_miio/#retrieving-the-access-token) (ignore \"not recommended\" message, as it applies only to built-in Xiaomi Miio integration).\nYou also need to enter your Xiaomi Cloud username and password.\nThese are the credentials used for the Xiaomi Home app (_not ones from Roborock app_).\n\nAfter installation and a reboot of your Home Assistant instance, you should get a camera entity which shows the vacuum map.\nThis might take a few minutes after a first restart.\nIf you have a problem with configuration validation you have to remove camera from `configuration.yaml`, restart Home Assistant, add camera config and restart HA again.\n\nAfter modification of camera's configuration you can reload its settings in [Configuration](https://my.home-assistant.io/redirect/config/) or using `xiaomi_cloud_map_extractor.reload` service.\n\n### Examples\n\n#### Basic\n\n```yaml\ncamera:\n  - platform: xiaomi_cloud_map_extractor\n    host: !secret xiaomi_vacuum_host\n    token: !secret xiaomi_vacuum_token\n    username: !secret xiaomi_cloud_username\n    password: !secret xiaomi_cloud_password\n```\n\n#### Recommended\n\n```yaml\ncamera:\n  - platform: xiaomi_cloud_map_extractor\n    host: !secret xiaomi_vacuum_host\n    token: !secret xiaomi_vacuum_token\n    username: !secret xiaomi_cloud_username\n    password: !secret xiaomi_cloud_password\n    draw: ['all']\n    attributes:\n      - calibration_points\n```\n\n\n#### Full\n\n| This configuration's purpose is to show all available options, do not use it unless you know what you are doing. |\n| --- |\n\n\u003cdetails\u003e\n\u003csummary\u003eI know what I'm doing and I will not recklessly copy this config to my setup\u003c/summary\u003e\n\n```yaml\ncamera:\n  - platform: xiaomi_cloud_map_extractor\n    host: !secret xiaomi_vacuum_host\n    token: !secret xiaomi_vacuum_token\n    username: !secret xiaomi_cloud_username\n    password: !secret xiaomi_cloud_password\n    country: \"de\"\n    name: \"My Vacuum Camera\"\n    colors:\n      color_map_inside: [32, 115, 185]\n      color_map_outside: [19, 87, 148]\n      color_map_wall: [100, 196, 254]\n      color_map_wall_v2: [93, 109, 126]\n      color_grey_wall: [93, 109, 126]\n      color_ignored_obstacle: [0, 0, 0, 127]\n      color_ignored_obstacle_with_photo: [0, 0, 0, 127]\n      color_obstacle: [0, 0, 0, 127]\n      color_obstacle_with_photo: [0, 0, 0, 127]\n      color_path: [147, 194, 238]\n      color_mop_path: [255, 255, 255, 0x5F]\n      color_goto_path: [0, 255, 0]\n      color_predicted_path: [255, 255, 0, 0]\n      color_cleaned_area: [127, 127, 127, 127]\n      color_zones: [0xAD, 0xD8, 0xFF, 0x8F]\n      color_zones_outline: [0xAD, 0xD8, 0xFF]\n      color_virtual_walls: [255, 0, 0]\n      color_carpets: [0xA9, 0xF7, 0xA9 ]\n      color_no_carpet_zones: [255, 33, 55, 0x5F]\n      color_no_carpet_zones_outline: [255, 0, 0]\n      color_new_discovered_area: [64, 64, 64]\n      color_no_go_zones: [255, 33, 55, 127]\n      color_no_go_zones_outline: [255, 0, 0]\n      color_no_mop_zones: [163, 130, 211, 127]\n      color_no_mop_zones_outline: [163, 130, 211]\n      color_charger: [0x66, 0xfe, 0xda, 0x7f]\n      color_robo: [75, 235, 149]\n      color_room_names: [0, 0, 0]\n      color_unknown: [0, 0, 0]\n      color_scan: [0xDF, 0xDF, 0xDF]\n    room_colors:\n      1: [240, 178, 122]\n      2: [133, 193, 233]\n      3: [217, 136, 128]\n      4: [52, 152, 219]\n      5: [205, 97, 85]\n      6: [243, 156, 18]\n      7: [88, 214, 141]\n      8: [245, 176, 65]\n      9: [252, 212, 81]\n      10: [72, 201, 176]\n      11: [84, 153, 199]\n      12: [133, 193, 233]\n      13: [245, 176, 65]\n      14: [82, 190, 128]\n      15: [72, 201, 176]\n      16: [165, 105, 18]\n    draw:\n      - charger\n      - cleaned_area\n      - goto_path\n      - ignored_obstacles\n      - ignored_obstacles_with_photo\n      - mop_path\n      - no_carpet_zones\n      - no_go_zones\n      - no_mopping_zones\n      - obstacles\n      - obstacles_with_photo\n      - path\n      - predicted_path\n      - room_names\n      - vacuum_position\n      - virtual_walls\n      - zones\n    texts:\n      - text: \"Room 1\"\n        x: 25\n        y: 25\n        color: [125, 20, 213]\n      - text: \"Room 2\"\n        x: 25\n        y: 75\n        color: [125, 20, 213, 127]\n        font: \"FreeSans.ttf\"\n        font_size: 25\n    map_transformation:\n      scale: 2\n      rotate: 180\n      trim:\n        top: 10\n        bottom: 20\n        left: 30\n        right: 40\n    sizes:\n      charger_radius: 4\n      vacuum_radius: 6.5\n      path_width: 1\n      mop_path_width: 16\n      obstacle_radius: 3\n      ignored_obstacle_radius: 3\n      obstacle_with_photo_radius: 3\n      ignored_obstacle_with_photo_radius: 3\n    attributes:\n      - calibration_points\n      - carpet_map\n      - charger\n      - cleaned_rooms\n      - country\n      - goto\n      - goto_path\n      - goto_predicted_path\n      - image\n      - is_empty\n      - map_name\n      - mop_path\n      - no_carpet_areas\n      - no_go_areas\n      - no_mopping_areas\n      - obstacles\n      - ignored_obstacles\n      - obstacles_with_photo\n      - ignored_obstacles_with_photo\n      - path\n      - room_numbers\n      - rooms\n      - vacuum_position\n      - vacuum_room\n      - vacuum_room_name\n      - walls\n      - zones\n    scan_interval:\n      seconds: 10\n    auto_update: true\n    store_map_raw: false\n    store_map_image: true\n    store_map_path: \"/tmp\"\n    force_api: xiaomi\n```\n\u003c/details\u003e\n\n### Available configuration parameters\n\n| Key | Type | Required | Value | Description |\n|---|---|---|---|---|\n| `platform` | string | true | `xiaomi_cloud_map_extractor` | Name of a platform |\n| `host` | string | true | `192.168.0.123` | IP address of a vacuum |\n| `token` | string | true | `ghjhca3ykg8o2zyyj7xb5adamhgsypel` | Token of a vacuum |\n| `username` | string | true | `xiaomi.account@gmail.com` | Username (email or user ID) used to connect to Xiaomi cloud (the account used in the Xiaomi Home app) |\n| `password` | string | true | `aVerySecretPassword` | Password used to connect to Xiaomi cloud (the account used in the Xiaomi Home app) |\n| `name` | string | false |   | Desired name of camera entity |\n| `country` | string | false | One of: `cn`, `de`, `us`, `ru`, `tw`, `sg`, `in`, `i2` | Server used in Xiaomi cloud. Leave empty if you are not sure. |\n| `colors` | map | false |  | Colors configuration ([see below](#colors-configuration)) |\n| `room_colors` | map | false |  | Room colors configuration ([see below](#room-colors-configuration)) |\n| `draw` | list | false |  | List of elements to draw on a map ([see below](#draw-configuration)) |\n| `texts` | list | false |  | List of texts to draw on a map ([see below](#texts-configuration)) |\n| `map_transformation` | map | false |  | Parameters of map transformation ([see below](#map-transformation-configuration)) |\n| `sizes` | map | false |  | Sizes of map's elements ([see below](#sizes-configuration)) |\n| `attributes` | list | false |  | List of desired entity attributes ([see below](#attributes-configuration)) |\n| `scan_interval` | interval | false | default: `5` seconds | Interval between map updates ([documentation](https://www.home-assistant.io/docs/configuration/platform_options/#scan-interval)) |\n| `auto_update` | boolean | false | default: `true` | Activation/deactivation of automatic map updates. ([see below](#updates)) |\n| `store_map_raw` | boolean | false | default: `false` | Enables storing raw map data in `store_map_path` directory ([more info](#retrieving-map)). Xiaomi map can be opened with [RoboMapViewer](https://github.com/marcelrv/XiaomiRobotVacuumProtocol/tree/master/RRMapFile). |\n| `store_map_image` | boolean | false | default: `false` | Enables storing map image in `store_map_path` path with name `map_image_\u003cdevice_model\u003e.png` |\n| `store_map_path` | string | false | default: `/tmp` | Storing map data directory |\n| `force_api` | string | false | One of: `xiaomi`, `viomi`, `roidmi`, `dreame` | Forces usage of specific API. |\n\n#### Colors configuration\n\n  Each color is represented by a list of 3 or 4 parameters: `[red, green, blue]` or `[red, green, blue, alpha]`.\n  Each parameter is a number from a range 0-255 and can be also provided as a HEX value: [0x12, 0xAF, 0xC5] matches #12AFC5.\n\n  \u003cimg src=\"https://raw.githubusercontent.com/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor/master/images/map_no_rooms_custom_colors.png\" width=50%\u003e\n\n  | Color name | Description |\n  | --- | --- |\n  | `color_carpets` | Carpets fill, in checkboard pattern |\n  | `color_charger` | Charger fill |\n  | `color_charger_outline` | Charger outline |\n  | `color_cleaned_area` | Fill of area that already has been cleaned |\n  | `color_goto_path` | Path for goto mode |\n  | `color_grey_wall` | Obstacles (e.g. chairs, table legs) |\n  | `color_ignored_obstacle_with_photo` | Ignored obstacle with photo mark on a map |\n  | `color_ignored_obstacle` | Ignored obstacle mark on a map |\n  | `color_map_inside` | Map inside (for software without rooms support) |\n  | `color_map_outside` | Map outside |\n  | `color_map_wall_v2` | Walls (for software with rooms support) |\n  | `color_map_wall` | Walls (for software without rooms support) |\n  | `color_new_discovered_area` | Newly discovered areas |\n  | `color_no_carpet_zones_outline` | Outline of no-carpet zones |\n  | `color_no_carpet_zones` | Fill of no-carpet zones |\n  | `color_no_go_zones_outline` | Outline of no-go zones |\n  | `color_no_go_zones` | Fill of no-go zones |\n  | `color_no_mop_zones_outline` | Outline of no-mopping zones |\n  | `color_no_mop_zones` | Fill of no-mopping zones |\n  | `color_obstacle_with_photo` | Obstacle with photo mark on a map |\n  | `color_obstacle` | Obstacle mark on a map |\n  | `color_path` | Path of a vacuum |\n  | `color_mop_path` | Mopped path of a vacuum (for vacuums that support mopping) |\n  | `color_predicted_path` | Predicted path to a point in goto mode |\n  | `color_robo` | Vacuum fill |\n  | `color_robo_outline` | Vacuum outline |\n  | `color_room_names` | Room names (if available) |\n  | `color_scan` | Areas not assigned to any room (for software with rooms support) |\n  | `color_unknown` | Other areas |\n  | `color_virtual_walls` | Virtual walls |\n  | `color_zones_outline` | Outline of areas selected for zoned cleaning |\n  | `color_zones` | Fill of areas selected for zoned cleaning |\n\n#### Room colors configuration\n\n  This section contains mapping between room numbers and colors.\n  Each color is represented by a list of 3 or 4 parameters: `[red, green, blue]` or `[red, green, blue, alpha]`.\n  Each parameter is a number from a range 0-255 and can be also provided as a HEX value: [0x12, 0xAF, 0xC5] matches #12AFC5.\n\n#### Draw configuration\n\n  A list of features to be drawn on a map. If all features should be drawn it can be replaced with:\n  ```yaml\n    draw: [\"all\"]\n  ```\n  Available values:\n  - `charger`\n  - `cleaned_area`\n  - `goto_path`\n  - `ignored_obstacles_with_photo`\n  - `ignored_obstacles`\n  - `mop_path`\n  - `no_carpet_zones`\n  - `no_go_zones`\n  - `no_mopping_zones`\n  - `obstacles_with_photo`\n  - `obstacles`\n  - `path`\n  - `predicted_path`\n  - `room_names`\n  - `vacuum_position`\n  - `virtual_walls`\n  - `zones`\n\n#### Texts configuration\n\nEach list entry must obey a following schema.\nYou can get a list of available fonts by executing this command:\n```bash\nfc-list | grep ttf | sed \"s/.*\\///\"| sed \"s/ttf.*/ttf/\"\n```\n\n  | Parameter | Type | Required | Default value | Description |\n  |---|---|---|---|---|\n  | `text` | string | true |   | Text to draw on a map |\n  | `x` | float | true |   | X position of a text (in percents) |\n  | `y` | float | true |   | Y position of a text (in percents) |\n  | `color` | list | false | black | Desired color of a text, formatted like [here](#colors-configuration) |\n  | `font` | string | false |   | Name of a font to use |\n  | `font_size` | int | false |   | Size of a font |\n\n#### Map transformation configuration\n\n  | Parameter | Type | Required | Default value | Description |\n  |---|---|---|---|---|\n  | `scale` | float | false | 1 | Scaling factor for a map. |\n  | `rotate` | integer | false | 0 | Angle of map rotation. Available values: [`0`, `90`, `180`, `270`] |\n  | `trim` | map | false | 0 | Map trimming configuration. Each trimming direction is in percents: value `25` means trimming of quarter of image size in a given dimension. Available keys: [`left`, `right`, `top`, `bottom`] |\n\n#### Sizes configuration\n\n  | Parameter | Type | Required | Default value | Description |\n  |---|---|---|---|---|\n  | `charger_radius` | float | false | 6 | Radius of a charger circle. |\n  | `vacuum_radius` | float | false | 6 | Radius of a vacuum semi-circle. |\n  | `obstacle_radius` | float | false | 3 | Radius of an obstacle circle. |\n  | `ignored_obstacle_radius` | float | false | 3 | Radius of an ignored obstacle circle circle. |\n  | `obstacle_with_photo_radius` | float | false | 3 | Radius of an obstacle with photo circle. |\n  | `ignored_obstacle_with_photo_radius` | float | false | 3 | Radius of an ignored obstacle with photo circle. |\n  | `path_width` | float | false | 1 | Width of path line. |\n  | `mop_path_width` | float | false | equal to vacuum radius | Width of mop path line. |\n\n#### Attributes configuration\n\n  A list of attributes that an entity should have.\n  Available values:\n  - `calibration_points` - Calculated calibration points for [Lovelace Xiaomi Vacuum Map card](https://github.com/PiotrMachowski/lovelace-xiaomi-vacuum-map-card).\n     \u003cimg src=\"https://raw.githubusercontent.com/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor/master/images/map_card.gif\" width=50%\u003e\n  - `carpet_map`\n  - `charger`\n  - `cleaned_rooms`\n  - `country`\n  - `goto_path`\n  - `goto_predicted_path`\n  - `goto`\n  - `ignored_obstacles_with_photo`\n  - `ignored_obstacles`\n  - `image`\n  - `is_empty`\n  - `map_name`\n  - `mop_path`\n  - `no_carpet_areas`\n  - `no_go_areas`\n  - `no_mopping_areas`\n  - `obstacles_with_photo`\n  - `obstacles`\n  - `path`\n  - `room_numbers`\n  - `rooms`\n  - `vacuum_position`\n  - `vacuum_room_name`\n  - `vacuum_room`\n  - `walls`\n  - `zones`\n\n## Updates\n\nCamera image is updated every 5s by default.\nIt can be disabled in config using `auto_update` property.\n\nYou can also disable and enable automatic updates using services `camera.turn_off`, `camera.turn_on`.\n\nIf automatic updates are disabled you can manually trigger update using `homeassistant.update_entity` service.\n\nYou can change interval of automatic updates using `scan_interval` setting ([documentation](https://www.home-assistant.io/docs/configuration/platform_options/#scan-interval))\n\nIf you want to disable map updates when a vacuum is not running you can use [this blueprint](https://github.com/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor/blob/master/blueprints/automation/disable_vacuum_camera_update_when_docked.yaml).\n\n[![Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.](https://my.home-assistant.io/badges/blueprint_import.svg)](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fgithub.com%2FPiotrMachowski%2FHome-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor%2Fblob%2Fmaster%2Fblueprints%2Fautomation%2Fdisable_vacuum_camera_update_when_docked.yaml)\n\n## Supported devices\n\nThis integration was tested on following vacuums:\n - Xiaomi map format:\n   - `rockrobo.vacuum.v1` (Xiaomi Vacuum Gen 1, Mi Robot Vacuum, SDJQR01RR, SDJQR02RR)\n   - `roborock.vacuum.m1s` (Xiaomi Mi Robot 1S)\n   - `roborock.vacuum.s4` (Roborock S4)\n   - `roborock.vacuum.s5` (Roborock S5)\n   - `roborock.vacuum.s5e` (Roborock S5 Max)\n   - `rockrobo.vacuum.s6` (Roborock S6)\n   - `roborock.vacuum.a08` (Roborock S6 Pure)\n   - `roborock.vacuum.a10` (Roborock S6 MaxV)\n   - `roborock.vacuum.a15` (Roborock S7)\n   - `roborock.vacuum.a19` (Roborocka S4 Max)\n   - `roborock.vacuum.a27` (Roborock S7 MaxV)\n   - `roborock.vacuum.a70` (Roborock S8 Pro Ultra)\n - Viomi map format:\n   - `viomi.vacuum.v6` (Viomi Vacuum V2 Pro, Xiaomi Mijia STYJ02YM, Mi Robot Vacuum Mop Pro)\n   - `viomi.vacuum.v7` (Mi Robot Vacuum-Mop Pro)\n   - `viomi.vacuum.v8` (Mi Robot Vacuum-Mop Pro)\n   - `viomi.vacuum.v13` (Viomi V3)\n - Roidmi map format:\n   - `roidmi.vacuum.v60` (Roidmi EVE Plus)\n   - `viomi.vacuum.v18` (Viomi S9)\n   - `viomi.vacuum.v38` (Viomi V5 Pro)\n   - `zhimi.vacuum.xa1` (Lydsto R1)\n   - `chuangmi.vacuum.hmi707` (IMILAB V1 Vacuum)\n - Dreame map format:\n   - `dreame.vacuum.mc1808` (Xiaomi Mi Mop/Xiaomi Mijia 1C)\n   - `dreame.vacuum.p2008` (Dreame F9)\n   - `dreame.vacuum.p2009` (Dreame D9)\n   - `dreame.vacuum.p2028` (Dreame Z10 Pro)\n   - `dreame.vacuum.p2029` (Dreame L10 Pro)\n   - `dreame.vacuum.p2036` (Trouver LDS Cleaner)\n   - `dreame.vacuum.p2041o` (Xiaomi Mop 2 Pro+)\n   - `dreame.vacuum.p2140` (Mijia Robot Vacuum-Mop 2C)\n   - `dreame.vacuum.p2157` (MOVA L600)\n   - `dreame.vacuum.p2259` (Dreame D9 Max)\n\n## Retrieving map\n\nWhen `store_map_raw: true` is added to your config this integration will store a raw map file in `/tmp` directory.\nIf you don't use Core installation ([installation types](https://www.home-assistant.io/installation/#compare-installation-methods)) you can retrieve this file in the following way:\n- In [SSH \u0026 Terminal add-on](https://github.com/hassio-addons/addon-ssh) enable protected access\n- Open terminal and use the following command to copy file:\n  ```\n  docker exec homeassistant bash -c \"mkdir -p /config/tmp/ \u0026\u0026 cp /tmp/map_* /config/tmp/\"\n  ```\n- Map file will appear in `tmp` folder in your `config` folder\n\n## Enabling debug logging\n\nTo enable debug logging add following section to your `configuration.yaml`\n\n```yaml\nlogger:\n  default: info\n  logs:\n    custom_components.xiaomi_cloud_map_extractor: debug\n```\n\n## Special thanks\n\nThis integration wouldn't exist without following projects:\n - [openHAB miIO add-on](https://github.com/openhab/openhab-addons/tree/main/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio) by [@marcelrv](https://github.com/marcelrv)\n - [valeCLOUDo](https://github.com/Xento/valeCLOUDo) by [@Xento](https://github.com/Xento)\n - [Xiaomi Robot Vacuum Protocol](https://github.com/marcelrv/XiaomiRobotVacuumProtocol) by [@marcelrv](https://github.com/marcelrv)\n - [Valetudo](https://github.com/Hypfer/Valetudo) by [@Hypfer](https://github.com/Hypfer)\n\n\n\n\u003c!-- piotrmachowski_support_links_start --\u003e\n\n## Support\n\nIf you want to support my work with a donation you can use one of the following platforms:\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth\u003ePlatform\u003c/th\u003e\n    \u003cth\u003ePayment methods\u003c/th\u003e\n    \u003cth\u003eLink\u003c/th\u003e\n    \u003cth\u003eComment\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eKo-fi\u003c/td\u003e\n    \u003ctd\u003e\n      \u003cli\u003ePayPal\u003c/li\u003e\n      \u003cli\u003eCredit card\u003c/li\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003ca href='https://ko-fi.com/piotrmachowski' target='_blank'\u003e\u003cimg height='35px' src='https://storage.ko-fi.com/cdn/kofi6.png?v=6' border='0' alt='Buy Me a Coffee at ko-fi.com' /\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003cli\u003eNo fees\u003c/li\u003e\n      \u003cli\u003eSingle or monthly payment\u003c/li\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003ebuycoffee.to\u003c/td\u003e\n    \u003ctd\u003e\n      \u003cli\u003eBLIK\u003c/li\u003e\n      \u003cli\u003eBank transfer\u003c/li\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003ca href=\"https://buycoffee.to/piotrmachowski\" target=\"_blank\"\u003e\u003cimg src=\"https://buycoffee.to/btn/buycoffeeto-btn-primary.svg\" height=\"35px\" alt=\"Postaw mi kawę na buycoffee.to\"\u003e\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003ePayPal\u003c/td\u003e\n    \u003ctd\u003e\n      \u003cli\u003ePayPal\u003c/li\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003ca href=\"https://paypal.me/PiMachowski\" target=\"_blank\"\u003e\u003cimg src=\"https://www.paypalobjects.com/webstatic/mktg/logo/pp_cc_mark_37x23.jpg\" border=\"0\" alt=\"PayPal Logo\" height=\"35px\" style=\"height: auto !important;width: auto !important;\"\u003e\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003cli\u003eNo fees\u003c/li\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eRevolut\u003c/td\u003e\n    \u003ctd\u003e\n      \u003cli\u003eRevolut\u003c/li\u003e\n      \u003cli\u003eCredit Card\u003c/li\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003ca href=\"https://revolut.me/314ma\" target=\"_blank\"\u003e\u003cimg src=\"https://assets.revolut.com/assets/favicons/favicon-32x32.png\" height=\"32px\" alt=\"Revolut\"\u003e\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003cli\u003eNo fees\u003c/li\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n### Powered by\n[![PyCharm logo.](https://resources.jetbrains.com/storage/products/company/brand/logos/jetbrains.svg)](https://jb.gg/OpenSourceSupport)\n\n\n[ko_fi_shield]: https://img.shields.io/static/v1.svg?label=%20\u0026message=Ko-Fi\u0026color=F16061\u0026logo=ko-fi\u0026logoColor=white\n\n[ko_fi]: https://ko-fi.com/piotrmachowski\n\n[buycoffee_to_shield]: https://shields.io/badge/buycoffee.to-white?style=flat\u0026labelColor=white\u0026logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABhmlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw1AUhU9TpaIVh1YQcchQnayIijhKFYtgobQVWnUweemP0KQhSXFxFFwLDv4sVh1cnHV1cBUEwR8QVxcnRRcp8b6k0CLGC4/3cd49h/fuA4R6malmxzigapaRisfEbG5FDLzChxB6MIZ+iZl6Ir2QgWd93VM31V2UZ3n3/Vm9St5kgE8knmW6YRGvE09vWjrnfeIwK0kK8TnxqEEXJH7kuuzyG+eiwwLPDBuZ1BxxmFgstrHcxqxkqMRTxBFF1ShfyLqscN7irJarrHlP/sJgXltOc53WEOJYRAJJiJBRxQbKsBClXSPFRIrOYx7+QcefJJdMrg0wcsyjAhWS4wf/g9+zNQuTE25SMAZ0vtj2xzAQ2AUaNdv+PrbtxgngfwautJa/UgdmPkmvtbTIEdC3DVxctzR5D7jcAQaedMmQHMlPSygUgPcz+qYcELoFulfduTXPcfoAZGhWSzfAwSEwUqTsNY93d7XP7d+e5vx+AIahcq//o+yoAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5wETCy4vFNqLzwAAAVpJREFUOMvd0rFLVXEYxvHPOedKJnKJhrDLuUFREULE7YDCMYj+AydpsCWiaKu29hZxiP4Al4aWwC1EdFI4Q3hqEmkIBI8ZChWXKNLLvS0/Qcza84V3enm/7/s878t/HxGkeTaIGziP+EB918nawu7Dq1d0e1+2J2bepnk2jFEUVVF+qKV51o9neBCaugfge70keoxxUbSWjrQ+4SUyzKZ5NlnDZdzGG7w4DIh+dtZEFntDA98l8S0MYwctNGrYz9WqKJePFLq80g5Sr+EHlnATp+NA+4qLaZ7FfzMrzbMBjGEdq8GrJMZnvAvFC/8wfAwjWMQ8XmMzaW9sdevNRgd3MFhvNpbaG1u/Dk2/hOc4gadVUa7Um425qii/7Z+xH9O4jwW8Cqv24Tru4hyeVEU588cfBMgpPMI9nMFe0BkFzVOYrYqycyQgQJLwTC2cDZCPeF8V5Y7jGb8BUpRicy7OU5MAAAAASUVORK5CYII=\n\n[buycoffee_to]: https://buycoffee.to/piotrmachowski\n\n[buy_me_a_coffee_shield]: https://img.shields.io/static/v1.svg?label=%20\u0026message=Buy%20me%20a%20coffee\u0026color=6f4e37\u0026logo=buy%20me%20a%20coffee\u0026logoColor=white\n\n[buy_me_a_coffee]: https://www.buymeacoffee.com/PiotrMachowski\n\n[paypal_me_shield]: https://img.shields.io/static/v1.svg?label=%20\u0026message=PayPal.Me\u0026logo=paypal\n\n[paypal_me]: https://paypal.me/PiMachowski\n\n[revolut_me_shield]: https://img.shields.io/static/v1.svg?label=%20\u0026message=Revolut\u0026logo=revolut\n\n[revolut_me]: https://revolut.me/314ma\n\u003c!-- piotrmachowski_support_links_end --\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPiotrMachowski%2FHome-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FPiotrMachowski%2FHome-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPiotrMachowski%2FHome-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor/lists"}