Наводимо лад в «розумному домі»: налаштування Vacuum Card для пилосмока в Home Assistant
Привіт, на зв’язку Богдан Свердлюк. Я люблю «розумний будинок» і розповідаю про нього українською. У цьому посібнику розглянемо, як легко налаштувати багатофункціональну картку пилосмока у Home Assistant на прикладі Xiaomi. російський військовий корабель іди нах***!
Картка Vacuum Card — це елемент інтерфейсу Home Assistant для пилосмоків різних брендів: Roborock, Mijia, Xiaomi, Roomba, Ecovacs та інших. Вона потрібна для зручного доступу до панелі інструментів пилосмока і перегляду статистики. Я налаштовуватиму її на прикладі Mi robot vacuum v1. Інтеграція робота та картка працюють одночасно з Mi Home.
Встановлення
За замовчуванням в Home Assistant на картку пилосмока потрібно натиснути ще раз, щоб отримати доступ до панелі інструментів. Це не зручно. Український розробник і супроводжувач відкритого коду Денис Довгань створив анімовану картку, яка відображає стан і дозволяє контролювати робота.
Окремо хочу зазначити, що кожен проєкт Дениса на Github має такий банер. Як на мене, це відповідально. росія понесе покарання за свої злочини.

1. Для картки необхідно встановити HACS (Home Assistant Community Store). Це такий собі агрегатор неофіційних інтеграцій та елементів інтерфейсу.
2. В HACS перейдіть у розділ Frontend >> Explore & Download repositories введіть Vacuum Card та завантажте його.

3. На дашборді (Lovelace) натисніть три крапки у верхньому лівому кутку >> Налаштувати зведення >> знизу натиснути кнопку додати картку та оберіть картку «Пилосос».

4. У конфігурації у рядку Entity впишіть назву свого пилосмока. Вона завжди починається з vacuum. Автодоповнення допоможе вам вказати назву правильно.

В результаті отримуємо картку, де можна почати прибирання, поставити на паузу, відправити пилосмок на базу, переглядати рівень заряду та змінювати потужність.

Статистика
Можна переглядати статистику будь-яких сенсорів пилосмока. Для цього я переробив приклад зі сторінки проєкту. Замініть vacuum.archik на назву свого приладу. Назву сенсорів можна переглянути в інтеграції Xiaomi Miio.
Вам не обов’язково мати багато статистики. Оберіть лише те, що вас цікавить. Наприклад час роботи фільтра покаже, коли його потрібно замінити.
type: custom:vacuum-card
entity: vacuum.archik
actions:
start:
service: vacuum.start
stats:
default:
- entity_id: sensor.archik_filter_left
value_template: '{{ (value | float(0) / 3600) | round(1) }}'
unit: годин
subtitle: Фільтр
- entity_id: sensor.archik_side_brush_left
value_template: '{{ (value | float(0) / 3600) | round(1) }}'
unit: годин
subtitle: Бічна Щітка
- entity_id: sensor.archik_main_brush_left
value_template: '{{ (value | float(0) / 3600) | round(1) }}'
unit: годин
subtitle: Головна щітка
- entity_id: sensor.archik_sensor_dirty_left
value_template: '{{ (value | float(0) / 3600) | round(1) }}'
unit: годин
subtitle: Сенсори

Якщо вставляти текст конфігурації, можна отримати помилку tab characters must not be used in indentation. Потрібно замінити символи TAB на пробіл. Зробити це можна онлайн.
Value template — це мова шаблонів, що дозволяє виконувати певні дії над отриманими значеннями. До прикладу вище, ми конвертували секунди в години.
Ось інший приклад статистики:
type: custom:vacuum-card
entity: vacuum.archik
actions:
start:
service: vacuum.start
service_data:
entity_id: vacuum.archik
stats:
default:
- entity_id: sensor.archik_last_clean_duration
value_template: '{{ (value | float(0) / 60) | round(1) }}'
unit: хвилин
subtitle: Час прибирання
- entity_id: sensor.archik_last_clean_end
value_template: '{{ relative_time(as_datetime(states(''sensor.archik_last_clean_end''))) }}'
subtitle: Останнє прибирання
- entity_id: sensor.archik_last_clean_area
value_template: '{{value | round(0) }}'
unit: м²
subtitle: Прибрана площа

