Статья

Приручи Home Assistant. Пылесос: управление, интерактивная карта, уведомления.

Оглавление:

Рассмотрим интеграцию умного пылесоса на примере Xiaomi Mijia Sweeping Vacuum Cleaner 1C. Этим пылесосом можно управлять как локально, так и через экосистему MiHome. Аналогично можно поступить и с вашими моделями.

Мы займемся решением следующих задач:

  • Обновим звуковой пакет пылесоса.
  • Проведем интеграцию пылесоса в Home Assistant, управление локальное.
  • Настроим карточку управления.
  • Сделаем интерактивную карту вызова зон уборки.
  • Организуем уведомления о начале/завершении уборки.

Меняем звуковой пакет

Скачиваем и устанавливаем кастомное приложение от Vevs - kapiba.ru (Только Android).Скачиваем подходящий звуковой пакет на 4PDA для вашего пылесоса.Скачиваем и меняем файл main.bundle (предварительно скаченный звуковой пакет переименовываем в

main.bundle) в своем телефоне по пути (цифры в конце буду различаться):

/storage/emulated/0/Android/data/com.xiaomi.smarthome/files/plugin/install/rn/1000004/1003860/android

В меню MiHome от Vevs зайти в настройку языка, выбрать загруженный звуковой пакет.

Проведем интеграцию в Home Assistant

Скачиваем и устанавливаем кастомное приложение от Vevs kapiba.ru (Только Android).Заходим в приложение и вытаскиваем токен: долгим нажатием на пылесосе, изменить имя...Добавляем интеграцию через HACS в Home Assistant, для моего пылесоса это xiaomi_vacuum. У меня не самая распространенная модель, пробуйте сначала штатную интеграцию в HA.Указываем параметры подключения:

vacuum: - platform: xiaomi_vacuum host: <ip> token: "<token>" name: <name>

Добавим и настроим карточку управления

Используется кастомная интеграция, добавленная через HACS:

github.com/denysdovhan/vacuum-card

Советую покопаться, настраивается много удобных представлений и элементов управления.

compact_view: false entity: vacuum.xiaomi_vacuum_cleaner image: /local/vacuum.png #меняем картинку пылесоса show_name: true show_status: true show_toolbar: true stats: cleaning: #отображение при уборке - attribute: cleaned_area subtitle: Cleaning area unit: m2 - attribute: cleaning_time subtitle: Cleaning time unit: minutes default: #отображение в режиме ожидания - attribute: filter_life_level subtitle: Фильтр unit: '-%' - attribute: side_brush_life_level subtitle: Бок. щетка unit: '-%' - attribute: main_brush_life_level subtitle: Гл. щетка unit: '-%' actions: #вызов скриптов для зональной оборки. отображаются клавишами на карточке - name: Очистка квартиры без подготовки service: script.vacuum_all icon: mdi:floor-plan - name: Очистка комнаты service: sscript.vacuum_room icon: mdi:bed-empty - name: Очистка кухни service: script.vacuum_kitchen icon: mdi:silverware-fork-knife - name: Очистка кухни service: script.vacuum_hall icon: mdi:door type: custom:vacuum-card

Сделаем интерактивную карту зональной оборки.

ВАЖНО! У меня не самая распространенная версия пылесоса, я не могу вытащить карту из облака Mi, поэтому делал свою, она не отображает в реальном времени движение пылесоса.

Для начала пробуйте пользоваться этим:

github.com/PiotrMachowski/lovelace-xiaomi-vacuum-map-card

github.com/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor

Если не подходит, мой пример для вас.

Для начала выловим координаты наших зон уборки:

Снова используем кастомное приложение MiHome от Vevs.Заходим в приложение и отправляем пылесос на нужную нам площадь.Через проводник в телефоне, лезем в логи приложения

“/vevs/logs/miio”и получаем координаты:

{“id”:9556,“method”:“action”,“params”:{“did”:“292175500”,“siid”:18,“aiid”:1,“in”:[{“piid”:1,“value”:19},{“piid”:21,“value”:“2213,4329,9706,5834”}]}}

Скрин из приложения MiHome от Vevs. У каждого пылесоса плагин и отображение свои.

С полученными координатами заводим скрипты. Они как раз и будут отправлять пылесос на нужную площадь. Скрипты прикручиваем к карточке управления и карте.

script: vacuum_room: alias: Пылесос. Комната sequence: - service: xiaomi_vacuum.vacuum_clean_zone #Отправляем по координатам data_template: entity_id: vacuum.xiaomi_vacuum_cleaner repeats: 1 zone: '-2146,-2414,722,3497' - service: media_player.volume_set data: entity_id: - media_player.yandex_station volume_level: 0.4 - delay: '00:00:05' - service: media_player.play_media #произносим через Яндекс Станцию entity_id: media_player.yandex_station data: media_content_id: Уборка будет произведена только в комнате. media_content_type: text - service: notify.telegram_nikita #Отправляем уведомления в Телеграм data_template: title: '*Тимон:*' message: "Уборка будет произведена только в комнате." - service: notify.telegram_liza data_template: title: '*Тимон:*' message: "Уборка будет произведена только в комнате."

Создадим саму карту.

3D модель советую делать в ScetchUP, рендер картинки через Vray плагин.

Итого что получилось у меня, пример на одной комнате:

Основная картинка
Накладывается сверху при активации.

Пример настройки карточки, управляется через кастомный элемент - github.com/iantrich/config-template-card

card: elements: - action: none #реакция картинки entity: vacuum.xiaomi_vacuum_cleaner hold_action: action: none image: /local/floorplan/clean_room.png style: filter: >- ${ "hue-rotate(" (states['script.vacuum_room'].attributes.hs_color ? states['script.vacuum_room'].attributes.hs_color[0] : 0) "deg)"} left: 50% mix-blend-mode: lighten opacity: >- $ top: 50% width: 100% tap_action: action: none type: image - entity: vacuum.xiaomi_vacuum_cleaner #настройка кнопки hold_action: action: none icon: mdi:broom style: '--iron-icon-height': 2vw '--iron-icon-width': 2vw '--paper-item-icon-active-color': '#000000' '--paper-item-icon-color': darkgrey align-items: center background-color: '#FFFFFF' border-radius: 100% box-shadow: 0px 0px 28px 0px rgba(0,0,0,0.39) display: flex height: 2vw justify-content: center left: 69% margin-left: '-1.5vw' margin-top: '-1.5vw' top: 65% transform: scale(1) width: 2vw tap_action: action: call-service service: script.vacuum_room type: state-icon image: /local/floorplan/0_day_clean_1.jpg style: | ha-card:first-child { background: rgba(42, 46, 48, 1) } type: picture-elements entities: - vacuum.xiaomi_vacuum_cleaner type: custom:config-template-card

Добавим уведомления

Когда пылесос начинает или заканчивает что-то делать, он сообщает это через свой звуковой пакет, Яндекс станцию и отправляет уведомления в Телеграм. Также, в случае простоя больше 2-х дней, пылесос предлагает убраться.

sensor: - platform: template sensors: vacuum_filter: friendly_name: Пылесос. Статус фильтра. value_template: "{{ states.vacuum.xiaomi_vacuum_cleaner.attributes.filter_life_level }}" unit_of_measurement: '%' vacuum_main_brush: friendly_name: Пылесос. Главной щетки. value_template: "{{ states.vacuum.xiaomi_vacuum_cleaner.attributes.main_brush_life_level }}" unit_of_measurement: '%' vacuum_side_brush: friendly_name: Пылесос. Боковая щетка. value_template: "{{ states.vacuum.xiaomi_vacuum_cleaner.attributes.side_brush_life_level }}" unit_of_measurement: '%' automation: #Начало уборки - id: vacuum_start_telegram alias: Пылесос. Начало уборки, уведом.телеграм. trigger: platform: state entity_id: - vacuum.xiaomi_vacuum_cleaner to: 'cleaning' condition: condition: time after: '09:00:00' before: '00:00:00' action: - delay: '00:00:10' - service: notify.telegram_nikita data_template: title: '*Тимон:*' message: "Начинаю уборку." - service: notify.telegram_liza data_template: title: '*Тимон:*' message: "Начинаю уборку." #Окончание уборки - id: vacuum_end alias: Пылесос. Окончание trigger: platform: state entity_id: - vacuum.xiaomi_vacuum_cleaner from: 'cleaning' condition: condition: time after: '09:00:00' before: '00:00:00' action: - service: media_player.volume_set data: entity_id: - media_player.yandex_station volume_level: 0.3 - delay: '00:00:01' - service: media_player.play_media entity_id: media_player.yandex_station data: media_content_id: Уборка завершена media_content_type: text - service: notify.telegram_nikita data_template: title: '*Тимон: уборка завершена.*' message: > Состояние фильтра: {} %. Состояние главной щетки: {} %. Состояние боковой щетки: {} %. - service: notify.telegram_liza data_template: title: '*Тимон: уборка завершена.*' message: > Состояние фильтра: {} %. Состояние главной щетки: {} %. Состояние боковой щетки: {} %. #Долго без уборки - Реакция. Проверяет каждый день в 15:00 сколько пылесос не убирался. #Направляет в Телеграм кнопки для выбора реакции. - id: vacuum_not_cleaning alias: Пылесос. Простой. Реакция. trigger: platform: time at: '15:00:00' condition: condition: state entity_id: vacuum.xiaomi_vacuum_cleaner state: 'off' #простой может по другому указываться... for: hours: 40 action: - service: notify.telegram_nikita data: title: '*Тимон: вы не убирались больше 2х дней.*' message: "Что хотите очистить?" data: inline_keyboard: - 'Вся квартира:/command1, Комната:/command2' - 'Кухня:/command3, Прихожая:/command4' - service: notify.telegram_liza data: title: '*Тимон: вы не убирались больше 2х дней.*' message: "Что хотите очистить?" data: inline_keyboard: - 'Вся квартира:/command1, Комната:/command2' - 'Кухня:/command3, Прихожая:/command4' - delay: '0:00:10' - service: input_boolean.turn_off data: entity_id: input_boolean.vacuum_cleaning #реакция на выбор комнаты в телеграм - id: vacuum_telegram_command1 alias: Пылесос. Выбор всей квартиры trigger: platform: event event_type: telegram_callback event_data: command: '/command1' action: - service: script.vacuum_all - id: vacuum_telegram_command2 alias: Пылесос. Выбор комнаты trigger: platform: event event_type: telegram_callback event_data: command: '/command2' action: - service: script.vacuum_room - id: vacuum_telegram_command3 alias: Пылесос. Выбор кухни trigger: platform: event event_type: telegram_callback event_data: command: '/command3' action: - service: script.vacuum_kitchen - id: vacuum_telegram_command4 alias: Пылесос. Выбор коридора trigger: platform: event event_type: telegram_callback event_data: command: '/command4' action: - service: script.vacuum_hall

3

Классная реализация. Особенной с долгим простоем пылесоса...

Здравствуйте.

Папка 

“/vevs/logs/miio” после отправки пылесоса и окончании уборки не появилась. Что делать?

Пылесос такой же как у вас 

Xiaomi Mi 1C. 

отвечу сам. нужно зайти на телефоне в настройки >> приложения

 >> приложения

 >> найти Mi Home и дать права на память. После открыть приложение 

Mi Home, зайти в профиль, экспериментальное, и включить логирование полезных функций.


Вернуться назад

Устройства


Xiaomi

Xiaomi Mi 1C

(2 отзыва)

Вернуться назад