Пылесос Xiaomi MiRobotVacuum

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Пылесос Xiaomi MiRobotVacuum

Сообщение Divan » Чт окт 31, 2019 2:05 am

------------------------------------------ Введение. Общая информация ------------------------------------------
СпойлерПоказать
У FloleVac перестала загружаться карта, зональная уборка не везде работает, пылесос вроде бы принимает команду, но спустя 30 секунд сообщает, что уборка завершена и меня это выбесило. Стандартный MiHome меня тоже не устраивает, чтобы пылесос поехал на кухню, он должен при уборке объехать всю квартиру и только по пути доедет до кухни, а вручную выделять зону, убейте меня. Не мой вариант. Установил на пылесос веб сервер Valetudo и делюсь с вами своим результатом.

1) Стандартный MiHome
2) Через софт FloleVac
3) MQTT
4) Valetudo, скачать можно здесь
5) FAQ Valetudo
6) ioBroker и telegram
7) RoboRock Control Center
8) Xiaomi Vacuum Cleaner Telegram Bot

Valetudo - это устанавливаемый в пылесос web-сервер. После установки появляется возможность управлять пылесосом из любого браузера с любого компьютера или гаджета в локальной сети.
Выглядит это таким образом

Доступ через PUTTY
СпойлерПоказать
01 - Valetudo.jpg
01 - Valetudo.jpg (62.61 КБ) 14867 просмотров
Так выглядит web интерфейс в majordomo
СпойлерПоказать
02 - WEB MD.jpg
02 - WEB MD.jpg (113.62 КБ) 14867 просмотров
03 - WEB MD.jpg
03 - WEB MD.jpg (103.98 КБ) 14867 просмотров
04 - WEB MD.jpg
04 - WEB MD.jpg (117.42 КБ) 14867 просмотров
05 - WEB MD настройка зоны.JPG
05 - WEB MD настройка зоны.JPG (38.78 КБ) 14859 просмотров
Почему я выбрал Valetudo, вместо стоковой прошивки?
СпойлерПоказать
При входе по ssh показывается общая информация (ip, token, did, версия прошивки и другое).
- Логинам root и cleaner установлен пароль - cleaner.
Вход по ssh пользователем root может пригодиться например для программы RoboRock Control Center.
- Добавлены в систему wget, nano, htop, bbe, snmpd (community: public).
- Установлен Valetudo 0.2.3. Более поздние версии идут с отвязкой от облака Xiaomi и карта в МиХоме показываться не будет.
- Добавлена отдельная прошивка содержащая Valetudo(пример имени файла vacuum_valetudo_1898.pkg). В ней нет смены региона. А так же она не передает карты и данные на облачные сервера, управление роботом возможно либо через Valetudo либо через альтернативные Умные Дома. MiHome работать не будет.
- Пропатчен rrlogd (отключено шифрование карт) для показа карты в режиме покоя через Valetudo.
- DNS не получаются по DHCP и выставлены в 8.8.8.8 и 114.114.114.114.
- Прошивки в имени которых находится 2prc (например vacuum_2prc_1768.pkg) при обновлении европейской версии превращают ее в китайскую (при наличии файла /mnt/default/roborock.conf).
- Прошивки в имени которых находится 2eu (например vacuum_2eu_1768.pkg) при обновлении китайской версии превращают ее в европейскую (при наличии файла /mnt/default/roborock.conf).
- Отключено китайское поздравление с Новым Годом.
- Установлен оригинальный, не урезаный adbd.
- Отключен сбор и отправка логов в облако(с картами это никак не связано). Значительно снижает трафик и нагрузку на процессор робота.
- Добавлен патч отключения проверки региона на новых ревизиях (02.2019) второго поколения роботов.
- Отключено обновление с официальных серверов (в MiHome будет выдаваться ошибка обновления прошивки).
- Заменен miio клиент на версию 3.3.9, в которой разрешено обновление прошивок не через сервера (local ota).
Откат прошивки
СпойлерПоказать
Прошил не ту прошивку, процесс прошивки оборвался, просто что-то пошло не так и робот теперь ни на что не реагирует, подключиться к нему невозможно или робот не прошивается, выдавая ошибку. Восстанавливаем.

