Настройки управления с использованием объектов и методов
Модератор: immortal
-
- Сообщения: 125
- Зарегистрирован: Ср дек 26, 2012 8:33 pm
- Откуда: Севастополь
- Благодарил (а): 0
- Поблагодарили: 1 раз
Настройки управления с использованием объектов и методов
подскажите пожалуйста, как лучше всего сделать управление? Нужно чтобы можно было управлять через меню (триггер) и сцены и что бы и там и там можно было увидеть статус(включен/выключен), так же планирую еще управлять c помощью программы на андроиде. Управляется все командами вида "192.168.1.15\1r1"
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Настройки управления с использованием объектов и методов
Попробую вкратце рассказать как я обычно делаю.
1. Создаю класс объектов для управления (не каждый раз -- обычно использую один из созданных). Назовём его ControlClass
2. Добавляю в него свойство status
3. Добавляю в него методы: turnOn, turnOff, refresh, switch
4. код для turnOn и turnOff зависит от "железа", но к примеру вот код для управляемого по http реле:
метод turnOn (можно код вообще пустым оставить, но поставим программу-минимум):
метод turnOff (аналогично):
метод refresh (не зависит от железа):
метод switch (не зависит от железа):
$status=$this->getProperty("status");
if ($status) {
$this->callMethod('turnOff');
} else {
$this->callMethod('turnOn');
}
5. добавляю объект вышеуказанного класса (назовём его Outlet1 -- "Розетка 1" по-русски) и переопределяю методы turnOn и turnOff (они ведь зависят от конкретного железа):
метод turnOn:
метод turnOff:
6. дальше можно добавить переключатель на меню, указав мой объект:
http://clip2net.com/clip/m1/1365750347-clip-14kb.png
7. либо можно сделать кнопку:
8. на сцене можно сделать вывод какого-то значка, если объект включен (можно сделать другой значёк, если выключен, но тут я уже не стал добавлять):
9. в качестве бонуса можно сделать выключение turnOff (или включение turnOn или переключение switch) по нажатию на элемент сцены:
Вот так обычно делаю я
Работать с классами удобно, т.к. гораздо проще вводить новые объекты, меняя код только тех методов, которые завязаны на железе. При этом можно даже код методов делать более универсальным, перенеся меняющиеся параметры в свойства объектов и тогда методы будут одинаковыми и для добавления в систему очередного экземпляра однотипного железа, нужно будет только добавить объект и указать значения этих свойств (IP-адрес к примеру).
1. Создаю класс объектов для управления (не каждый раз -- обычно использую один из созданных). Назовём его ControlClass
2. Добавляю в него свойство status
3. Добавляю в него методы: turnOn, turnOff, refresh, switch
4. код для turnOn и turnOff зависит от "железа", но к примеру вот код для управляемого по http реле:
метод turnOn (можно код вообще пустым оставить, но поставим программу-минимум):
Код: Выделить всё
$this->setProperty("status",1);
Код: Выделить всё
$this->setProperty("status",0);
Код: Выделить всё
$status=$this->getProperty("status");
if ($status) {
$this->callMethod('turnOn');
} else {
$this->callMethod('turnOff');
}
$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);
Код: Выделить всё
$this->setProperty("status",0);
$url='http://192.168.0.82/?CLICK,1';
getURL($url,0);
http://clip2net.com/clip/m1/1365750347-clip-14kb.png
7. либо можно сделать кнопку:
8. на сцене можно сделать вывод какого-то значка, если объект включен (можно сделать другой значёк, если выключен, но тут я уже не стал добавлять):
9. в качестве бонуса можно сделать выключение turnOff (или включение turnOn или переключение switch) по нажатию на элемент сцены:
Вот так обычно делаю я
Работать с классами удобно, т.к. гораздо проще вводить новые объекты, меняя код только тех методов, которые завязаны на железе. При этом можно даже код методов делать более универсальным, перенеся меняющиеся параметры в свойства объектов и тогда методы будут одинаковыми и для добавления в систему очередного экземпляра однотипного железа, нужно будет только добавить объект и указать значения этих свойств (IP-адрес к примеру).
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 125
- Зарегистрирован: Ср дек 26, 2012 8:33 pm
- Откуда: Севастополь
- Благодарил (а): 0
- Поблагодарили: 1 раз
Re: Настройки управления с использованием объектов и методов
большое спасибо за подробную инструкцию. Все получилось кроме управления через элемент на сцене. Пробовал и turnOn и switch.
И еще вопрос, возможно ли разместить в меню на одной строке более одной кнопки?
И еще вопрос, возможно ли разместить в меню на одной строке более одной кнопки?
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Настройки управления с использованием объектов и методов
Разве свойство status должно быть у класса а не у объекта?
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Настройки управления с использованием объектов и методов
А, не, все получилось)) только такой вопрос - как запустить какой то метод для объекта на элементе сцены?
Грубо говоря - я настроил элемент, но если пункт "Выполнять сценарий по клику" пустой, кликнуть на него не возможно. Можно либо в сценарии прописать чтобы он методы запускал (а не команду целиком), либо обойтись вообще бес сценариев, и по клику сразу запускать метод (так лучше бы было, не было бы лишних сценариев)?
Грубо говоря - я настроил элемент, но если пункт "Выполнять сценарий по клику" пустой, кликнуть на него не возможно. Можно либо в сценарии прописать чтобы он методы запускал (а не команду целиком), либо обойтись вообще бес сценариев, и по клику сразу запускать метод (так лучше бы было, не было бы лишних сценариев)?
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Настройки управления с использованием объектов и методов
В каком-то из обновлений это исправлялось -- была проблема с тем, что нельзя вызвать связанный метод. Сейчас вроде бы с этим проблем не должно быть -- если указан связанный метод, то кликнуть можно даже если сценарий не выбран. Может быть не установлены обновления?nick7zmail писал(а):А, не, все получилось)) только такой вопрос - как запустить какой то метод для объекта на элементе сцены?
Грубо говоря - я настроил элемент, но если пункт "Выполнять сценарий по клику" пустой, кликнуть на него не возможно. Можно либо в сценарии прописать чтобы он методы запускал (а не команду целиком), либо обойтись вообще бес сценариев, и по клику сразу запускать метод (так лучше бы было, не было бы лишних сценариев)?
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Настройки управления с использованием объектов и методов
Да...возможно...я устанавливал еще летом
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<