Страница 1 из 1

Настройки управления с использованием объектов и методов

Добавлено: Чт апр 11, 2013 10:53 pm
Vadymkyr
подскажите пожалуйста, как лучше всего сделать управление? Нужно чтобы можно было управлять через меню (триггер) и сцены и что бы и там и там можно было увидеть статус(включен/выключен), так же планирую еще управлять c помощью программы на андроиде. Управляется все командами вида "192.168.1.15\1r1"

Re: Настройки управления с использованием объектов и методов

Добавлено: Пт апр 12, 2013 10:16 am
sergejey
Попробую вкратце рассказать как я обычно делаю.

1. Создаю класс объектов для управления (не каждый раз -- обычно использую один из созданных). Назовём его ControlClass

2. Добавляю в него свойство status

3. Добавляю в него методы: turnOn, turnOff, refresh, switch

4. код для turnOn и turnOff зависит от "железа", но к примеру вот код для управляемого по http реле:

метод turnOn (можно код вообще пустым оставить, но поставим программу-минимум):

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

$this->setProperty("status",1);
метод turnOff (аналогично):

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

$this->setProperty("status",0);
метод refresh (не зависит от железа):

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

$status=$this->getProperty("status");
if ($status) {
 $this->callMethod('turnOn');
} else {
 $this->callMethod('turnOff');
}
метод switch (не зависит от железа):
$status=$this->getProperty("status");
if ($status) {
$this->callMethod('turnOff');
} else {
$this->callMethod('turnOn');
}

5. добавляю объект вышеуказанного класса (назовём его Outlet1 -- "Розетка 1" по-русски) и переопределяю методы turnOn и turnOff (они ведь зависят от конкретного железа):

метод turnOn:

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

$this->setProperty("status",1);
$url='http://192.168.0.82/?CLICK,2';
getURL($url,0);
метод turnOff:

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

$this->setProperty("status",0);
$url='http://192.168.0.82/?CLICK,1';
getURL($url,0);
6. дальше можно добавить переключатель на меню, указав мой объект:
http://clip2net.com/clip/m1/1365750347-clip-14kb.png

7. либо можно сделать кнопку:
Изображение

8. на сцене можно сделать вывод какого-то значка, если объект включен (можно сделать другой значёк, если выключен, но тут я уже не стал добавлять):

Изображение

9. в качестве бонуса можно сделать выключение turnOff (или включение turnOn или переключение switch) по нажатию на элемент сцены:

Изображение

Вот так обычно делаю я :)

Работать с классами удобно, т.к. гораздо проще вводить новые объекты, меняя код только тех методов, которые завязаны на железе. При этом можно даже код методов делать более универсальным, перенеся меняющиеся параметры в свойства объектов и тогда методы будут одинаковыми и для добавления в систему очередного экземпляра однотипного железа, нужно будет только добавить объект и указать значения этих свойств (IP-адрес к примеру).

Re: Настройки управления с использованием объектов и методов

Добавлено: Пн апр 15, 2013 12:02 pm
Vadymkyr
большое спасибо за подробную инструкцию. Все получилось кроме управления через элемент на сцене. Пробовал и turnOn и switch.

И еще вопрос, возможно ли разместить в меню на одной строке более одной кнопки?

Re: Настройки управления с использованием объектов и методов

Добавлено: Вт дек 17, 2013 6:00 am
nick7zmail
Разве свойство status должно быть у класса а не у объекта?

Re: Настройки управления с использованием объектов и методов

Добавлено: Вт дек 17, 2013 6:16 am
nick7zmail
А, не, все получилось)) только такой вопрос - как запустить какой то метод для объекта на элементе сцены?

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

Re: Настройки управления с использованием объектов и методов

Добавлено: Вт дек 17, 2013 11:04 am
sergejey
nick7zmail писал(а):А, не, все получилось)) только такой вопрос - как запустить какой то метод для объекта на элементе сцены?

Грубо говоря - я настроил элемент, но если пункт "Выполнять сценарий по клику" пустой, кликнуть на него не возможно. Можно либо в сценарии прописать чтобы он методы запускал (а не команду целиком), либо обойтись вообще бес сценариев, и по клику сразу запускать метод (так лучше бы было, не было бы лишних сценариев)?
В каком-то из обновлений это исправлялось -- была проблема с тем, что нельзя вызвать связанный метод. Сейчас вроде бы с этим проблем не должно быть -- если указан связанный метод, то кликнуть можно даже если сценарий не выбран. Может быть не установлены обновления?

Re: Настройки управления с использованием объектов и методов

Добавлено: Вт дек 17, 2013 1:01 pm
nick7zmail
Да...возможно...я устанавливал еще летом