Пылесос Xiaomi MiRobotVacuum

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

Модератор: immortal

pash4uga
Сообщения: 192
Зарегистрирован: Чт окт 04, 2018 12:04 pm
Благодарил (а): 28 раз
Поблагодарили: 45 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение pash4uga » Сб фев 29, 2020 1:46 pm

Так и я не программист) Так, жалкие попытки...
Видос это врядли, 2,5 года назад рисовал, не уверен что воспроизведу) Виджет где-то тут на форуме находил и его под свои свойства правил. Могу сцену выгрузить если чем то поможет...
Divan писал(а):
Сб фев 29, 2020 12:48 pm
Так добавил свойство zone_Gostinaya(взял название объекта как в классе Rooms) к объекту XiaomiMiRobotVacuum и в значении вставил координаты
В свойстве у меня хранится одна зона, 1 чек-бокс = 1 зона. А у вас 4 зоны, так не тестировал, возможно и будет работать.
СпойлерПоказать
Сохраненное изображение 2020-2-29_18-36-52.951.jpg
Сохраненное изображение 2020-2-29_18-36-52.951.jpg (165.61 КБ) 4663 просмотра
К объектам Rooms вообще ни какой привязки нет.
Divan писал(а):
Сб фев 29, 2020 12:48 pm
Так подкорректировал код, вставил id="Gostinaya" и value="%XiaomiMiRobotVacuum.zone_Gostinaya%" - правильно ли я тут написал?

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

    <div class="form-group">
      <input type="checkbox" id="Gostinaya" value="%XiaomiMiRobotVacuum.zone_Gostinaya%">
      <label for="Gostinaya">Гостиная</label>
    </div>
Да, все верно.
Divan писал(а):
Сб фев 29, 2020 12:48 pm
У меня уборка настроена так, если умные шторы открыты, то пылесос уберется за шторами, если они закрыты, то только около штор. Все дело в том, что от штор до стены 30 см и пылесос там застревает, он заезжает за шторы, но вот выехать уже не может :D

Вот думаю, сделать свойство-метод, где при установке чебокса на уборку в гостиной, в значении должна появиться 1, где сработает метод с сценарием на проверку штор. Как это сделать?
Как вариант можно подумать, что какой то метод при открытии шторы будет подменять координаты зон на "расширенные" в свойстве XiaomiMiRobotVacuum.zone_Gostinaya, а при закрытии возвращать на другие.
Для красоты вот 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;
  

}

.new {
  padding: 50px;
   background: rgba(234, 234, 234, 0.8); /* Цвет фона */
    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;
	}
}

Вот еще статейка про пылесос в конекте https://connect.smartliving.ru/profile/ ... acuum.html
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение Divan » Сб фев 29, 2020 2:09 pm

[/code][/spoiler]
Вот еще статейка про пылесос в конекте https://connect.smartliving.ru/profile/ ... acuum.html
[/quote]
Так это и есть моя статья, я ее и выложил )
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
pash4uga
Сообщения: 192
Зарегистрирован: Чт окт 04, 2018 12:04 pm
Благодарил (а): 28 раз
Поблагодарили: 45 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение pash4uga » Сб фев 29, 2020 2:26 pm

Divan писал(а):
Сб фев 29, 2020 2:09 pm
[/code][/spoiler]
Вот еще статейка про пылесос в конекте https://connect.smartliving.ru/profile/ ... acuum.html
Так это и есть моя статья, я ее и выложил )
[/quote]

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

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение Divan » Сб фев 29, 2020 4:47 pm

Скажите, а id="take" и id="goto" к чему привязаны? Как они срабатывают или вы так кнопку назвали "take" и "goto" и ссылаетесь на них?

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

<button id="take">Начать уборку</button>     
<br>
<br>
<button id="goto">Почистить пылесос</button>
  </form>

Куда вы вставили этот код?

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

/* 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;
  

}

.new {
  padding: 50px;
   background: rgba(234, 234, 234, 0.8); /* Цвет фона */
    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;
	}
}


У меня получилось вот так
СпойлерПоказать
сцена Пылесос 2.JPG
сцена Пылесос 2.JPG (81.33 КБ) 4618 просмотров

Можете полный код html скинуть? Я подкорректирую и вставлю свои id и value
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
pash4uga
Сообщения: 192
Зарегистрирован: Чт окт 04, 2018 12:04 pm
Благодарил (а): 28 раз
Поблагодарили: 45 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение pash4uga » Сб фев 29, 2020 5:12 pm

