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

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
Vadymkyr
Сообщения: 125
Зарегистрирован: Ср дек 26, 2012 8:33 pm
Откуда: Севастополь
Благодарил (а): 0
Поблагодарили: 1 раз

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

Сообщение Vadymkyr » Чт апр 11, 2013 10:53 pm

подскажите пожалуйста, как лучше всего сделать управление? Нужно чтобы можно было управлять через меню (триггер) и сцены и что бы и там и там можно было увидеть статус(включен/выключен), так же планирую еще управлять c помощью программы на андроиде. Управляется все командами вида "192.168.1.15\1r1"
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Пт апр 12, 2013 10:16 am

Попробую вкратце рассказать как я обычно делаю.

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-адрес к примеру).

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Vadymkyr
Сообщения: 125
Зарегистрирован: Ср дек 26, 2012 8:33 pm
Откуда: Севастополь
Благодарил (а): 0
Поблагодарили: 1 раз

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

Сообщение Vadymkyr » Пн апр 15, 2013 12:02 pm

большое спасибо за подробную инструкцию. Все получилось кроме управления через элемент на сцене. Пробовал и turnOn и switch.

И еще вопрос, возможно ли разместить в меню на одной строке более одной кнопки?
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

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

Сообщение nick7zmail » Вт дек 17, 2013 6:00 am

Разве свойство status должно быть у класса а не у объекта?
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

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

Сообщение nick7zmail » Вт дек 17, 2013 6:16 am

А, не, все получилось)) только такой вопрос - как запустить какой то метод для объекта на элементе сцены?

Грубо говоря - я настроил элемент, но если пункт "Выполнять сценарий по клику" пустой, кликнуть на него не возможно. Можно либо в сценарии прописать чтобы он методы запускал (а не команду целиком), либо обойтись вообще бес сценариев, и по клику сразу запускать метод (так лучше бы было, не было бы лишних сценариев)?
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Вт дек 17, 2013 11:04 am

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

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

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

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

Сообщение nick7zmail » Вт дек 17, 2013 1:01 pm

Да...возможно...я устанавливал еще летом
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Ответить