Страница 25 из 124

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

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

в каком месте вы нашли этот код с $linked_room ?

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

Добавлено: Вс окт 22, 2017 3:46 pm
xor
При указании ЛинкедРум будет просто искаться объект с таким именем. Логично там указать имя объекта из класса, описывающего комнаты, не правда ли?
Вот из 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

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

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

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

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

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

say("событие из метода",2); 
А потом ещё вписываю что-то похожее в этот метод Livingroom-> onActivity
И при движении выполняется код из всех этих 3х мест. Зачем это всё?
Ещё большой минус в том что методы вызываются по 2-3 раза подряд. На практике нужно вызвать их только один раз. Кто как с этим борется?

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

Добавлено: Вс окт 22, 2017 10:24 pm
xor
у Вас датчик сяоми - это раз,
простой девайс, привязанный к этому датчику - это два,
комната, к которой привязан этот датчик -это три.
По неоднократному вызову методов в простых девайсов viewtopic.php?f=7&t=3574&start=210#p61455

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

Для себя я оставил простые устройства в качестве теста пока, а для аналогичных по функционалу боевых создал отдельные классы. Даже сделал myRooms.

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

Добавлено: Вс окт 22, 2017 10:30 pm
skysilver
Gelezako писал(а):Ещё большой минус в том что методы вызываются по 2-3 раза подряд. На практике нужно вызвать их только один раз. Кто как с этим борется?
Это плата за простоту и уменьшение порога входа в систему.

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

Добавлено: Пн окт 23, 2017 1:04 am
Gelezako
большое спасибо за ответы, линку прочитал
xor писал(а): По неоднократному вызову методов в простых девайсов viewtopic.php?f=7&t=3574&start=210#p61455
но какое решение, подскажите плиз

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

Добавлено: Пн окт 23, 2017 1:47 am
xor
А я решения не нашёл, повторюсь - в датчиках движения, комнатах, в других объектах, которые мне не подходят в простых устройствах - я ушел в "непростые", но свои, где можно логику прописать под себя.
С простыми подожду пока.

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

Добавлено: Пн окт 23, 2017 2:52 pm
nightwind
Gelezako Зачем ты написал в трех объектах этот свой say("событие из метода",2) ?
Пиши только там, где нужно.Если важно движение в комнате - пиши в обработчике комнаты, а в других не пиши. Если надо контролировать сколько раз или когда срабатывает датчик (может быть их несколько в комнате) - пиши в обработчике датчика.

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

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

Но осталась проблема с много кратным вызовом метода. Даже если я оставлю обработчик только в одном месте, вызов метода произойдёт 2-3 раза подряд. Т. к. датчик движения отсылает эту информацию несколько раз подряд. Не могу найти решение как это исправить :(

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

Добавлено: Вт окт 24, 2017 5:58 pm
nightwind
Gelezako писал(а): Но осталась проблема с много кратным вызовом метода. (
Костыль - при первом вызове ставь таймер на сколько там тебе надо секунд, чтобы датчик успел отдергаться и отослать все. И проверяй в самом начале - если таймер установлен - то на выход сразу.