Пылесос Xiaomi MiRobotVacuum

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

Модератор: immortal

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

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение Divan » Ср апр 08, 2020 1:00 pm

Проверьте свой код. Должно быть так.

Первое, что у вас должно быть, это в классе пылесоса добавить комнаты для уборки, в них будут вставляться координаты. Например добавляете zone_coridor или zoneCoridor, да как угодно, главное, чтобы было свойство комнаты.
СпойлерПоказать
свойства - зональная уборка - указываем объект и свойство.jpg
свойства - зональная уборка - указываем объект и свойство.jpg (87.1 КБ) 5246 просмотров
свойства - зональная уборка.jpg
свойства - зональная уборка.jpg (136.6 КБ) 5246 просмотров

Далее, ниже, где я выделил, должен быть указан объект пылесоса, у меня XiaomiMiRobotVacuum и свойство ZonedClean (у некоторых оно по разному может быть), откройте модуль и посмотрите как у вас там настроено.
СпойлерПоказать
смотреть на объект и запустить зональную уборку.jpg
смотреть на объект и запустить зональную уборку.jpg (43.61 КБ) 5246 просмотров
настройки модуля.jpg
настройки модуля.jpg (105.94 КБ) 5246 просмотров


Такой код прописан у меня.

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

<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="Spalnaya1" value="%XiaomiMiRobotVacuum.zone_Spalnaya1%">
      <label for="Spalnaya1"><font size="5" color="White" face="Arial">Спальня-1</font></label>
    </div>
    <div class="form-group">
    <input type="checkbox" id="Spalnaya2" value="%XiaomiMiRobotVacuum.zone_Spalnaya2%">
    <label for="Spalnaya2"><font size="5" color="White" face="Arial">Спальня-2</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>

Чтобы вы понимали как это работает, сначала идет проверка по указанному объекту и свойству, потом, если стоит чебокс на эту зону, то он копирует код указанной зоны в свойство ZonedClean, который в свою очередь передает команду в модуль и пылесос начинает делать зональную уборку
За это сообщение автора Divan поблагодарил:
dengi.76 (Вс апр 12, 2020 12:33 pm)
Рейтинг: 1.16%
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Мазур
Сообщения: 133
Зарегистрирован: Чт ноя 26, 2015 3:52 pm
Благодарил (а): 32 раза
Поблагодарили: 1 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение Мазур » Ср апр 08, 2020 7:08 pm

Divan писал(а):
Ср апр 08, 2020 1:00 pm
Проверьте свой код. Должно быть так.
Проверил. Всё как и у Вас. Ну... Кроме названий комнат. ))))
Но не работает зональная уборка. При том в статусе робота пылесоса
XiaomiMiRobotVacuum.ZonedClean меняет на название последней отмеченной комнаты... Например Gostinaya
Такое впечатление, что до самого пылесоса не доходит сигнал. Хотя обычная уборка, кнопка домой и др. работают.
Очень странно
А в свойстве например
XiaomiMiRobotVacuum.Zoned_Gostinaya появляются координаты.
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение Divan » Ср апр 08, 2020 9:23 pm

выложите ваш код, покажите как у вас в модуле miio привязаны свойства.
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Мазур
Сообщения: 133
Зарегистрирован: Чт ноя 26, 2015 3:52 pm
Благодарил (а): 32 раза
Поблагодарили: 1 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение Мазур » Чт апр 09, 2020 10:32 pm

Divan писал(а):
Ср апр 08, 2020 9:23 pm
выложите ваш код, покажите как у вас в модуле miio привязаны свойства.
Вот скрин Miio
СпойлерПоказать
Безымянный.jpg
Безымянный.jpg (175.12 КБ) 5150 просмотров
Безымянный1.jpg
Безымянный1.jpg (192.51 КБ) 5150 просмотров
Безымянный2.jpg
Безымянный2.jpg (132.14 КБ) 5150 просмотров
Вот еще скрин
СпойлерПоказать
Безымянный3.jpg
Безымянный3.jpg (122.47 КБ) 5150 просмотров
А вот здесь у Вас координаты, у меня там пусто. Я пробовал их туда вставлять, но результата не дало
СпойлерПоказать
Безымянный4.jpg
Безымянный4.jpg (68.33 КБ) 5150 просмотров
Вот координаты
СпойлерПоказать
Безымянный5.jpg
Безымянный5.jpg (89.2 КБ) 5150 просмотров
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение Divan » Чт апр 09, 2020 10:49 pm

Я понял в чем ваша ошибка

