Настройка элемента Radiobox

Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.

Модератор: immortal

Jilber
Сообщения: 719
Зарегистрирован: Ср май 03, 2017 7:41 pm

Настройка элемента Radiobox

Сообщение Jilber »

Подскажите с настройкой элемента Radiobox.
Сейчас в меню есть обычный выключатель освещения, всё работает. Хочу переделать его на 3 положения: выкл|вкл|авто для совместной работы датчиком движения. Выключатель привязан к свойству"status". Не могу понять, какой код нужен в связанном методе. Пробовал что-то вроде этого, но не работает:
switch(gg("Lamp_Kitchen.status")) {
case 0:
callMethod("turnOff");
break;
case 1:
callMethod("turnOn");
break;
case 2:

}
Спасибо.
Аватара пользователя
xor
Сообщения: 2044
Зарегистрирован: Сб ноя 22, 2014 8:45 pm

Re: Настройка элемента Radiobox

Сообщение xor »

Jilber писал(а): Пн сен 02, 2019 5:49 pm Подскажите с настройкой элемента Radiobox.
Сейчас в меню есть обычный выключатель освещения, всё работает...
Читали viewtopic.php?t=4339?
Там два способа описаны - с кодом и без
Jilber
Сообщения: 719
Зарегистрирован: Ср май 03, 2017 7:41 pm

Re: Настройка элемента Radiobox

Сообщение Jilber »

Читал.
SPOILERSPOILER_SHOW
switch($params["VALUE"]) {
case 1:
cm("LivingroomAC.heatOn", array("ccontrol"=>1));
break;
case 2:
cm("LivingroomAC.coolOn", array("ccontrol"=>1));
break;
default:
cm("LivingroomAC.off", array("ccontrol"=>1));
}
Это у меня не заработало. Может конечно я что-то с синтаксисом напутал.
В итоге решил сделать проще:

Код: Выделить всё

$status=$this->getProperty("status");
if ($status ==0) {
 $this->callMethod("turnOff");
 } else if ($status ==1) {
 $this->callMethod("turnOn");
 }
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm

Re: Настройка элемента Radiobox

Сообщение Divan »

Если проблема актуальная, то покажите Ваши настройки в виде скриншотов. Вы типа этого хотите сделать?
Вложения
Screenshot_20190902-232414_Samsung Internet.jpg
Screenshot_20190902-232414_Samsung Internet.jpg (330.75 КБ) 3502 просмотра
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Jilber
Сообщения: 719
Зарегистрирован: Ср май 03, 2017 7:41 pm

Re: Настройка элемента Radiobox

Сообщение Jilber »

Хочу обычный выключатель переделать на 3 положения:
SPOILERSPOILER_SHOW
Выключатель.jpg
Выключатель.jpg (10.53 КБ) 3445 просмотров
Настройки.jpg
Настройки.jpg (42.72 КБ) 3445 просмотров
Нужно, чтобы при срабатывании датчика движения в тёмное время суток и при включенном в положение "Авто" выключателе свет включался на определенное время.
Вот что в методе "motionDetected":

Код: Выделить всё

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);
 }
Вроде работает, но после отключения освещения через 60 секунд почему-то не срабатывает строка "sg('Lamp_Kitchen.status', 2);". Может что-то не так с синтаксисом ? И вообще было бы интересно узнать у кого как сделана работа освещения от датчика движения.
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm

Re: Настройка элемента Radiobox

Сообщение Divan »

Нужно чтобы статус имел 1 или 0, в вашем случае статус 2, это не верно. В свойствах исправьте статус с 2 на 0, а тут укажите Lamp_Kitchen.status', 0

Статус 0, это выключено
Статус 1, это включено
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Jilber
Сообщения: 719
Зарегистрирован: Ср май 03, 2017 7:41 pm

Re: Настройка элемента Radiobox

Сообщение Jilber »

'Lamp_Kitchen.status', 2 - это как раз положение выключателя "Авто". Просто при выполнении через 60 сек метода 'Lamp_Kitchen.turnOff' свет отключается, а свойство "Status" выставляется в "0" и нужно вернуть его снова в "Авто", т.е. в "2".
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm

Re: Настройка элемента Radiobox

Сообщение Divan »

Тогда вам нужно создать логику, примерно так, если свойство статуса стало 0, то вернуть статус 2.

Код: Выделить всё

if (getGlobal('Lamp_Kitchen'.'.'.'status') == '0') {
  setGlobal('Lamp_Kitchen'.'.'.'status', '2');
}
Вложения
20190907_190355.jpg
20190907_190355.jpg (247.09 КБ) 3432 просмотра
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Jilber
Сообщения: 719
Зарегистрирован: Ср май 03, 2017 7:41 pm

Re: Настройка элемента Radiobox

Сообщение Jilber »

Так в методе "motionDetected" есть строчка 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');",60); sg('Lamp_Kitchen.status', 2);
 }
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm

Re: Настройка элемента Radiobox

Сообщение Divan »

Я заметил, что у вас в коде отсутствует пробел и кавычки.
gg('DarknessMode.active') ==1, gg('DarknessMode.active') == '1'
и
Lamp_Kitchen.status') ==2,
Lamp_Kitchen.status') == '2'

И потом в коде я не вижу логику, что если статус сменился с 2 на 0, то его нужно вернуть на 2
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Ответить