Попробую вкратце рассказать как я обычно делаю.
1. Создаю класс объектов для управления (не каждый раз -- обычно использую один из созданных). Назовём его ControlClass
2. Добавляю в него свойство status
3. Добавляю в него методы: turnOn, turnOff, refresh, switch
4. код для turnOn и turnOff зависит от "железа", но к примеру вот код для управляемого по http реле:
метод turnOn (можно код вообще пустым оставить, но поставим программу-минимум):
метод turnOff (аналогично):
метод 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-адрес к примеру).