Одновременная работа сценариев

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

Модератор: immortal

Ответить
Forth
Сообщения: 48
Зарегистрирован: Вс янв 13, 2019 4:37 pm
Благодарил (а): 39 раз
Поблагодарили: 0

Одновременная работа сценариев

Сообщение Forth » Вс мар 29, 2020 12:58 pm

Добрый день!
Столкнулся с такой проблемой, есть 2 кнопки (реле) включаются по времени или нажатием на кнопку одновременно, то сценарий и метод на отключения не срабатывает, отключается только реле которое включилось последнее, а реле включенное первым не отключается :(
Если включать по очереди все работает.
Отключение прикрутил к методу logicAction *
Подскажите пожалуйста решение проблемы? Нужно, чтоб одновременно срабатывали все методу, сценарии, а не по очереди.
if (getGlobal('Kr_1_2min'.'.'.'status') == 1)
{
setTimeOut('Выключить через', "setGlobal('Rele_1_K.status', 0);", 120);
}

у другой кнопки

if (getGlobal('Kr_2_2min'.'.'.'status') == 1)
{
setTimeOut('Выключить через', "setGlobal('Rele_2_K.status', 0);", 120);
}
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 262 раза
Поблагодарили: 455 раз

Re: Одновременная работа сценариев

Сообщение Chainik » Вс мар 29, 2020 1:10 pm

Forth писал(а):
Вс мар 29, 2020 12:58 pm
...
Подскажите пожалуйста решение проблемы? Нужно, чтоб одновременно срабатывали все методу, сценарии, а не по очереди.
...
Судя по коду, все правильно, так и должно работать. Дело в том, что имена таймеров у вас совпадают. И при запуске второго таймера первый ликвидируется (и действие на него завязанное -- не выполняется).
Чтобы избежать этого, надо, чтобы имена таймеров различались. Например

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

setTimeOut('Выключить Rele_1_K через', "setGlobal('Rele_1_K.status', 0);", 120);
//...
setTimeOut('Выключить Rele_2_K через', "setGlobal('Rele_2_K.status', 0);", 120);
За это сообщение автора Chainik поблагодарил:
Forth (Вс мар 29, 2020 1:58 pm)
Рейтинг: 1.16%
Forth
Сообщения: 48
Зарегистрирован: Вс янв 13, 2019 4:37 pm
Благодарил (а): 39 раз
Поблагодарили: 0

Re: Одновременная работа сценариев

Сообщение Forth » Вс мар 29, 2020 1:58 pm

Chainik писал(а):
Вс мар 29, 2020 1:10 pm
Forth писал(а):
Вс мар 29, 2020 12:58 pm
...
Подскажите пожалуйста решение проблемы? Нужно, чтоб одновременно срабатывали все методу, сценарии, а не по очереди.
...
Судя по коду, все правильно, так и должно работать. Дело в том, что имена таймеров у вас совпадают. И при запуске второго таймера первый ликвидируется (и действие на него завязанное -- не выполняется).
Чтобы избежать этого, надо, чтобы имена таймеров различались. Например

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

setTimeOut('Выключить Rele_1_K через', "setGlobal('Rele_1_K.status', 0);", 120);
//...
setTimeOut('Выключить Rele_2_K через', "setGlobal('Rele_2_K.status', 0);", 120);
Помогло!!!
Спасибо большое, добрый и умный человек!
Ответить