’{{ relative_time(as_datetime(states(’’sensor.archik_last_clean_end’’))) }}’ — показує час, що минув з останнього прибирання.
’{{value | round(0) }}’ — округлює число.
Зоноване прибирання
Можна створити сценарій для прибирання певної кімнати і додати їх на картку у вигляді піктограми. Є два способи отримати зони прибирання:
— отримання номеру кімнати
— отримання координат кімнати
Розглянемо останній варіант. Моя конфігурація Vacuum Card виглядає так:
shortcuts: - name: Прибрати вітальню service: script.clean_living_room icon: mdi:sofa - name: Прибрати кухню service: script.clean_kitchen icon: mdi:silverware-fork-knife

Де script.clean ... це скрипти. Щоб створити скрипт перейдіть в бічне меню >> Конфігурація >> Скрипти >> Додати скрипт. У розділі «Послідовність» оберіть виклик служби xiaomi_miio.vacuum_clean_zone.
Ціллю оберіть сутність свого пилосмока. У розділі Zone вкажіть координати та кількість повторів, збережіть.
Щоб дізнатись назву скрипту в режимі редагування натисніть три крапки у верхньому правому куті >> Інформація >> Налаштування >> Ідентифікатор об’єкта.

Отримання координат кімнати
Є декілька способів дістати координати кімнати, проте найзручнішим для мене виявився той, що передбачає використання Xiaomi Cloud Map Extractor. Для цього:
1. Завантажте Xiaomi Cloud Map Extractor за допомогою HACS (розділ frontend).
2. Додайте до configuration.yaml таку конфігурацію:
camera: - platform: xiaomi_cloud_map_extractor host: 192.168.0.108 token: 33314e674j8c744a317a626d905e4157 username: [email protected] password: password_example colors: color_path: [255, 255, 255] draw: ['all'] map_transformation: scale: 1 trim: top: 20 bottom: 20 left: 20 right: 20 auto_update: true scan_interval: seconds: 600 #10minutes attributes: - calibration_points
де замініть host на ip свого пилосмока;
tocken — токен пристрою, легко отримати за допомогою Cloud Tokens Extractor. Його можна запустити в Home Assistant як python-скрипт або як програму Windows;
username — логін облікового запису Mi Home;
password — пароль облікового запису Mi Home.
3. Перезавантажте Home Assistant:

Після перезавантаження в інтерфейсі з’явиться карта кімнат, але без можливості взаємодії. Для отримання координат потрібно:
- завантажити з HACS картку xiaomi-vacuum-map-card з HACS (розділ frontend);
- додати картку Xiaomi Vacuum Map Card в інтерфейс Home Assistant;
- змінити конфігурацію картки. В мене така:
type: custom:xiaomi-vacuum-map-card entity: vacuum.archik map_source: camera: camera.xiaomi_cloud_map_extractor calibration_source: camera: true map_modes: - template: vacuum_clean_zone - template: vacuum_goto language: uk tap_action: action: fire-dom-event xiaomi_vacuum_map_card: action_handler_id: xiaomi_vacuum_map_card_id_1 action: set_internal_variable variable: variable_1 value: some value vacuum_platform: default map_locked: true two_finger_pan: false
Щоб отримати координати кімнати:
- перейдіть у режим редагування картки;
- натисніть + на картці та виділіть бажану зону;
- натисніть кнопку «скопіювати координати».

