if (getGlobal('DarknessMode'.'.'.'active') == '1' && getGlobal('Lamp_Kitchen'.'.'.'status') == '2') {
callMethod('Lamp_Kitchen'.'.'.'turnOn');
$timerCode=<<<EOT
callMethod('Lamp_Kitchen'.'.'.'turnOff');
EOT;
setTimeOut('KitchenLightOffTimer', $timerCode, (int)('60'));
} else if (getGlobal('Lamp_Kitchen'.'.'.'status') == '0') {
setGlobal('Lamp_Kitchen'.'.'.'status', '2');
}
Настройка элемента Radiobox
Модератор: immortal
- Divan
- Сообщения: 859
- Зарегистрирован: Пн июл 08, 2019 5:04 pm
- Благодарил (а): 117 раз
- Поблагодарили: 280 раз
Re: Настройка элемента Radiobox
Набросал код, попробуйте этот вариант
- Вложения
-
- 20190907_195347.jpg (255.14 КБ) 2768 просмотров
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
-
- Сообщения: 686
- Зарегистрирован: Ср май 03, 2017 7:41 pm
- Благодарил (а): 113 раз
- Поблагодарили: 107 раз
Re: Настройка элемента Radiobox
Код: Выделить всё
else if (getGlobal('Lamp_Kitchen'.'.'.'status') == '0') {
setGlobal('Lamp_Kitchen'.'.'.'status', '2');
}
- Divan
- Сообщения: 859
- Зарегистрирован: Пн июл 08, 2019 5:04 pm
- Благодарил (а): 117 раз
- Поблагодарили: 280 раз
Re: Настройка элемента Radiobox
Если это лишнее, то делаем так, в таймер вставляем код, который поменяет статус авто на 2
Код: Выделить всё
if (getGlobal('DarknessMode'.'.'.'active') == '1' && getGlobal('Lamp_Kitchen'.'.'.'status') == '2') {
callMethod('Lamp_Kitchen'.'.'.'turnOn');
$timerCode=<<<EOT
callMethod('Lamp_Kitchen'.'.'.'turnOff');
setGlobal('Lamp_Kitchen'.'.'.'status', '2');
EOT;
setTimeOut('KitchenLightOffTimer', $timerCode, (int)('60'));
}
- За это сообщение автора Divan поблагодарили (всего 2):
- SmoKE_xDDD (Сб сен 07, 2019 8:37 pm) • Jilber (Сб сен 07, 2019 9:54 pm)
- Рейтинг: 2.33%
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
- SmoKE_xDDD
- Сообщения: 816
- Зарегистрирован: Ср апр 17, 2019 5:00 pm
- Откуда: Нижний Новгород
- Благодарил (а): 110 раз
- Поблагодарили: 899 раз
Re: Настройка элемента Radiobox
Круто, что помогаешь, но лучше не учить других плохому коду =)Divan писал(а): ↑Сб сен 07, 2019 8:24 pmЕсли это лишнее, то делаем так, в таймер вставляем код, который поменяет статус авто на 2
Код: Выделить всё
if (getGlobal('DarknessMode'.'.'.'active') == '1' && getGlobal('Lamp_Kitchen'.'.'.'status') == '2') { callMethod('Lamp_Kitchen'.'.'.'turnOn'); $timerCode=<<<EOT callMethod('Lamp_Kitchen'.'.'.'turnOff'); setGlobal('Lamp_Kitchen'.'.'.'status', '2'); EOT; setTimeOut('KitchenLightOffTimer', $timerCode, (int)('60')); }
Таймеры лучше чистить, а бы что.
(int) совсем не обязателен, функция все равно проверит, что там.
Код: Выделить всё
if(gg('DarknessMode.active') == '1' && gg('Lamp_Kitchen.status') == '2') {
callMethod('Lamp_Kitchen.turnOn');
ClearTimeOut("KitchenLightOffTimer");
setTimeOut('KitchenLightOffTimer', "callMethod('Lamp_Kitchen.turnOff');", '60');
ClearTimeOut("KitchenLightOffTimer_status");
setTimeOut('KitchenLightOffTimer_status', "sg('Lamp_Kitchen.status', '2');", '60');
}
- За это сообщение автора SmoKE_xDDD поблагодарил:
- Jilber (Сб сен 07, 2019 9:54 pm)
- Рейтинг: 1.16%
- Divan
- Сообщения: 859
- Зарегистрирован: Пн июл 08, 2019 5:04 pm
- Благодарил (а): 117 раз
- Поблагодарили: 280 раз
Re: Настройка элемента Radiobox
Я все в blockly собираю , вот он такой код и предоставляет. По поводу очистки таймера я учту .
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
-
- Сообщения: 686
- Зарегистрирован: Ср май 03, 2017 7:41 pm
- Благодарил (а): 113 раз
- Поблагодарили: 107 раз
Re: Настройка элемента Radiobox
Второй таймер ('KitchenLightOffTimer_status') мне не нужен, нужно просто выставить 'Lamp_Kitchen.status' в 2.SmoKE_xDDD писал(а): ↑Сб сен 07, 2019 8:36 pmКод: Выделить всё
if(gg('DarknessMode.active') == '1' && gg('Lamp_Kitchen.status') == '2') { callMethod('Lamp_Kitchen.turnOn'); ClearTimeOut("KitchenLightOffTimer"); setTimeOut('KitchenLightOffTimer', "callMethod('Lamp_Kitchen.turnOff');", '60'); ClearTimeOut("KitchenLightOffTimer_status"); setTimeOut('KitchenLightOffTimer_status', "sg('Lamp_Kitchen.status', '2');", '60'); }
Вот что у меня сейчас:
Код: Выделить всё
if(gg('DarknessMode.active') == '1' && gg('Lamp_Kitchen.status') == '2') {
callMethod('Lamp_Kitchen.turnOn');
clearTimeOut("KitchenLightOffTimer");
SetTimeOut("KitchenLightOffTimer","callMethod('Lamp_Kitchen.turnOff');",60);
sg('Lamp_Kitchen.status', '2'); //эта строка не срабатывает
}
СпойлерПоказать
Код: Выделить всё
if(gg('DarknessMode.active') == '1' && gg('Lamp_Kitchen.status') == '2') {
callMethod('Lamp_Kitchen.turnOn');
clearTimeOut("KitchenLightOffTimer");
SetTimeOut("KitchenLightOffTimer","callMethod('Lamp_Kitchen.turnOff');sg('Lamp_Kitchen.status', '2');",60);
}
- Рейтинг: 1.16%
-
- Сообщения: 1554
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: Настройка элемента Radiobox
Не надо их чистить, так как в методе установки таймера и так стоит очистить таймер. Делать 2 раза одно и тоже действие это как раз и есть плохой код...SmoKE_xDDD писал(а): ↑Сб сен 07, 2019 8:36 pmКруто, что помогаешь, но лучше не учить других плохому коду =)
Таймеры лучше чистить, а бы что.
Код: Выделить всё
function setTimeOut($title, $commands, $timeout)
{
startMeasure('setTimeout');
clearTimeOut($title);
$res = addScheduledJob($title, $commands, time() + $timeout);
endMeasure('setTimeout');
return $res;
}
- Рейтинг: 1.16%
- SmoKE_xDDD
- Сообщения: 816
- Зарегистрирован: Ср апр 17, 2019 5:00 pm
- Откуда: Нижний Новгород
- Благодарил (а): 110 раз
- Поблагодарили: 899 раз