Пылесос Xiaomi MiRobotVacuum

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

Модератор: immortal

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

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение Divan »

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

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

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


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

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

<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, который в свою очередь передает команду в модуль и пылесос начинает делать зональную уборку
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Мазур
Сообщения: 133
Зарегистрирован: Чт ноя 26, 2015 3:52 pm

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение Мазур »

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

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение Divan »

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

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение Мазур »

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

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение Divan »

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

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

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение astotskiy »

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

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение Kis_s »

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
Откуда: Пермь

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение dengi.76 »

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

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение Kis_s »

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
dengi.76
Сообщения: 222
Зарегистрирован: Вт фев 06, 2018 9:40 pm
Откуда: Пермь

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение dengi.76 »

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 , и при его изменении пылесос убирает выбранную комнату. В общем смысл понятен - буду разбираться. Спасибо !!!
Ответить