1) в свойство Zoned_cleaned у вас вместо координат вставляется помещение - это ошибка
Не правильно
СпойлерПоказать
Ошибка 1.jpg
Ошибка 1.jpg (22.35 КБ) 5146 просмотров
Правильно, сюда должны вставляться координаты, они вставляются сами, как вы установили галочку на выбранное помещение.
СпойлерПоказать
Правильно.JPG
Правильно.JPG (26.05 КБ) 5146 просмотров
2) Вам не нужно создавать сценарии с координатами, вам нужно вставить координаты сюда, где вы сами их и выделили. При выборе помещения с помощью чебокса, идет проверка этих самых свойств на координаты, а у вас там пусто.
СпойлерПоказать
ккординаты нужно вставлять сюда.JPG
ккординаты нужно вставлять сюда.JPG (29.18 КБ) 5146 просмотров
За это сообщение автора Divan поблагодарил:
Мазур (Вс апр 12, 2020 9:20 pm)
Рейтинг: 1.16%
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
astotskiy
Сообщения: 42
Зарегистрирован: Вт июл 15, 2014 4:28 pm
Благодарил (а): 78 раз
Поблагодарили: 4 раза

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение astotskiy » Пт апр 10, 2020 11:19 pm

Kis_s писал(а):
Вс апр 05, 2020 6:43 pm
Добрый день! У меня Roborock 2-й редакции. Карта тоже не хотела ничем читаться. Но, почитав https://github.com/marcelrv/XiaomiRobotVacuumProtocol и повозившись с MiHiome понял, что последнии версии MiHome(с цветной картинкой) сами размечают комнаты, дают их редактировать и убирать отдельно.
Вообщем я выкрутился с уборкой комнат таким образом:
1. Разметил в обновленной MiHome комнаты, - она позволяет сделать сколько угодно
2. В модуле xiaomimiio есть возможность подавать разные команды. К сожалению, get_room_mapping выдала только одну комнату. Пришлось давать команду app_segment_clean перебирая параметры номера сегмента, чтобы выяснить, куда пылесос поедет. Таким образом выяснил, что у меня номера сегментов такие: 4 - Душевая, 8 - Детская, 16 - Гостиная, 17 - Прихожая, 18- Ванная, 19 - Спальня, 20 - Кухня, 21 - Гардеробная. Я так понимаю, что при редактировании комнаты(разбитии или слиянии) новые объекты пишутся с инкрементом идентификатора.
3. И самое "неприятное", - модуль xiaomimiio не умеет пока работать с сегментами, поэтому пришлось его "подправить". В файле "/var/www/html/modules/xiaomimiio/xiaomimiio.class.php" исправить строчку:
$this->addToQueue($properties[$i]['DEVICE_ID'], 'app_zoned_clean', '[' . $value . ']');
на
$this->addToQueue($properties[$i]['DEVICE_ID'], 'app_segment_clean', '[' . $value . ']');
формат команды практически не отличается от работы с зонами:
{"id":8338,"method":"app_zoned_clean","params":[[26234,26042,27284,26642,5]]}
{"id":8338,"method":"app_segment_clean","params":[1,2,3,4,10]}
где цифры - найденные в п.п.2 ID комнат, так что изменяя zoned_clean на "4,8" мы отправляем пылесос убирать сегменты 4 и 8 (При этом никаких скобок даже не надо добавлять, скрипт пишет прямо в нужном формате).

Дальше сделал все, как у Вас, только добавил еще состояний, их на самом деле больше, сам код видно в state:
0 Unknown
1 Initiating
2 Sleeping
3 Idle
4 Remote Control
5 Cleaning
6 Returning Dock
7 Manual Mode
8 Charging
9 Charging Error
10 Paused
11 Spot Cleaning
12 In Error
13 Shutting Down
14 Updating
15 Docking
16 Go To
17 Zone Clean
18 Room Clean
100 Fully Charged
3.1. Изменил отображение полей на "Оставшиеся проценты", как в MiHome, например "filter_work_life_p Оставшийся срок работы фильтра (в % от 150 часов)" "main_brush_work_life_p Оставшийся срок работы основной щетки (в % от 300 часов)" "sensor_dirty_life_p Оставшийся срок работы сенсоров (в % от 30 часов)" "side_brush_work_life_p Оставшийся срок работы боковой щетки (в % от 200 часов)"
3.2. Сделал изменение цвета полей информации: меньше 10% - красный, меньше 30% - желтый, иначе зеленый

И все заработало ;о)
PS Спасибо за сцену с пылесосом ;о)))
Kis_s, не могли бы вы подсказать или поделится своими методами, у меня пылик 3 версией, и на команду "app_segment_clean [19]" через "Тестирование API-команд" едет в нужную комнату, но не могу заставить пылик ехать по этой команде через методы.
плиз скиньте свои методы.
Kis_s
Сообщения: 6
Зарегистрирован: Вс янв 12, 2020 5:25 pm
Благодарил (а): 2 раза
Поблагодарили: 5 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение Kis_s » Сб апр 11, 2020 11:39 pm