Инструкция к первой версии робота:
Нажимаем кнопки возврата на базу (Home) и сброс под крышкой (Reset), Держим 3-5 секунд. Отпускаем кнопку сброса. Продолжаем держать кнопку возврата на базу, пока не заморгает индикация. Через некоторое время робот поприветствует мелодией включения. Готово.

Инструкция ко второй версии робота:
Нажимаем левую и правую кнопки (локальная уборка и возврат на базу), держим, нажимаем кнопку сброса под крышкой (Reset). Держим 3-5 секунд. Отпускаем кнопку сброса, продолжаем держать левую и правую кнопки, пока не заморгает быстро центральная кнопка, после некоторого ожидания робот заговорит на китайском. Готово.

Можно ли полностью удалить Valetudo из моего робота?
Да. Просто восстановите заводские настройки вашего робота.
Статьи в CONNECT
1) Создаем сцену для пылесоса Xiaomi Mi Robot Vacuum
2) Пылесос Xiaomi Mi Robot Vacuum

Готовая сцена для пылесоса, а для тех, кто хочет собирать сам, выкладываю коды для сцены
Сцена - Пылесос.zip
(3.17 КБ) 428 скачиваний

Вид сцены
СпойлерПоказать
Сцена Пылесос.JPG
Сцена Пылесос.JPG (90.83 КБ) 13230 просмотров
Дополнительный код 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;
	}
}
Код для передачи массива отмеченных checkbox в свойство ZonedClean объекта XiaomiMiRobotVacuum и после снимает галочки с выбранных помещении

Код: Выделить всё

<script>
     $("#take").click(function() {
  var x = [];
  $("input:checked").each(function(i, item) { //получим массив значении из выбранных чебоксов
 	$('input:checkbox').prop('checked', false); //сброс состояния чекбоксов при запуске уборки
    	x.push($(item).attr("value"))
  });
$.get( "../../objects/", { object:"XiaomiMiRobotVacuum", op:"set",p:"ZonedClean", v:x.toString()} );
});
</script>

Код для получения информации о пылесосе

Код: Выделить всё

<div class="XiaomiMiRobotVacuum">
<font size="6" color="DodgerBlue" face="Arial"><center>Информация</center></font>
<font size="4" color="black" face="Arial">
Статус:&nbsp%XiaomiMiRobotVacuum.State_text_rus%
<br/> 
Уровень заряда:&nbsp%XiaomiMiRobotVacuum.Battery%%
<br/>
Время уборки:&nbsp%XiaomiMiRobotVacuum.СleanTime% минут
<br/>
Основная щетка:&nbsp%XiaomiMiRobotVacuum.MainBrushWorkLife% часов
<br/>
Боковая щетка:&nbsp%XiaomiMiRobotVacuum.SideBrushWorkLife% часов
<br/>
Фильтр:&nbsp%XiaomiMiRobotVacuum.FilterWorkLife% часов
<br/>
Датчики:&nbsp%XiaomiMiRobotVacuum.SensorDirtyLife% часов
</font>
</div>
Код блока с чебоксами для выбора зональной уборки

Код: Выделить всё

<div class="XiaomiMiRobotVacuum">
 <font size="6" color="White" face="Arial"><center>Где убрать?</center></font>
 <br/>
 <br/>
 <form>
    <div class="form-group">
      <input type="checkbox" id="Gostinaya" value="%XiaomiMiRobotVacuum.zone_Gostinaya%">
      <label for="Gostinaya"><font size="5" color="White" face="Arial">Гостиная</font></label>
    </div>
    <div class="form-group">
      <input type="checkbox" id="Spalnaya" value="%XiaomiMiRobotVacuum.zone_Spalnaya%">
      <label for="Spalnaya"><font size="5" color="White" face="Arial">Спальня</font></label>
    </div>
    <div class="form-group">
      <input type="checkbox" id="Koridor" value="%XiaomiMiRobotVacuum.zone_Koridor%">
      <label for="Koridor"><font size="5" color="White" face="Arial">Коридор</font></label>
    </div>
    <div class="form-group">
      <input type="checkbox" id="Kuhnya" value="%XiaomiMiRobotVacuum.zone_Kuhnya%">
      <label for="Kuhnya"><font size="5" color="White" face="Arial">Кухня</font></label>
    </div>    
