Страница 7 из 10

Re: Пылесос Xiaomi MiRobotVacuum

Добавлено: Ср апр 08, 2020 1:00 pm
Divan
Проверьте свой код. Должно быть так.

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

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


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

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

<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, который в свою очередь передает команду в модуль и пылесос начинает делать зональную уборку

Re: Пылесос Xiaomi MiRobotVacuum

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

Re: Пылесос Xiaomi MiRobotVacuum

Добавлено: Ср апр 08, 2020 9:23 pm
Divan
выложите ваш код, покажите как у вас в модуле miio привязаны свойства.

Re: Пылесос Xiaomi MiRobotVacuum

Добавлено: Чт апр 09, 2020 10:32 pm
Мазур
Divan писал(а):
Ср апр 08, 2020 9:23 pm
выложите ваш код, покажите как у вас в модуле miio привязаны свойства.
Вот скрин Miio
СпойлерПоказать
Безымянный.jpg
Безымянный.jpg (175.12 КБ) 5570 просмотров
Безымянный1.jpg
Безымянный1.jpg (192.51 КБ) 5570 просмотров
Безымянный2.jpg
Безымянный2.jpg (132.14 КБ) 5570 просмотров
Вот еще скрин
СпойлерПоказать
Безымянный3.jpg
Безымянный3.jpg (122.47 КБ) 5570 просмотров
А вот здесь у Вас координаты, у меня там пусто. Я пробовал их туда вставлять, но результата не дало
СпойлерПоказать
Безымянный4.jpg
Безымянный4.jpg (68.33 КБ) 5570 просмотров
Вот координаты
СпойлерПоказать
Безымянный5.jpg
Безымянный5.jpg (89.2 КБ) 5570 просмотров

Re: Пылесос Xiaomi MiRobotVacuum

Добавлено: Чт апр 09, 2020 10:49 pm
Divan
Я понял в чем ваша ошибка

1) в свойство Zoned_cleaned у вас вместо координат вставляется помещение - это ошибка
Не правильно
СпойлерПоказать
Ошибка 1.jpg
Ошибка 1.jpg (22.35 КБ) 5566 просмотров
Правильно, сюда должны вставляться координаты, они вставляются сами, как вы установили галочку на выбранное помещение.
СпойлерПоказать
Правильно.JPG
Правильно.JPG (26.05 КБ) 5566 просмотров
2) Вам не нужно создавать сценарии с координатами, вам нужно вставить координаты сюда, где вы сами их и выделили. При выборе помещения с помощью чебокса, идет проверка этих самых свойств на координаты, а у вас там пусто.
СпойлерПоказать
ккординаты нужно вставлять сюда.JPG
ккординаты нужно вставлять сюда.JPG (29.18 КБ) 5566 просмотров

Re: Пылесос Xiaomi MiRobotVacuum

Добавлено: Пт апр 10, 2020 11:19 pm
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-команд" едет в нужную комнату, но не могу заставить пылик ехать по этой команде через методы.
плиз скиньте свои методы.

Re: Пылесос Xiaomi MiRobotVacuum

Добавлено: Сб апр 11, 2020 11:39 pm
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")

Re: Пылесос Xiaomi MiRobotVacuum

Добавлено: Вс апр 12, 2020 8:06 am
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" у меня пылесос убирает нужную комнату, а при отправки команды - нет !
Спасибо !

Re: Пылесос Xiaomi MiRobotVacuum

Добавлено: Вс апр 12, 2020 10:59 am
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

Re: Пылесос Xiaomi MiRobotVacuum

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