Divan писал(а):
Сб фев 29, 2020 4:47 pm
Скажите, а id="take" и id="goto" к чему привязаны? Как они срабатывают или вы так кнопку назвали "take" и "goto" и ссылаетесь на них?
Они ниже в JS скрипте обрабатываются. take - отправить на зональную уборку по выделенным чек-боксам, goto тоже через JS отправляет пылесос просто на заданную точку.
Divan писал(а):
Сб фев 29, 2020 4:47 pm
Можете полный код html скинуть? Я подкорректирую и вставлю свои id и value
Только учтите, что у вас домашняя страница, а у меня сцена. И на сцене добавлен html элемент, в котором прописан код и там же указан css.
На домашней странице можете попробовать подцепить стили через <style> </style> У меня просто вообще ни одной домашней страницы нет, все через сцены сделано.
Про подключение стилей можно почитать тут http://htmlbook.ru/samcss/sposoby-dobav ... -stranitsu

Моя сцена
Пылеос.scene.txt
(122.71 КБ) 218 скачиваний
Перед импортом уберите расширение txt у файла
За это сообщение автора pash4uga поблагодарил:
Divan (Вс мар 01, 2020 1:14 am)
Рейтинг: 1.16%
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение Divan » Вс мар 01, 2020 1:14 am

Разобрался с чебоксом, понял как делать кнопки и свою сцену. Спасибо Вам, что подкинули хороший вариант :). Выкладываю свой вариант дизайна.

Боковое меню
СпойлерПоказать
Боковое меню с чебоксом.jpg
Боковое меню с чебоксом.jpg (112.27 КБ) 4566 просмотров
Сцена пылесоса
СпойлерПоказать
Сцена Пылесос.JPG
Сцена Пылесос.JPG (90.83 КБ) 4566 просмотров
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
pash4uga
Сообщения: 192
Зарегистрирован: Чт окт 04, 2018 12:04 pm
Благодарил (а): 28 раз
Поблагодарили: 45 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение pash4uga » Вс мар 01, 2020 4:54 am

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

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение Divan » Вс мар 01, 2020 2:12 pm

Кстати, @pash4uga вы когда нажимаете на кнопку "Запустить уборку", вы заметили, что у вас обновляется страница? Я устранил это и убрал лишнее. Я обязательно сделаю инструкцию и выложу в connect, это очень классная опция и все благодаря вам :) .

1) Чтобы при нажатии на кнопку страница не обновлялась, добавляем код type="button" onclick="getData()" который запретит обновлять страницу

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

<button id="take" type="button" onclick="getData()">Запустить зональную уборку</button>
2) Переделал код для передач массива отмеченных checkbox в свойство zoned_clean объекта VAC_M.

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

<script>
     $("#take").click(function() {
  var x = [];
  $("input:checked").each(function(i, item) {
    x.push($(item).attr("value"))
  });
$.get( "../../objects/", { object:"VAC_MI", op:"set",p:"zoned_clean", v:x.toString()} );
});
</script>  
Вот так выглядит блок с одной кнопкой
СпойлерПоказать
Скриншот блока зональной уборки.JPG
Скриншот блока зональной уборки.JPG (25.43 КБ) 4542 просмотра
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
pash4uga
Сообщения: 192
Зарегистрирован: Чт окт 04, 2018 12:04 pm
Благодарил (а): 28 раз
Поблагодарили: 45 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение pash4uga » Вс мар 01, 2020 6:35 pm

Divan писал(а):
Вс мар 01, 2020 2:12 pm

1) Чтобы при нажатии на кнопку страница не обновлялась, добавляем код type="button" onclick="getData()" который запретит обновлять страницу

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

<button id="take" type="button" onclick="getData()">Запустить зональную уборку</button>
Если честно, то не обращал внимания, т.к. эта страница у меня вызывается через fancybox. Т.е. открыл, выбрал, отправил и забыл, через нек-е время страничка закрылась.
Но спасибо за уточнение)
Ну и раз страница больше не обновляется, то тогда добавьте сразу после отправки координат $.get(...);
код: $('input:checked').prop('checked', false);
Что бы после отправки на уборку сбрасывать выделенные чек-боксы)
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Пылесос Xiaomi MiRobotVacuum

Сообщение Divan » Вс мар 01, 2020 8:12 pm

pash4uga писал(а):
Вс мар 01, 2020 6:35 pm
Divan писал(а):
Вс мар 01, 2020 2:12 pm

1) Чтобы при нажатии на кнопку страница не обновлялась, добавляем код type="button" onclick="getData()" который запретит обновлять страницу

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

<button id="take" type="button" onclick="getData()">Запустить зональную уборку</button>
Если честно, то не обращал внимания, т.к. эта страница у меня вызывается через fancybox. Т.е. открыл, выбрал, отправил и забыл, через нек-е время страничка закрылась.
Но спасибо за уточнение)
Ну и раз страница больше не обновляется, то тогда добавьте сразу после отправки координат $.get(...);
код: $('input:checked').prop('checked', false);
Что бы после отправки на уборку сбрасывать выделенные чек-боксы)

Добавил, теперь код выглядит так, при запуске выбранных зон, чебоксы сбрасываются

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

<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>
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Ответить