<button id="take" type="button" onclick="getData()">Запустить зональную уборку</button>     
</form>
</div>
<script>
     $("#take").click(function() {
  var x = [];
  $("input:checked").each(function(i, item) {
 	$('input:checkbox').prop('checked', false);
    	x.push($(item).attr("value"))
  });
$.get( "../../objects/", { object:"XiaomiMiRobotVacuum", op:"set",p:"ZonedClean", v:x.toString()} );
});
</script>
Видеоинструкция по созданию сцены для пылесоса

Класс объекта пылесос Xiaomi MiRobotVacuum
Класс - Пылесос Xiaomi MiRobotVacuum.zip
(2.25 КБ) 293 скачивания
Виджет для пылесоса
Ссылка на тему: [Виджет] Пульт робота пылесоса для СЦЕН и МЕНЮ

Класс объекта пылесос. Переделал для взаимодействия с голосовым помощником Алиса + зональная уборка.
Пылесос.zip
(2.9 КБ) 270 скачиваний

------------------------------------------ Обновление статьи от 05.10.2020 ------------------------------------------
СпойлерПоказать
Установка, настройка и краткий обзор прошивки смотреть видео

В Valetudo RE 0.9.8 встроены MQTT и Telegram бот

Как запускать зональную уборку в Valetudo?

Для отправки основных команд, создаем valetudo/rockrobo/command
СпойлерПоказать
XiaomiMiRobotVacuum.MQTT_Commands.JPG
XiaomiMiRobotVacuum.MQTT_Commands.JPG (59.2 КБ) 10415 просмотров
Для отправки пользовательских команд, создаем valetudo/rockrobo/custom_command
СпойлерПоказать
XiaomiMiRobotVacuum.Custom_command.JPG
XiaomiMiRobotVacuum.Custom_command.JPG (66.33 КБ) 10415 просмотров
Список команд MQTT смотреть здесь

start - Запуск уборки
stop - Остановить уборку
pause - Приостановить уборку
locate - Поиск робота
return_to_base - Вернуть робота на базу
return_home - Вернуть робота на базу
battery - Запрос состояния батареи
status - Запрос статуса
clean_spot - Запустить уборку в текущем месте
fan_speed - Выбор мощности всасывания

В свойство custom_command вставляем этот код {"command": "zoned_cleanup", "zone_ids": ["Имя зоны"]}

Если нужно убрать несколько зон. Ставим через запятую ["Зона 1","Зона 2","Зона 3","Зона 4","Зона 5"]

Например:

Если надо убрать 1 зону:
{"command": "zoned_cleanup", "zone_ids": ["Имя зоны"]}

Если надо убрать 2 зоны:
{"command": "zoned_cleanup", "zone_ids": ["Имя зоны 1","Имя зоны 2"]}

Если надо убрать 3 зоны:
{"command": "zoned_cleanup", "zone_ids": ["Имя зоны 1","Имя зоны 2","Имя зоны 3"]}

Если надо убрать 4 зоны:
{"command": "zoned_cleanup", "zone_ids": ["Имя зоны 1","Имя зоны 2","Имя зоны 3","Имя зоны 4"]}

Если надо убрать 5 зон:
{"command": "zoned_cleanup", "zone_ids": ["Имя зоны 1","Имя зоны 2","Имя зоны 3","Имя зоны 4","Имя зоны 5"]}


В Valetudo RE 0.9.8 есть встроенный телеграм бот.
Чтобы заработал телеграм бот, строго нужно создавать нового бота. Телеграм бот от MajorDoMo не заработает в Valetudo.
------------------------------------------ Обновление статьи от 22.05.2021 ------------------------------------------


Как настроить зональную уборку для пылесосов Roborock 2, Roborock 6 читаем здесь
Последний раз редактировалось Divan Сб май 22, 2021 3:28 pm, всего редактировалось 15 раз.
За это сообщение автора Divan поблагодарили (всего 6):
tarasfrompir (Чт окт 31, 2019 5:25 am) • hc2hunter (Ср ноя 06, 2019 10:02 pm) • kurs (Чт ноя 07, 2019 2:07 am) • TrDA (Сб ноя 16, 2019 11:26 am) • kas5858 (Пн мар 02, 2020 8:28 am) • semkyskov (Вс сен 20, 2020 3:20 pm)
Рейтинг: 6.98%
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение Divan » Ср ноя 06, 2019 10:49 pm