Я описав лише частину можливостей картки. Більше — на сторінці проєкту.
Також хочу поділитись посиланням на конфігурацію Home Assistant Дениса. Сподіваюся, це допоможе вам надихнутися на шляху до створення власного розумного дому.
Якщо цей посібник був вам корисний, подякуйте донатом у фонд «Повернись живим».
64 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарівres.cloudinary.com/.../xlzceaypyvg3zwn4xfdp.png
Вітаю, а чи була в когось проблема з логіном? Схоже це через 2fa але не знайшов як це обійти і вимкнути не виходить
Знайшов тему на форумі де в багатьох людей подібна помилка. community.home-assistant.io/...the-credentials/902923/20 Як рішення пропонується ключ API.
Підкажіть на якому саме етапі у вас помилка?
Порохотяг, пилосмок то калька из русского языка
Доброго дня.Підкажіть де тут проблема? prnt.sc/3ueV0hawIchQ Не розумію,чи conf.yamal редагувати,чи карточку Xiaomi Vacuum Map Card
github.com/...acuum-map-card/issues/153
Покажіть вашу конфігурацію camera.xiaomi_cloud_map_extractor
type: custom:xiaomi-vacuum-map-card
entity: vacuum.kraken
map_source:
camera: camera.xiaomi_cloud_map_extractor
calibration_source:
camera: true
map_modes:
— template: vacuum_clean_zone
— template: vacuum_goto
language: uk
tap_action:
action: fire-dom-event
xiaomi_vacuum_map_card:
action_handler_id: xiaomi_vacuum_map_card_id_1
action: set_internal_variable
variable: variable_1
value: some value
vacuum_platform: default
map_locked: false
two_finger_pan: false
додайте вкінці
prnt.sc/9X9LuDI6vq взагалі карта зникла
Не бачу скріна
prnt.sc/9X9LuDI6vq_M
Так,
Доброго ранку. prnt.sc/o5g2QPek05BY
Підкажіть вашу модель пилососу. Вона підтримується Xiaomi-Cloud-Map-Extractor? В журналі Home Assistant є помилки?
модель rockrobo.vacuum.v1 ,трішки ситуація змінилась, зараз має такий вигляд prnt.sc/NNln4BltfRL6 можу виділяти зони, пилесос виконує прибирання. Але не знаю як дізнатись та додати координати кімнат.
можливо треба цю кнопку давити?) prnt.sc/ZLpwJjU9dXPN
Зайшов для створення скрипту, а тут тільки спальню можна вибрати, може тому що приміщення для пилососу в mi home вибрано?
натискайте зональне прибирання, виділяйте кімнату і не запускаючи прибирання ви уже отримаєте координати. На останньому скріншоті статті видно.
був не уважний, пізніше спробую
Не встиг налаштувати зональне прибирання, знову все пропало(
Повернулось після прописування конфігу по дефолту:
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
Скопіював координати :
i.imgur.com/XjVLdlG.png
Добавив скрипт:
i.imgur.com/9EaqMXd.png
Після зберігання по іншому виглядають координати(без скобок:
i.imgur.com/2uK0BPy.png
Не розумію куди вписувати цю сутність?
i.imgur.com/SSGaUJv.png
alias повинен співпадати з прописаним в shortcuts?
зараз виглядає ось так:
alias: script.clean_bedroom
sequence:
— service: xiaomi_miio.vacuum_clean_zone
metadata: {}
data:
repeats: 2
zone:
— - 22894
— 26762
— 26959
— 30895
target:
entity_id:
— vacuum.kraken
mode: single
зони на скріншоті чуть не співпадають, але це просто для прикладу
Ну і чудово. Скрипт з зоною і є результатом. Ви можете його запустити і перевірити чи прибирає він зону.
Я скрипт просто додав до картки пилосмока і задав йому піктограму (четверта картинка з кінця)
Замість прибирання зони в червоному прямокутнику,пилесос відпрацював лише маленьку частку,крім того ,повис отой білий квадрат, в mihome так само виглядає.
imgur.com/75XyckX
Білий прямокутник це не виділена вами зона в Home Assistant? (зональне прибирання) Що буде, якщо виділити іншу зону поза білим прямокутником?
Білий прямокутник це вже квартира сусіда, тільки той кусочок прибраного мій.
При редагуванні його було не можливо видалити, допомогло перезавантаження пилесосу.
Іншу зону при цьому можно було виділити.
Може в мене в скриптах щось не правильно?
scripts.yaml:
i.imgur.com/XfeekMj.png
Ця картка потрібна була мені лише для отримання координат. Скрипт наче норм виглядає. Підкажіть чи вдається прибрати кімнату по заданим координатам? Для початку без повтору.
Дякую, все працює в штатному режимі.
До речі lightshot московитська програма. Раджу використовувати сполучення клавіш «Windows» + «Shift» + «S». Працює в Windows 10 та 11. В якості онлай сервісу раджу imgur
Добрий день! добавив карточку для пилосмока мого LIECTROUX C30B сподобалося але не відображається відсоток заряда батареї та не працює кнопка Stop при включеному прибиранні все інше норм. Можливо хто знає як усунути проблему
А є сенсор заряду батареї у інтеграції?
Так! sensor.druzhok_batareia
STOP Знайшов через Служби vacuum.stop (ніби стандартно) а як замінити незнаю
Пропишіть сервіс vacuum.stop, аналогічно vacuum.start
Пробув пару варіантів
actions:
— start: null
service: vacuum.start_pause або vacuum.start
— stop: null
service:
старт пауза кнопка працює а от “Стоп” вискакує помилка:
“Не вдалося викликати службу vacuum/stop. Entity vacuum.druzhok does not support this service.”
Через служби vacuum.stop працює? Якщо так можна спробувати так:
vacuum.stop — не спрацювує :(
Дивно, що в службах він є, а не спрацьовує. Чи можна викликати ці служби через інтеграцію пилососа? До речі, через яку інтеграцію працює ваш пилосос
tuya-local, перейшов на цю інтеграцію так як сама шукає доступні сутності (служби)
Чи є кнопки керування стоп, або пауза у самій інтеграції? Вони працюють?
в стандарній кнопки СТОП немає. Є показник батареї, пауза є
Можливо стоп не працює, бо не підтримується інтеграцією. Спробуйте додати паузу.
Якщо можете покажіть як виглядає ваша vacuum card. (Можна посиланням на imgur) Я так розумію ви хочете прибрати кнопку стоп?
написав на пошту
не бачу
[email protected] спробував написати
Підкажіть ще раз. Що ви намагаєтесь зробити?
написав на пошту [email protected] і вклав дві прінскріна як виглядає моя інтергація рідна та ту що налаштовую
Скиньте їх на imgur.com І поділіться посиланням тут
imgur.com/JzTOAZr
imgur.com/8n9tMzh
imgur.com/1qB77n2
Якщо немає альтернатив спробуйте замінити vacuum.stop на vacuum.pause
вийшло!!!!!!! супер!!! тепер як би подолати показник заряду батареї — бачив його навідь переставляли або на середину вікна або по іншу сторону Думаю якось можливо замінити і сутність (сервіс, атрибут що воно там)
думаю що додати, або прибрати символ зарядки можна у файлі vacuum-card.js, що знаходиться у теці config/www
знайшов але знань не вистачає розібратися
Киньте сюди, може разом розберемось. Якщо файл великий можна закинути через gist.github.com/
файл vacuum-card.js
github.com/...irenkovv/vacuum/tree/main
Сенсор батареї мого пилосмока sensor.druzhok_batareia
У декількох місцях зустрічається слово “Battery”
1. renderBattery(){const{battery_level:t,battery_icon:e}=this.getAttributes(this.entity);return I`
2.
Файл пустий
вже норм
якщо не працює СТОП як цю кнопку прибрати що вона і не з’являлася
Добрий день.
Напишіть, будь ласка, як це зробити, а саме запустити в Home Assistant python-скрипт
Я мав на увазі виконання Python на іншому комп’ютері. Якщо задача запустити python скрипт в Home Assistant можна спробувати PyScript (github.com/...ustom-components/pyscript)
Добрий день.
Напишіть, будь ласка, як це зробити, а саме запустити в Home Assistant python-скрипт
Я вибачаюсь. Але як у вас все на укр мовi? в мене мощя зовсiм на китайскому. як це можливо перекласти? да i роботи однаковi виходить, а в мене нема час прибирання, площа i тощо....а в самому Mi home є
У мене стоїть українська мова в Home Assistant, картка Vacuum Card також перекладена українською.
Наскільки я розумію ви додали свій пилосос до Home Assistant (якщо ні, перегляньте мою іншу статтю як додати) та завантажили Vacuum Card з HACS.
Також ви маєте додати картку Vacuum Card на дашборд. Після цього можете використати один з наявних тут шаблонів, замінивши назву пилососа на свій.
-
у мене кейс навпаки: коли хочу відпочити від коду — беру пилосос
Дякую за пост! Посилатимусь на нього як на своєрідну україномовний туторіал по використанню моєї картки для пилососа.
Приходьте і ви писати статті на DOU ;)