astotskiy писал(а):
Пт апр 10, 2020 11:19 pm
у меня пылик 3 версией, и на команду "app_segment_clean [19]" через "Тестирование API-команд" едет в нужную комнату, но не могу заставить пылик ехать по этой команде через методы.
плиз скиньте свои методы.
Когда уважаемый skysilver обновит модуль, то, как я понял, в модуле xiaomimiio у пылесоса должно появиться свойство "segment_clean". При его изменении на номера сегментов пылесосу будет дана команда app_segment_clean[%segment_clean%]. Примечание: в коде модуля есть проверка: в типе устройства должно стоять "Mi Roborock S50/S51" (в списке устройств "roborock.vacuum.s5")
dengi.76
Сообщения: 222
Зарегистрирован: Вт фев 06, 2018 9:40 pm
Откуда: Пермь
Благодарил (а): 117 раз
Поблагодарили: 7 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение dengi.76 » Вс апр 12, 2020 8:06 am

Kis_s писал(а):
Сб апр 11, 2020 11:39 pm
astotskiy писал(а):
Пт апр 10, 2020 11:19 pm
у меня пылик 3 версией, и на команду "app_segment_clean [19]" через "Тестирование API-команд" едет в нужную комнату, но не могу заставить пылик ехать по этой команде через методы.
плиз скиньте свои методы.
Когда уважаемый skysilver обновит модуль, то, как я понял, в модуле xiaomimiio у пылесоса должно появиться свойство "segment_clean". При его изменении на номера сегментов пылесосу будет дана команда app_segment_clean[%segment_clean%]. Примечание: в коде модуля есть проверка: в типе устройства должно стоять "Mi Roborock S50/S51" (в списке устройств "roborock.vacuum.s5")
Здравствуйте ! Извините за глупый вопрос, но не могли бы Вы привести пример рабочей команды зональной уборки, т.к. при ручном изменении свойства " segment_clean" у меня пылесос убирает нужную комнату, а при отправки команды - нет !
Спасибо !
Kis_s
Сообщения: 6
Зарегистрирован: Вс янв 12, 2020 5:25 pm
Благодарил (а): 2 раза
Поблагодарили: 5 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение Kis_s » Вс апр 12, 2020 10:59 am

dengi.76 писал(а):
Вс апр 12, 2020 8:06 am
т.к. при ручном изменении свойства " segment_clean" у меня пылесос убирает нужную комнату, а при отправки команды - нет !
Спасибо !
Отдельной "команды" нет. Все должно работать так:
1. JavaScript в сцене меняет свойство объекта пылесоса. Пусть оно называется "segment_clean". Туда должны попасть номера сегментов 1,2,3,10
2. Это свойство объекта должно быть связано со свойством пылесоса "segment_clean" модуля xiaomimiio на закладке Данные.
3. Как только это происходит, модуль xiaomimiio сам посылает команду пылесосу.

В текущей версии xiaomimiio есть проблема, свойство segment_clean не выводится в закладке Данные пылесоса. Надеюсь, уважаемый skysilver поправит это. Подробности тут: viewtopic.php?f=5&t=4863&e=1&view=unread#p118051
За это сообщение автора Kis_s поблагодарил:
dengi.76 (Вс апр 12, 2020 11:21 am)
Рейтинг: 1.16%
dengi.76
Сообщения: 222
Зарегистрирован: Вт фев 06, 2018 9:40 pm
Откуда: Пермь
Благодарил (а): 117 раз
Поблагодарили: 7 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение dengi.76 » Вс апр 12, 2020 11:21 am

Kis_s писал(а):
Вс апр 12, 2020 10:59 am
dengi.76 писал(а):
Вс апр 12, 2020 8:06 am
т.к. при ручном изменении свойства " segment_clean" у меня пылесос убирает нужную комнату, а при отправки команды - нет !
Спасибо !
Отдельной "команды" нет. Все должно работать так:
1. JavaScript в сцене меняет свойство объекта пылесоса. Пусть оно называется "segment_clean". Туда должны попасть номера сегментов 1,2,3,10
2. Это свойство объекта должно быть связано со свойством пылесоса "segment_clean" модуля xiaomimiio на закладке Данные.
3. Как только это происходит, модуль xiaomimiio сам посылает команду пылесосу.

В текущей версии xiaomimiio есть проблема, свойство segment_clean не выводится в закладке Данные пылесоса. Надеюсь, уважаемый skysilver поправит это. Подробности тут: viewtopic.php?f=5&t=4863&e=1&view=unread#p118051
Я именно так и сделал - добавил 70 строку, появился segment_clean , и при его изменении пылесос убирает выбранную комнату. В общем смысл понятен - буду разбираться. Спасибо !!!
Ответить