Написал письмо разработчику FloleVac, по поводу проблемы с загрузкой карты. Разработчик исправил проблему, теперь нужно обновить FloleVac и карта будет загружаться, можно извлекать координаты. Мое мнение, что выбрать, Valetudo или MiHome. В valetudo мне не нравится, что я не получаю уведомления о его работе, а для меня это важно, он бывает застревает, бывает, что его поднимают или просто уведомления о начале и завершения уборки. У Valetudo помимо точки назначения и зональный уборки, есть запретные зоны, можно выделять запретные зоны, где пылесос не будет делать уборку. Но есть минус, это касается только пыликов первого поколения, они не сохраняют карту при новой уборке, а последующие поколения могут сохранять карту. Это очень удобно, потому что при полной уборке не сбивается зональная уборка, а у первого, чтобы отправить на зональную уборку, нужно пылик отправить на полную уборку, чтобы нарисовал всю карту и после этого отправлять только на зональную уборку, это не очень то удобно. У valetudo на карте совсем другие координаты и они отличаются от MiHome, у вас через модуль xiaomi miio не получится отправить в нужную зону. Если в valetudo вы выбрали зону кухня, то в MiHome это будет зона в другом месте. Для себя я сделал выбор, это MiHome + рабочий FloleVac. Я откатил на официальную прошивку и перевел пылик на китайский регион, без рутирования. Только у пылесосов первого поколения отключена проверка привязки к региону, второго поколения она включена.
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
hc2hunter
Сообщения: 507
Зарегистрирован: Сб дек 02, 2017 10:45 am
Откуда: RUS
Благодарил (а): 228 раз
Поблагодарили: 348 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение hc2hunter » Чт ноя 07, 2019 11:19 am

Divan писал(а):
Ср ноя 06, 2019 10:49 pm
У Valetudo помимо точки назначения и зональный уборки, есть запретные зоны, можно выделять запретные зоны, где пылесос не будет делать уборку. Но есть минус, это касается только пыликов первого поколения, они не сохраняют карту при новой уборке, а последующие поколения могут сохранять карту.
Вот поэтому я III-ю версию и взял... Доломать-то рано или поздно доломают, но зато сразу "из коробки" много полезностей.
Для себя по сравнению с первым поколением выделил следующие плюсы:
+ У пылесоса 3-го поколения на макушке камера. Он смотрит на потолки и довольно эффективно определяет дверные проемы, ниши и т.п. Соответственно довольно точно разбивает карту на помещения и лучше ориентируется.
+ Возможности MiHome, разумеется, шире, о чем Divan и пишет выше. Сохраняются карты помещений, без проблем можно их редактировать, разбивать на зоны, обозначать запретные участки и "виртуальные" стены. Также, карт может быть сколь угодно много на разные локации (квартира, дача и т.п.), между которыми можно быстро переключаться.
В сущности это, конечно, западло и маркетинг чистой воды со стороны программистов Xiaomi... :cry:
+ Более симпатичный внешний вид (стал более округлым)
+ Все расходники годятся от I и II поколений

Минусы:
- Пылесос стал в диаметре больше на 5мм. Вдруг для кого-то принципиально...
- Убрали с левой стороны датчик приближения к стенам. Однако, учитывая, что пылесос движется по алгоритму "правой руки" (против часовой стрелки), я не понял, играет ли это какую-то отрицательную роль в его поведении. На форумах писали, что в узких местах стал чаще дотрагиваться бампером до препятствий из-за отсутствия датчика слева.
- Пока нет возможности кастомизировать звуки (кроме установки русского стандартного пакета с женским голосом)
- Пока нет возможности влезать в прошивку
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение Divan » Чт ноя 07, 2019 11:48 am

В модуле xiaomi miio пылик 3-го поколения обнаруживается? Им можно управлять из MD?
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
hc2hunter
Сообщения: 507
Зарегистрирован: Сб дек 02, 2017 10:45 am
Откуда: RUS
Благодарил (а): 228 раз
Поблагодарили: 348 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение hc2hunter » Чт ноя 07, 2019 2:07 pm

