Всю нашу магию (т.е. то что мы должны сделать) заносим в метод refresh.
Привязываем чтобы при изменении статуса вызывался метод refresh.
После этого, все управление объектом и в скриптах и в меню, сводится к изменению свойства статус.
В скриптах соответственно использование
Код: Выделить всё
getGlobal('Svet_3_spaln.status',1);
Код: Выделить всё
getGlobal('Svet_3_spaln.status',0);
Код: Выделить всё
callMethod("Svet_3_spaln.turnOn");
Соответственно, если вы прикрутили статус в переменную с названием "sostojanie", то через нее.
getGlobal('Svet_3_spaln.sostojanie');
Метод switch, служит только для переключение через методы turnOn и turnOff.
А иначе, действительно. При изменении статуса, запускаем метод и изменяем статус. Соответственно, кони бегают по кругу.
4 метода:
refresh - Получаем статус и вызываем магию. Получается, что у наследников нужно делать свою обработку этого блока
Код: Выделить всё
$status=$this->getProperty("status");
if ($status) {
getURL('http://192.168.2.10/gpio?st=1&pin=12', 0);
} else {
getURL('http://192.168.2.10/gpio?st=1&pin=12', 1);
}
switch - В зависимости от статуса вызываем противоположный метод turnOff/turnOn
Код: Выделить всё
$status=$this->getProperty("status");
if ($status) {
$this->callMethod('turnOff');
} else {
$this->callMethod('turnOn');
}
turnOff - Устанавливаем статус и вызываем метод refresh
Код: Выделить всё
$this->setProperty("status",0);
$this->callMethod("refresh");
turnOn - Устанавливаем статус и вызываем метод refresh
Код: Выделить всё
$this->setProperty("status",1);
$this->callMethod("refresh");
