Простые устройства / Simple Devices

Новые релизы, обновления и т.п.

Модератор: immortal

Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

Re: Простые устройства / Simple Devices

Сообщение Gelezako » Вс окт 22, 2017 3:37 pm

TransMatrix писал(а):По факту - $linked_room, это один из объектов класса Rooms!
хм, не нашёл там такого объекта, или не там смотрю?
Изображение

в каком месте вы нашли этот код с $linked_room ?
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Простые устройства / Simple Devices

Сообщение xor » Вс окт 22, 2017 3:46 pm

При указании ЛинкедРум будет просто искаться объект с таким именем. Логично там указать имя объекта из класса, описывающего комнаты, не правда ли?
Вот из SMotions_motionDetected.php

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

 $linked_room=$this->getProperty('linkedRoom');
 ...

 if ($linked_room) {
  callMethodSafe($linked_room.'.onActivity', array('sensor'=>$ot));
 } 
Если $linked_room='Kitchen', то отработает метод callMethodSafe('Kitchen.onActivity', array('sensor'=>$ot));

По большому счёту, это может быть любой класс, содержащий объект Kitchen
За это сообщение автора xor поблагодарил:
Gelezako (Вс окт 22, 2017 6:31 pm)
Рейтинг: 1.16%
Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

Re: Простые устройства / Simple Devices

Сообщение Gelezako » Вс окт 22, 2017 6:43 pm

Теперь понял как оно связано, проверил, действительно метод вызывается, спасибо.
Есть пару вопросов, у меня есть Ксяоми датчик движения, я добавил его через "простые устройства". Открываю вкладку "Действия" в этом же модуле, и вписываю туда к примеру:

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

say("сработало действие",2); 
Далее иду в класс SMotions, нахожу там свой объект "Motion03" (мой Ксяоми датчик) и вижу что у него есть несколько методов. Один из них называется SMotions-> motionDetected. Вписал в него

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

say("событие из метода",2); 
А потом ещё вписываю что-то похожее в этот метод Livingroom-> onActivity
И при движении выполняется код из всех этих 3х мест. Зачем это всё?
Ещё большой минус в том что методы вызываются по 2-3 раза подряд. На практике нужно вызвать их только один раз. Кто как с этим борется?
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Простые устройства / Simple Devices

Сообщение xor » Вс окт 22, 2017 10:24 pm

у Вас датчик сяоми - это раз,
простой девайс, привязанный к этому датчику - это два,
комната, к которой привязан этот датчик -это три.
По неоднократному вызову методов в простых девайсов viewtopic.php?f=7&t=3574&start=210#p61455

Подписываясь на простые устройства Вы получаете джентельменский набор устройств с предопределенными свойствами, методами, интерфейсом, глубокой интеграцией в систему - всё из коробки.
Минусы на данный момент, которые я вижу - неустоявшаяся логика (исправится со временем), и - главное пока для меня - "утрата полной власти" над конкретными устройствами.

Для себя я оставил простые устройства в качестве теста пока, а для аналогичных по функционалу боевых создал отдельные классы. Даже сделал myRooms.
За это сообщение автора xor поблагодарил:
Gelezako (Пн окт 23, 2017 1:01 am)
Рейтинг: 1.16%
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: Простые устройства / Simple Devices

Сообщение skysilver » Вс окт 22, 2017 10:30 pm

Gelezako писал(а):Ещё большой минус в том что методы вызываются по 2-3 раза подряд. На практике нужно вызвать их только один раз. Кто как с этим борется?
Это плата за простоту и уменьшение порога входа в систему.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

Re: Простые устройства / Simple Devices

Сообщение Gelezako » Пн окт 23, 2017 1:04 am

большое спасибо за ответы, линку прочитал
xor писал(а): По неоднократному вызову методов в простых девайсов viewtopic.php?f=7&t=3574&start=210#p61455
но какое решение, подскажите плиз
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Простые устройства / Simple Devices

Сообщение xor » Пн окт 23, 2017 1:47 am

А я решения не нашёл, повторюсь - в датчиках движения, комнатах, в других объектах, которые мне не подходят в простых устройствах - я ушел в "непростые", но свои, где можно логику прописать под себя.
С простыми подожду пока.
Аватара пользователя
nightwind
Сообщения: 333
Зарегистрирован: Вс июн 26, 2016 4:42 pm
Откуда: Барановичи
Благодарил (а): 28 раз
Поблагодарили: 52 раза
Контактная информация:

Re: Простые устройства / Simple Devices

Сообщение nightwind » Пн окт 23, 2017 2:52 pm

Gelezako Зачем ты написал в трех объектах этот свой say("событие из метода",2) ?
Пиши только там, где нужно.Если важно движение в комнате - пиши в обработчике комнаты, а в других не пиши. Если надо контролировать сколько раз или когда срабатывает датчик (может быть их несколько в комнате) - пиши в обработчике датчика.
Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

Re: Простые устройства / Simple Devices

Сообщение Gelezako » Вт окт 24, 2017 12:27 pm

nightwind писал(а):Gelezako Зачем ты написал в трех объектах этот свой say("событие из метода",2) ?
Пиши только там, где нужно.Если важно движение в комнате - пиши в обработчике комнаты, а в других не пиши. Если надо контролировать сколько раз или когда срабатывает датчик (может быть их несколько в комнате) - пиши в обработчике датчика.
Я написал для теста, что бы выяснить везде ли срабатывает. И когда выяснилось что вызов происходит из всех мест, я спросил зачем это. Это реально запутывает. Скорей всего это сделано сознательно, но я не понимл идеи, поэтому и спросил. После вашего комента всё прояснилось.

Но осталась проблема с много кратным вызовом метода. Даже если я оставлю обработчик только в одном месте, вызов метода произойдёт 2-3 раза подряд. Т. к. датчик движения отсылает эту информацию несколько раз подряд. Не могу найти решение как это исправить :(
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
Аватара пользователя
nightwind
Сообщения: 333
Зарегистрирован: Вс июн 26, 2016 4:42 pm
Откуда: Барановичи
Благодарил (а): 28 раз
Поблагодарили: 52 раза
Контактная информация:

Re: Простые устройства / Simple Devices

Сообщение nightwind » Вт окт 24, 2017 5:58 pm

Gelezako писал(а): Но осталась проблема с много кратным вызовом метода. (
Костыль - при первом вызове ставь таймер на сколько там тебе надо секунд, чтобы датчик успел отдергаться и отослать все. И проверяй в самом начале - если таймер установлен - то на выход сразу.
Ответить