DivanX10
Хочу выразить благодарность участнику форума MajorDoMo @pash4uga за хорошую идею в реализации зональной уборки с помощью чебоксов, это очень удобно. Выкладываю как это сделать. Если найдете косяки и сможете сделать правильно и лучше, я буду только рад.
Видеоинструкция
Готовая сцена и класс для пылесоса
Общий вид сцены

Вид бокового меню

Дополнительный код CSS — стиль для сцены
/* This css is for normalizing styles. You can skip this. */ *, *:before, *:after < -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; margin: 0; padding: 0; >.XiaomiMiRobotVacuum < padding: 50px; background: rgba(0, 0, 0, 0.2); /* Цвет фона */ border: 1px solid black; /* Параметры рамки */ padding: 15px; /* Поля вокруг текста */ margin-bottom: 10px; /* Отступ снизу */ border-radius: 10px; >.form-group < display: block; margin-bottom: 15px; >.form-group input < padding: 0; height: initial; width: initial; margin-bottom: 0; display: none; cursor: pointer; >.form-group label < position: relative; cursor: pointer; font-size: 200%; color: green; >.form-group label:before < content:''; -webkit-appearance: none; background-color: transparent; border: 3px solid #0079bf; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05), inset 0px -15px 10px -12px rgba(0, 0, 0, 0.05); padding: 15px; display: inline-block; position: relative; vertical-align: middle; cursor: pointer; margin-right: 5px; >.form-group input:checked + label:after < content: ''; display: block; position: absolute; top: -1px; left: 13px; width: 12px; height: 30px; border: solid #0079bf; border-width: 0 4px 4px 0; transform: rotate(45deg); >/*Button Transitions */ button < transition-property: all; transition-duration: 0.4s; transition-timing-function: ease-out; >/* General styling */ button < background: rgba(158, 212, 200, 0.5); border: 2px solid #fff; border-radius: 1em; color: #222; cursor: pointer; font-size: 18px; width: 180px; height: 60px; font: Helvetica, Arial, Sans-serif; padding: 5px; >button:hover < background: green; color: #fff; font-size: 18px; >body < background: #222; >>
Код для получения информации о пылесосе
Информация Статус: %XiaomiMiRobotVacuum.State_text_rus%
Уровень заряда: %XiaomiMiRobotVacuum.Battery%%
Время уборки: %XiaomiMiRobotVacuum.СleanTime% минут
Основная щетка: %XiaomiMiRobotVacuum.MainBrushWorkLife% часов
Боковая щетка: %XiaomiMiRobotVacuum.SideBrushWorkLife% часов
Фильтр: %XiaomiMiRobotVacuum.FilterWorkLife% часов
Датчики: %XiaomiMiRobotVacuum.SensorDirtyLife% часов
Код блока с чебоксами для выбора зональной уборки
Где убрать?
DivanX10

Скачать готовую настройку класса и объекта пылесоса для импорта в MD можно здесь
Скачать полные настройки (класс и объекты, меню управления и сцена) для MD можно здесь
Скачать иконки пылесоса можно здесь. Иконки нарисованы в векторе, открывать в CoralDraw. Можно передалать их по своему вкусу и экспортировать в png. При экспорте указать размер пикселей, я выбрал для себя 28pix и разрешение 72dpi.
Обзор иконок

Скачиваем и устанавливаем программу Bluestack, можете и на телефон поставить, но мне удобнее было скопировать координаты в блокнот через Bluestack.
Скачиваем и устанавливаем программу FloleVac Now
Выбираем импорт из MiHome

Указываем логин\пароль от Mi Home
Переходим в раздел карты и еще раз указываем логин\пароль от Mi Home и выбираем сервер как в MiHome


Переходим в раздел карты. Перед тем, как будем выбирать зоны, сначала должна быть построена карта. Выделяем зону уборки. Потом нажимаем и удерживаем кнопку «Очистить зону» до тех пор, пока не появится сообщение «Координаты скопированы». Больше 5-ти зон не удаться сделать, но можно выделять одну зону и копировать координаты и так можно делать бесконечно.

На основе полученных координатах можно создавать свои сценарии или методы, кому как удобно. Пример списка сценарии

Создаем сценарии и вписываем такой код с координатами.
Формат команды для zoned_clean: либо одна зона [zone1], либо список зон [zone1],[zone2]. [x1 Integer, y1 Integer, x2 Integer, y2 Integer, times Integer] [26234,26042,27284,26642,5] - убрать одну зону 5 раз [26234,26042,27284,26642,1],[26232,25304,27282,25804,2],[26246,24189,27296,25139,3] - убрать три зоны Формат команды для goto_target: [x Integer, y Integer] [24200,20200]
Для примера, свои координаты обнулил, а так вместо этих координат вы можете вставить свои координаты. Можно вставить в одной комнате до 5-ти зон.
setGlobal('Xiaomi_MiRobotVacuum.ZonedClean', '[00000,00000,00000,00000,1],[00000,00000,00000,00000,1]');
Как управлять пылесосом?
Управление пылесосм происходит отправкой через свойство command:
app_start — начать уборку;
app_stop — остановить уборку;
app_pause — приостановить уборку;
app_spot — прибрать участок вокруг пылесоса;
app_charge — отправить на базу и встать на зарядку;
find_me — посигналить, чтобы найти пылесос.

