Добавляем робот пылесос Xiaomi Vacuum 1s в Node-Red

12 апреля 2020, 14:07

Совсем недавно видел здесь статью по добавлению данной модели в HomeAssistiant и решил поделится, как реализовал управление пылесосом у себя. В общем логика работы у меня получилась такая же, за исключением добавления этого всего в HomeKit, ну и строчек кода гораздо меньше получилось.

Изначально, данная модель пылесоса выбиралась для того, чтобы можно было отправлять пылесос в конкретную комнату, что было заявлено производителем и показано в рекламном ролике. В принципе, все устраивало, за одним исключением - это китайские сервера в приложении MiHome и вероятность того, что запустить плагин пылесоса удастся со второго, а то и с третьего раза, у вас не получится. 

После более детального изучения вопроса стало понятно, что надо было не умничать и брать первую версию робота, где есть возможность делать с ним все, что угодно, при условии замены прошивки, да и мануалов на русском и английском в Google полно. Тут же дела обстоят далеко не так радужно и единственное, что я нашел - это возможность поставить русскую озвучку, причем только одну!

В общем, для добавления пылесоса в HomeKit нам потребуется:

  • Xiaomi Vacuum 1s или любой другой с поддержкой уборки в отдельных комнатах.
  • Token пылесоса (посмотреть как его получить, например, можно тут).
  • Установленный Node Red.
Переходим в Node Red, нам потребуется вот эта нода, так же нужна нода HomeKit. Как установить дополнительные palette, можно посмотреть в данной статье. 
Дальше следуем такой логике - создаем нужное количество обычных выключателей, равных количеству комнат, добавляем функцию для обработки ответов от HomeKit и ноду для общения с пылесосом. Можно взять за основу мой flow и просто переделать под себя. 

В функции id комнат выставить по возрастанию, и потом методом научного тыка определить, какой id к какой комнате относится. Также можно воспользоваться способом, указанным в этой статье. Для этого потребуется телефон с Android или эмулятор Android для компьютера, я делал проще - отправлял по id на уборку и в родном приложении смотрел , какая комната отметиласьДобавляем настройки для пылесоса - ip адрес и token. Для работы данной ноды больше ничего и не надо, все остальное передается от функции. 

// Код для функции из flow
function AddRoom(RoomID){ 
    if(flow.rooms === undefined){
        flow.rooms=[];
        flow.rooms.push(RoomID);
    } else {
        flow.rooms.push(RoomID);
    }
}
if((msg.name === "Корридор")&&(msg.payload.On === true)){
    AddRoom(21);
}
if((msg.name === "Спальня")&&(msg.payload.On === true)){
    AddRoom(22);
}
if((msg.name === "Зал")&&(msg.payload.On === true)){
    AddRoom(19);
}
if((msg.name === "Детская")&&(msg.payload.On === true)){
    AddRoom(24);
}
if((msg.name === "Столовая")&&(msg.payload.On === true)){
    AddRoom(20);
}
if((msg.name === "Ванная")&&(msg.payload.On === true)){
    AddRoom(16);
}
if((msg.name === "Прихожка")&&(msg.payload.On === true)){
    AddRoom(23);
}
if((msg.name === "Кухня")&&(msg.payload.On === true)){
    AddRoom(17);
}
if((msg.name === "Старт")&&(msg.payload.On === true)){
    return [{"payload":{"command":"app_segment_clean","args":flow.rooms}},{"payload":{"On":false}}];
}
if((msg.name === "Отмена")&&(msg.payload.On === true)){
    flow.rooms = undefined;
    return [null,{"payload":{"On":false}}];
}
if((msg.name === "Домой")&&(msg.payload.On === true)){
    flow.rooms = undefined;
    return [{"payload":{"command":"app_charge"}},{"payload":{"On":false}}];
}

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


Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @SprutAI

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Евгений Лузин (EvLuz)

    За статью спасибо, но вопрос? А чем тебе нода для пылесоса от Андрея Попова не зашла? Почему выбор пал на этот плагин?

    • Михаил Малиничев (Nightmare04)

      Пробовал его ноду, она не поддерживает именно уборку по комнатам. Даже issue на github создал по этому поводу.

  2. Павел Ник (bj_tracer)
    Павел Ник (bj_tracer) год назад

    А кнопку «полной уборки» можно реализовать или это делается просто нажатием Старт без выбора комнат?

    А голосом как просить уборку конкретных комнат?

    • Nikita Uskov (EarlyWaff)
      Nikita Uskov (EarlyWaff) отредактировано год назад

      Попробуй создать сценарий в хоумкит и добавить два выключателя. 1 который отвечает за комнату, второй , который отвечает за Старт и назови Уборка гостиной к примеру, должно сработать.

    • Михаил Малиничев (Nightmare04)

      Можно и полной уборки реализовать, добавить ещё одну ноду/выключатель и функцию немного отредактировать если будет нужно пиши в телегу помогу. Голосом да, скорее всего только через сценарии как уже ответили.

  3. (Utester)
    (Utester) год назад
    Добрый день, сделал вроде бы все по инструкции, все пробросилось в хоумкит, но ничего не происходит при нажатии, от пылесоса никакой реакции, токен и айпи верные, потому что по ним же пылик  управляется через плагин для хоумбридж.

  4. Павел Ник (bj_tracer)
    Павел Ник (bj_tracer) 5 месяцев назад

    Народ!
    У меня чего-то на app_segment_clean ошибку выдает  "Method `app_segment_clean` is not supported"

    При этом  "stop_segment_clean" проглатывает...

    Что не так делаю?

    • Михаил Малиничев (Nightmare04)
      Михаил Малиничев (Nightmare04) отредактировано 5 месяцев назад

      Попробуй вот этот флоу, тут уже переработан, использован другой плагин, на данный момент у меня все работает без замечаний, менять значения комнат в функции... HomeKitАлиса

      • Павел Ник (bj_tracer)
        Павел Ник (bj_tracer) 5 месяцев назад

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

      • Павел Ник (error_404)
        Павел Ник (error_404) 5 месяцев назад

        красненькая нода роборока выдает вот такую ошибку: "TypeError: Cannot read property 'call' of undefined"

      • Павел Ник (bj_tracer)
        Павел Ник (bj_tracer) 5 месяцев назад

        Все, разобрался.
        Нода miio-roborock отвалилась просто. Ребутнул node-red, удлил все неиспользуемые палитры, настроил все заново и теперь работает как надо!

        Я правда сделал персональный выключатель уборки в каждой комнате, чтобы Сири можно было дать команду "Включи уборку в кухне!".
        Год уже пользуемся пыликом и только один раз запускали уборку нескольких комнат выбором на карте. Основные сценарии - автоматическая уборка прихожей по расписанию перед моим приходом с работы, уборка конкретной комнаты и полная уборка квартиры.

К списку статей

Устройства в материале

Mi Robot Vacuum

Производитель: Xiaomi

Mi Robot Vacuum 1S

Производитель: Xiaomi

Скидки для сообщества

Интернет-магазин yourhomekit.ru

+7 914 550-51-11
Промокод:
SPRUT-BLG
Размер скидки:
8%
Cамый большой ассортимент в России аксессуаров Apple HomeKit

Тематические чаты

Похожие статьи

09 ноября 2018, 20:54
Кейс создания умного дома без каких либо прокладок в виде Raspberry pi
25 сентября 2020, 11:49
Сенсорный монитор для управления умным домом. Настройка и использование.
30 августа 2019, 07:28
Несколько нетривиальных способов использования датчика открытия окон/дверей от Xiaomi/Aqara.
15 ноября 2018, 13:11
Xiaomi Mi Remote 360 добавляем Apple HomeKit
19 марта 2019, 22:19
Обзор долгожданного 2х канального zigbee реле от Aqara, сравнение с конкурентами и небольшой тест на Deconz, Mi Hub и Aqara Hub.
18 февраля 2020, 17:06
В данной статье описывается сборка слаботочного эл. щита на базе Wiren Board 6, а так же силового щита для небольшой квартиры.
01 ноября 2018, 09:27
Настройка Deconz USB стика ConBee от Dresden Elektronik в Hass.io и некоторые особенности эксплуатации
01 декабря 2018, 18:27
Получение токена устройств Xiaomi с помошью Windows или MacOs
01 октября 2019, 07:07
"У всякого в умном дому неведомо никому" (с) Народная мудрость
11 мая 2019, 19:57
Как активировать русский язык в Google Assistant для Google Home