{"id":13588696,"url":"https://github.com/denysdovhan/vacuum-card","last_synced_at":"2025-10-08T21:53:00.659Z","repository":{"id":37084397,"uuid":"261291295","full_name":"denysdovhan/vacuum-card","owner":"denysdovhan","description":"Vacuum cleaner card for Home Assistant Lovelace UI","archived":false,"fork":false,"pushed_at":"2025-08-26T08:37:18.000Z","size":3116,"stargazers_count":1056,"open_issues_count":33,"forks_count":540,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-08-26T10:37:56.521Z","etag":null,"topics":["custom-cards","hacs","hass","home-assistant","homeassistant","lovelace","robot-vacuum","vacuum"],"latest_commit_sha":null,"homepage":"https://denysdovhan.com/smart-home","language":"TypeScript","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/denysdovhan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","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":{"github":"denysdovhan","custom":["buymeacoffee.com/denysdovhan"]}},"created_at":"2020-05-04T20:42:38.000Z","updated_at":"2025-08-26T08:37:22.000Z","dependencies_parsed_at":"2023-12-10T21:25:36.465Z","dependency_job_id":"39f07f47-69f1-46f4-880c-22df0e7911a5","html_url":"https://github.com/denysdovhan/vacuum-card","commit_stats":{"total_commits":651,"total_committers":126,"mean_commits":5.166666666666667,"dds":0.6559139784946236,"last_synced_commit":"54c666054d86ad8c58f1d69a10ab4a8312b4cae0"},"previous_names":[],"tags_count":109,"template":false,"template_full_name":null,"purl":"pkg:github/denysdovhan/vacuum-card","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/denysdovhan%2Fvacuum-card","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/denysdovhan%2Fvacuum-card/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/denysdovhan%2Fvacuum-card/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/denysdovhan%2Fvacuum-card/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/denysdovhan","download_url":"https://codeload.github.com/denysdovhan/vacuum-card/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/denysdovhan%2Fvacuum-card/sbom","scorecard":{"id":334610,"data":{"date":"2025-08-11","repo":{"name":"github.com/denysdovhan/vacuum-card","commit":"ad4c7b56fa79b7a8dd94437086d0ce202a65f4bd"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"checks":[{"name":"Code-Review","score":2,"reason":"Found 3/13 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: topLevel 'contents' permission set to 'write': .github/workflows/main.yml:7","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":5,"reason":"dependency not pinned by hash detected -- score normalized to 5","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/denysdovhan/vacuum-card/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/denysdovhan/vacuum-card/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/denysdovhan/vacuum-card/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/denysdovhan/vacuum-card/main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/main.yml:69: update your workflow using https://app.stepsecurity.io/secureworkflow/denysdovhan/vacuum-card/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/stale.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/denysdovhan/vacuum-card/stale.yml/main?enable=pin","Info:   0 out of   5 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   2 out of   2 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: MIT License: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v2.11.0 not signed: https://api.github.com/repos/denysdovhan/vacuum-card/releases/206033464","Warn: release artifact v2.10.3 not signed: https://api.github.com/repos/denysdovhan/vacuum-card/releases/206033354","Warn: release artifact v2.10.2 not signed: https://api.github.com/repos/denysdovhan/vacuum-card/releases/206032315","Warn: release artifact v2.10.1 not signed: https://api.github.com/repos/denysdovhan/vacuum-card/releases/167471926","Warn: release artifact v2.10.0 not signed: https://api.github.com/repos/denysdovhan/vacuum-card/releases/160725118","Warn: release artifact v2.11.0 does not have provenance: https://api.github.com/repos/denysdovhan/vacuum-card/releases/206033464","Warn: release artifact v2.10.3 does not have provenance: https://api.github.com/repos/denysdovhan/vacuum-card/releases/206033354","Warn: release artifact v2.10.2 does not have provenance: https://api.github.com/repos/denysdovhan/vacuum-card/releases/206032315","Warn: release artifact v2.10.1 does not have provenance: https://api.github.com/repos/denysdovhan/vacuum-card/releases/167471926","Warn: release artifact v2.10.0 does not have provenance: https://api.github.com/repos/denysdovhan/vacuum-card/releases/160725118"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/main.yml:34"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 20 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":4,"reason":"6 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-xffm-g5w8-qvg7","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-pfq8-rq6v-vf5m","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T04:25:25.532Z","repository_id":37084397,"created_at":"2025-08-18T04:25:25.533Z","updated_at":"2025-08-18T04:25:25.533Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000693,"owners_count":26082837,"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","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["custom-cards","hacs","hass","home-assistant","homeassistant","lovelace","robot-vacuum","vacuum"],"created_at":"2024-08-01T15:06:52.354Z","updated_at":"2025-10-08T21:53:00.651Z","avatar_url":"https://github.com/denysdovhan.png","language":"TypeScript","funding_links":["https://github.com/sponsors/denysdovhan","buymeacoffee.com/denysdovhan","https://www.buymeacoffee.com/denysdovhan","https://patreon.com/denysdovhan"],"categories":["Install from Source","TypeScript","Dashboards"],"sub_categories":["Smart Home Automation","Custom Cards"],"readme":"[![SWUbanner](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner-direct-single.svg)](https://stand-with-ukraine.pp.ua/)\n\n# Vacuum Card\n\n[![npm version][npm-image]][npm-url]\n[![hacs][hacs-image]][hacs-url]\n[![GitHub Sponsors][gh-sponsors-image]][gh-sponsors-url]\n[![Patreon][patreon-image]][patreon-url]\n[![Buy Me A Coffee][buymeacoffee-image]][buymeacoffee-url]\n[![Twitter][twitter-image]][twitter-url]\n\n\u003e Vacuum cleaner card for [Home Assistant][home-assistant] Lovelace UI\n\nBy default, Home Assistant does not provide any card for controlling vacuum cleaners. This card displays the state and allows to control your robot.\n\n![Preview of vacuum-card][preview-image]\n\n## Installing\n\n**💡 Tip:** If you like this project, consider giving me a tip for the time I spent building this project:\n\n\u003ca href=\"https://www.buymeacoffee.com/denysdovhan\" target=\"_blank\"\u003e\n  \u003cimg src=\"https://cdn.buymeacoffee.com/buttons/default-black.png\" alt=\"Buy Me A Coffee\" width=\"150px\"\u003e\n\u003c/a\u003e\n\n### HACS\n\nThis card is available in [HACS][hacs] (Home Assistant Community Store).\n\nJust search for `Vacuum Card` in plugins tab.\n\n### Manual\n\n1. Download `vacuum-card.js` file from the [latest-release].\n2. Put `vacuum-card.js` file into your `config/www` folder.\n3. Add reference to `vacuum-card.js` in Lovelace. There's two way to do that:\n\n   1. **Using UI:** _Configuration_ → _Lovelace Dashboards_ → _Resources Tab_ → Click Plus button → Set _Url_ as `/local/vacuum-card.js` → Set _Resource type_ as `JavaScript Module`.\n      **Note:** If you do not see the Resources Tab, you will need to enable _Advanced Mode_ in your _User Profile_\n   2. **Using YAML:** Add following code to `lovelace` section.\n\n      ```yaml\n      resources:\n        - url: /local/vacuum-card.js\n          type: module\n      ```\n\n4. Add `custom:vacuum-card` to Lovelace UI as any other card (using either editor or YAML configuration).\n\n## Usage\n\nThis card can be configured using Lovelace UI editor.\n\n1. In Lovelace UI, click 3 dots in top left corner.\n2. Click _Configure UI_.\n3. Click Plus button to add a new card.\n4. Find _Custom: Vacuum Card_ in the list.\n5. Choose `entity`.\n6. Now you should see the preview of the card!\n\n_Sorry, no support for `actions`, `shortcuts` and `stats` in visual config yet._\n\nTypical example of using this card in YAML config would look like this:\n\n```yaml\ntype: 'custom:vacuum-card'\nentity: vacuum.vacuum_cleaner\nactions:\n  start:\n    service: xiaomi_miio.vacuum_clean_segment\n    service_data:\n      entity_id: vacuum.vacuum_cleaner\n      segments: [16, 20]\nstats:\n  default:\n    - attribute: filter_left\n      unit: hours\n      subtitle: Filter\n    - attribute: side_brush_left\n      unit: hours\n      subtitle: Side brush\n    - attribute: main_brush_left\n      unit: hours\n      subtitle: Main brush\n    - attribute: sensor_dirty_left\n      unit: hours\n      subtitle: Sensors\n  cleaning:\n    - entity_id: sensor.vacuum_main_brush_left\n      value_template: '{{ (value | float(0) / 3600) | round(1) }}'\n      subtitle: Main brush\n      unit: hours\n    - attribute: cleaning_time\n      unit: minutes\n      subtitle: Cleaning time\nshortcuts:\n  - name: Clean living room\n    service: script.clean_living_room\n    icon: 'mdi:sofa'\n  - name: Clean bedroom\n    service: script.clean_bedroom\n    icon: 'mdi:bed-empty'\n  - name: Clean kitchen\n    service: script.clean_kitchen\n    icon: 'mdi:silverware-fork-knife'\n```\n\nHere is what every option means:\n\n| Name           |   Type    | Default      | Description                                                                                               |\n| -------------- | :-------: | ------------ | --------------------------------------------------------------------------------------------------------- |\n| `type`         | `string`  | **Required** | `custom:vacuum-card`                                                                                      |\n| `entity`       | `string`  | **Required** | An entity_id within the `vacuum` domain.                                                                  |\n| `map`          | `string`  | Optional     | An entity_id within the `camera` domain, for streaming live vacuum map.                                   |\n| `map_refresh`  | `integer` | `5`          | Update interval for map camera in seconds                                                                 |\n| `image`        | `string`  | `default`    | Path to image of your vacuum cleaner. Better to have `png` or `svg`.                                      |\n| `show_name`    | `boolean` | `true`       | Show friendly name of the vacuum.                                                                         |\n| `show_status`  | `boolean` | `true`       | Show status of the vacuum.                                                                                |\n| `show_toolbar` | `boolean` | `true`       | Show toolbar with actions.                                                                                |\n| `compact_view` | `boolean` | `false`      | Compact view without image.                                                                               |\n| `stats`        | `object`  | Optional     | Custom per state stats for your vacuum cleaner                                                            |\n| `actions`      | `object`  | Optional     | Override default actions behavior with service invocations.                                               |\n| `shortcuts`    |  `array`  | Optional     | List of shortcuts shown at the right bottom part of the card with custom actions for your vacuum cleaner. |\n\n### `stats` object\n\nYou can use any attribute of vacuum or even any entity by `entity_id` to display by stats section. You can also combine `attribute` with `entity_id` to extract an attribute value of specific entity:\n\n| Name             |   Type   | Default  | Description                                                                                          |\n| ---------------- | :------: | -------- | ---------------------------------------------------------------------------------------------------- |\n| `entity_id`      | `string` | Optional | An entity_id with state, i.e. `sensor.vacuum`.                                                       |\n| `attribute`      | `string` | Optional | Attribute name of the stat, i.e. `filter_left`.                                                      |\n| `value_template` | `string` | Optional | Jinja2 template returning a value. `value` variable represents the `entity_id` or `attribute` state. |\n| `unit`           | `string` | Optional | Unit of measure, i.e. `hours`.                                                                       |\n| `subtitle`       | `string` | Optional | Friendly name of the stat, i.e. `Filter`.                                                            |\n\n### `actions` object\n\nYou can defined service invocations to override default actions behavior. Available actions to override are `start`, `pause`, `resume`, `stop`, `locate` and `return_to_base`.\n\n| Name           |   Type   | Default                           | Description                                     |\n| -------------- | :------: | --------------------------------- | ----------------------------------------------- |\n| `service`      | `string` | Optional                          | A service to call, i.e. `script.clean_bedroom`. |\n| `service_data` | `object` | `service_data` for `service` call |\n\n### `shortcuts` object\n\nYou can defined [custom scripts][ha-scripts] for custom actions i.e cleaning specific room and add them to this card with `shortcuts` option.\n\n| Name           |   Type   | Default                           | Description                                                             |\n| -------------- | :------: | --------------------------------- | ----------------------------------------------------------------------- |\n| `name`         | `string` | Optional                          | Friendly name of the action, i.e. `Clean bedroom`.                      |\n| `service`      | `string` | Optional                          | A service to call, i.e. `script.clean_bedroom`.                         |\n| `target`       | `object` | Optional                          | A `HassServiceTarget`, to define a target for the current service call. |\n| `icon`         | `string` | Optional                          | Any icon for action button.                                             |\n| `service_data` | `object` | `service_data` for `service` call |\n\n## Theming\n\nThis card can be styled by changing the values of these CSS properties (globally or per-card via [`card-mod`][card-mod]):\n\n| Variable                    | Default value                                                    | Description                          |\n| --------------------------- | ---------------------------------------------------------------- | ------------------------------------ |\n| `--vc-background`           | `var(--ha-card-background, var(--card-background-color, white))` | Background of the card               |\n| `--vc-primary-text-color`   | `var(--primary-text-color)`                                      | Vacuum name, stats values, etc       |\n| `--vc-secondary-text-color` | `var(--secondary-text-color)`                                    | Status, stats units and titles, etc  |\n| `--vc-icon-color`           | `var(--secondary-text-color)`                                    | Colors of icons                      |\n| `--vc-toolbar-background`   | `var(--vc-background)`                                           | Background of the toolbar            |\n| `--vc-toolbar-text-color`   | `var(--secondary-text-color)`                                    | Color of the toolbar texts           |\n| `--vc-toolbar-icon-color`   | `var(--secondary-text-color)`                                    | Color of the toolbar icons           |\n| `--vc-divider-color`        | `var(--entities-divider-color, var(--divider-color))`            | Color of dividers                    |\n| `--vc-spacing`              | `10px`                                                           | Paddings and margins inside the card |\n\n### Styling via theme\n\nHere is an example of customization via theme. Read more in the [Frontend documentation](https://www.home-assistant.io/integrations/frontend/).\n\n```yaml\nmy-custom-theme:\n  vc-background: '#17A8F4'\n  vc-spacing: 5px\n```\n\n### Styling via card-mod\n\nYou can use [`card-mod`][card-mod] to customize the card on per-card basis, like this:\n\n```yaml\ntype: 'custom:vacuum-card'\nstyle: |\n  ha-card {\n    --vc-background: #17A8F4;\n    --vc-spacing: 5px;\n  }\n  ...\n```\n\n## Animations\n\nI've added some animations for this card to make it alive. Animations are applied only for `image` property. Here's how they look like:\n\n|              Cleaning               |                Docking                |\n| :---------------------------------: | :-----------------------------------: |\n| ![Cleaning anumation][cleaning-gif] | ![Returning anumation][returning-gif] |\n\n## Supported languages\n\nThis card supports translations. Please, help to add more translations and improve existing ones. Here's a list of supported languages:\n\n- English\n- Українська (Ukrainian)\n- Deutsch (German)\n- Français (French)\n- Italiano (Italian)\n- Nederlands (Dutch)\n- Polski (Polish)\n- Русский (Russian)\n- Español (Spanish)\n- Čeština (Czech)\n- Magyar (Hungarian)\n- עִבְרִית (Hebrew)\n- Português (Portuguese)\n- Português Brasileiro (Brazilian Portuguese)\n- Svenska (Swedish)\n- Norsk bokmål (Norwegian)\n- Norsk nynorsk (Norwegian)\n- Dansk (Danish)\n- 한국어 (Korean)\n- Suomi (Finnish)\n- Català (Catalan)\n- 正體中文 (Traditional Chinese)\n- Việt Nam (Vietnamese)\n- Lietuvių (Lithuanian)\n- Română (Romanian)\n- 简体中文 (Simplified Chinese)\n- 日本語 (Japanese)\n- [_Your language?_][add-translation]\n\n## Supported models\n\nThis card relies on basic vacuum services, like `pause`, `start`, `stop`, `return_to_base`, etc. It should work with any robot vacuum, however I can physically test it only with my own robot vacuum.\n\nIf this card works with your vacuum cleaner, please open a PR and your model to the list.\n\n- **Roborock** S8 (MaxV Ultra, Ultra Pro), S7 (MaxV), S6 (MaxV, Pure), S5 (Max), S50, S4 (Max), E25, E4, Q5 Pro, Qrevo S\n- **Mijia** Robot Vacuum Cleaner 1C (STYTJ01ZHM)\n- **Xiaomi** Mi Robot (STYJ02YM), Mi Robot 1S, Mi Roborock V1 (SDJQR02RR), Mijia 1C, Mi Robot Vacuum-Mop P, Robot Vacuum E10\n- **Roomba** 670, 675, 676, 697, 960, 980, 981, i3, i7+, e5, S9, s9+, j7\n- **Braava** M6\n- **Dyson** 360 Eye\n- **Neato** D7, D6, D4\n- **Shark** IQ\n- **Ecova**cs Deebot 950, Deebot OZMO T8 AIVI, Deebot N79, Deebot N8, Deebot N8+, T9 AIVI, Deebot T20 Ombi\n- **Eufy** Robovac 30c, Robovac 35c, Robovac 15C Max, Robovac L70 Hybrid, Robovac X8, Robovac X8 Hybrid, Robovac G40\n- **EcoVacs** T9 AIVI\n- **Dreame** Z10 Pro, L10 Pro, D9, F9\n- 360 S7 Pro\n- KaBum! Smart 500\n- Honiture Q6 Lite\n- Neabot NoMo N1 Plus\n- Kyvol E31\n- Setti+ RV800\n- [_Your vacuum?_][edit-readme]\n\n## Development\n\nWant to contribute to the project?\n\nFirst of all, thanks! Check [contributing guideline](./CONTRIBUTING.md) for more information.\n\n## Inspiration\n\nThis project is heavily inspired by:\n\n- [MacBury Smart House][macbury-smart-house] — basically, this project is a refinement of MacBury's custom card.\n- [Benji][bbbenji-card] vacuum card — this is where I noticed this vacuum card design for the [first time](https://github.com/bbbenji/synthwave-hass/issues/29).\n\nHuge thanks for their ideas and efforts 👍\n\n## License\n\nMIT © [Denys Dovhan][denysdovhan]\n\n\u003c!-- Badges --\u003e\n\n[npm-url]: https://npmjs.org/package/vacuum-card\n[npm-image]: https://img.shields.io/npm/v/vacuum-card.svg?style=flat-square\n[hacs-url]: https://github.com/hacs/integration\n[hacs-image]: https://img.shields.io/badge/hacs-default-orange.svg?style=flat-square\n[gh-sponsors-url]: https://github.com/sponsors/denysdovhan\n[gh-sponsors-image]: https://img.shields.io/github/sponsors/denysdovhan?style=flat-square\n[patreon-url]: https://patreon.com/denysdovhan\n[patreon-image]: https://img.shields.io/badge/support-patreon-F96854.svg?style=flat-square\n[buymeacoffee-url]: https://patreon.com/denysdovhan\n[buymeacoffee-image]: https://img.shields.io/badge/support-buymeacoffee-222222.svg?style=flat-square\n[twitter-url]: https://twitter.com/denysdovhan\n[twitter-image]: https://img.shields.io/badge/twitter-%40denysdovhan-00ACEE.svg?style=flat-square\n\n\u003c!-- References --\u003e\n\n[home-assistant]: https://www.home-assistant.io/\n[hacs]: https://hacs.xyz\n[preview-image]: https://github.com/denysdovhan/vacuum-card/assets/3459374/43808d3d-65a4-4e65-9531-4f248fa8861c\n[cleaning-gif]: https://user-images.githubusercontent.com/3459374/81119202-fa60b500-8f32-11ea-9b23-325efa93d7ab.gif\n[returning-gif]: https://user-images.githubusercontent.com/3459374/81119452-765afd00-8f33-11ea-9dc5-9c26ba3f8c45.gif\n[latest-release]: https://github.com/denysdovhan/vacuum-card/releases/latest\n[ha-scripts]: https://www.home-assistant.io/docs/scripts/\n[edit-readme]: https://github.com/denysdovhan/vacuum-card/edit/main/README.md\n[card-mod]: https://github.com/thomasloven/lovelace-card-mod\n[add-translation]: https://github.com/denysdovhan/vacuum-card/blob/master/CONTRIBUTING.md#how-to-add-translation\n[macbury-smart-house]: https://macbury.github.io/SmartHouse/HomeAssistant/Vacuum/\n[bbbenji-card]: https://gist.github.com/bbbenji/24372e423f8669b2e6713638d8f8ceb2\n[denysdovhan]: https://denysdovhan.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdenysdovhan%2Fvacuum-card","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdenysdovhan%2Fvacuum-card","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdenysdovhan%2Fvacuum-card/lists"}