Divan писал(а):
Чт ноя 07, 2019 11:48 am
В модуле xiaomi miio пылик 3-го поколения обнаруживается? Им можно управлять из MD?
Тут, кстати, есть один нюанс... который меня недавно оттолкнул от попробовать этот модуль.
Автор пишет:
Сервер MajorDoMo и miIO-устройства должны находиться в одном сегменте локальной сети, в котором разрешен широковещательный UDP-трафик с портом назначения 54321.
У меня лично сервер MjDM задвинут вообще на виртуальную машину, которая находится в облаке :)
Ну вот удобно мне так. Во всяком случае на данный момент...
И общение с сервером идет через виртуальные сети ZeroTier и WireGuard. Соответственно, ни о каком прямом прохождении трафика, а уж тем более broadcast-запросов речи нет.

Но, учитывая тот факт, что управлять роботом через MiHome можно из любой точки мира - что-то у энтузиастов не доделано и не докопано.
Раз мой телефон может находиться где угодно, значит робот получает команды напрямую из Mi-облака юникастом.
lihodeev
Сообщения: 148
Зарегистрирован: Ср июл 25, 2018 10:37 pm
Благодарил (а): 43 раза
Поблагодарили: 8 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение lihodeev » Чт ноя 07, 2019 7:40 pm

Ребят, делал четыре захода на прошивку, ну не получается прошить первую модель, голос шьется тут все ок, а прошивку не могу залить! Может кто что подскажет?
Raspberry 3, AMS 16, arduinka 2560, Orange pi Zero, Broadlink RM3, Xiaomi Mi Robot Vacuum SKV4000GL
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение Divan » Чт ноя 07, 2019 8:43 pm

Вы через утилиту WIN-MIROBO 1.1.0 прошиваетесь? Пробуйте разные версии прошивок. Сделайте полный сброс, выше в шапке вы найдете как делать откат прошивки. Я ставил в такой последовательности, сначала vacuum_valetudo_3468.pkg, потом vacuum_valetudo_3570.pkg, потому что сразу залить vacuum_valetudo_3570.pkg мне не удалось, был сбой прошивки.
За это сообщение автора Divan поблагодарил:
lihodeev (Сб ноя 30, 2019 1:41 am)
Рейтинг: 1.16%
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
hc2hunter
Сообщения: 507
Зарегистрирован: Сб дек 02, 2017 10:45 am
Откуда: RUS
Благодарил (а): 228 раз
Поблагодарили: 348 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение hc2hunter » Чт ноя 07, 2019 10:06 pm

lihodeev писал(а):
Чт ноя 07, 2019 7:40 pm
Ребят, делал четыре захода на прошивку, ну не получается прошить первую модель, голос шьется тут все ок, а прошивку не могу залить! Может кто что подскажет?
неужели тут ответа не нашлось?
http://4pda.ru/forum/index.php?showtopic=881982

вроде там даже спецсофтину написали, которая вообще все сама делает... (XVacuum Firmware)
lihodeev
Сообщения: 148
Зарегистрирован: Ср июл 25, 2018 10:37 pm
Благодарил (а): 43 раза
Поблагодарили: 8 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение lihodeev » Чт ноя 07, 2019 11:21 pm

неужели тут ответа не нашлось?
http://4pda.ru/forum/index.php?showtopic=881982

вроде там даже спецсофтину написали, которая вообще все сама делает... (XVacuum Firmware)
по этому мануалу и делал! Токен вытащил, софтину запустил, прошивку положил, голос тоже, НО голос просто влетает, а фирмваре никак :x
Да, забыл сказать - андроид не доступен, а на огрызке без JailBreak приложение не работает.
Последний раз редактировалось lihodeev Чт ноя 07, 2019 11:44 pm, всего редактировалось 1 раз.
Raspberry 3, AMS 16, arduinka 2560, Orange pi Zero, Broadlink RM3, Xiaomi Mi Robot Vacuum SKV4000GL
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение Divan » Чт ноя 07, 2019 11:26 pm

можно прошиваться через RoboRock Control Center и FloleVac
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Ответить