Само свойство command
Полный список команд можно посмотреть здесь
Описание метрик пылесоса
1)filter_work_life — уход, через сколько времени нужно будет заменить фильтр
2)map_present — Карта построена или нет 1 или 0
3)in_cleaning — запуск уборки
4)fan_power — мощность всасывания
5)dnd_enabled — режим «Не беспокоить»
6)custom_mode — режим уборки (Тихий, Сбалансированный, Турбо, Полная скорость)
7)sensor_dirty_life — очистка датчиков после 30 часов
8)clean_time — сколько времени затрачено на последнюю уборку
9)filter_work_time — через который промежуток времени нужно заменить фильтр
10)battery — уровень заряда
11)side_brush_work_life — индикатор времени работы боковой щетки, где через 200 часов нужно ее заменить
12)main_brush_work_life — индикатор времени работы основной щетки, где через 300 часов нужно ее заменить
13)state — цифровое обозначение состояния пылесоса
14)state_text — тестовое сообщение состояния пылесоса
15)online — статус сети
Пример того, что означают цифры state
Обозначение свойства «state»
Zoned cleaning|Зональная уборка — state 17
Charging|Зарядка — state 8
Back to home|Обратно на базу — state 6
Spot Cleaning|Чистка точки — state 11
Обозначение свойства «state_text»
Cleaning — Уборка
Zoned cleaning — Зональная уборка
Charging — Заряжается
Sleeping — Спит
Waiting — Ожидание
Pause — Пауза
Back to home — Обратно на базу
Going to target — Идет к указанной точке
Spot Cleaning — Чистка в указанной точке
Так выглядит мое меню управления пылесосом

Боковое меню

Всплывающее меню

Чтобы иконки менялись по статусу пылесоса, я в сценах выбрал изображение и присвоил каждому состоянию состояние устройства
Робот-пылесос Xiaomi Robot Vacuum-Mop 2S

Один из хороших вариантов роботов пылесосов Xiaomi по соотношению цена/качество, если рассматривать к покупке здесь и сейчас в ближайшем магазине.
По сути своей, является усовершенствованной версией робота пылесоса Xiaomi Robot Vacuum Mop 3C (id — ijai.vacuum.v18), который в свою очередь является упрощенной версией Xiaomi MiJia Robot Vacuum-Mop 2 (ijai.vacuum.v2).
На данный момент существует только глобальная версия для продаж за пределами Китая. Предустановленные языки: Русский, Английский, Французский, Немецкий, Испанский, Итальянский.
Русская озвучка доступна после обновления до версии ПО 4.3.3 (на 4.1.3 имеем переведенное приложение и отсутствие русской озвучки).
Робот-пылесос позиционирует себя как модель средне-топового сегмента, оснащен лидаром, что позволяет пылесосу хорошо ориентироваться в помещении и строить подробную карту (точность уборки выше, а время уборки меньше по сравнению с моделями без лазерного дальномера).
Функционалом предусмотрено создание более чем одной карты при уборке, что, например, позволяет убирать несколько этажей дома без дополнительных временных затрат на повторного сканирования площади уборки.
Как и предыдущие модели может убираться в отдельных комнатах, на карте можно отметить запретные зоны и установить виртуальные стены.
Емкость аккумулятора позволяет убрать на одной зарядке площадь примерно равную 120 кв.м., а датчики глубины не дадут пылесосу упасть с лестницы (что, безусловно, актуально в связи с наличием функции «мультикарта»).
В режиме сухой уборки имеет 4 уровня мощности всасывания, а в случае влажной уборки, то доступны не один, а целых два режима-степени уборки (что выгодно отличает данную модель от ближайших «конкурентов»). Помимо простого «размазюкивания» тряпкой, есть режим «профессиональной (тщательной) влажной уборки» который задействует вибро-модуль для более тщательного мытья полов.
Интерфейс приложения, а также голосовые оповещения полностью на русском языке, что называется «из коробки». Есть возможность установки дополнительных кастомных озвучек.
| навигационная камера |
| лазерный дальномер |
| интеллектуальное управление подачи воды насосом |
| на коврах мощность автоматически не увеличивается |
| в режиме профессиональной влажной уборки пылесос может оставлять неглубокие царапины на паркете. |
Зональная уборка на Xiaomi Vacuum в Home Asisstant
Чтобы не потерялась в дебрях чата HA опубликую за него:
Чтоб его отправить чистить зону достаточно создать пару скриптов такого плана:
#scripts.yaml ‘1528405527840’: alias: Zone Cleanup Kitchen sequence: — data: command: app_zoned_clean entity_id: vacuum.xiaomi_vacuum_cleaner params: — — 27274 — 21708 — 30274 — 24458 — 1 service: vacuum.send_command
где 27274, 21708, 30274, 24458 — координаты зоны
— 1 количество раз уборки в заданной зоне
чтобы выяснить координаты я сделал так (только Android):
качаем и устанавливаем от сюда программку и запускаем на телефоне
запускаем и там предлагается 3 способа добавления пылесоса
у меня получилось вторым способом через MiAccaunt
далее в программке жмем в боковом меню Map
делаем выделение зоны
и при длительном нажатии на Clean в буфер будут скопированы координаты этой зоны
ну а далее скрипты можете вызывать как угодно и он будет ехать и убираться ))))
#configuration.yaml input_select: vacuum_room: name: Choose a room to clean options: — Select Input — Corridol — Kitchen — Living Room — Childrens Room — Bedroom
#automation.yaml — id: ‘1531897482144’ alias: Start Cleaning Room trigger: — platform: state entity_id: input_select.vacuum_room from: ‘Select Input’ action: — service: script.turn_on data_template: entity_id: > script.1528405527839 script.1528405527840 script.1528405527841 script.1528405527842 script.1528405527843 — service: input_select.select_option entity_id: input_select.vacuum_room data_template: option: «Select Input»
Пример конфига подсмотрел тут
Собственно на этом всё, говорим Спасибо, Pavel Yatskevich @paulig_brest, вопросы задаем чате HA
Ну и от меня, вот собственно что в итоге должно получится: