Длительность события, в минутах

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Stryzhak
Сообщения: 35
Зарегистрирован: Пт сен 27, 2019 3:37 pm
Благодарил (а): 21 раз
Поблагодарили: 2 раза

Re: Длительность события, в минутах

Сообщение Stryzhak » Пт апр 02, 2021 2:29 pm

Посмотрите, пожалуйста, на код:

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

if (gg('Pump3.status')==1){
setGlobal('Pump3.startTime',time());
return;
ClearTimeOut("Timer02");
SetTimeOut("Timer02","rs('WaterPumpAlarm');",$timeout=60);
}
if (gg('Pump3.status')==0){
$finish=time();
$start=gg('Pump3.startTime');
$duration=$finish-$start;
setGlobal('Pump3.durationLast',$duration);
$min=intval($duration/60);
$sec=$duration - ($min*60);
if ($min<=0) {
say('длительность работы насоса '.$sec.' секунд',1);
}
else if ($min==1){
say('длительность работы насоса '.$min.' минута '.$sec.' секунд',1);
}
else if ($min==2 || $min==3 || $min==4){
say('длительность работы насоса '.$min.' минуты '.$sec.' секунд',1);
}
else if ($min>=5){
say('длительность работы насоса '.$min.' минут '.$sec.' секунд',1);
}
}
В этом контексте таймер не срабатывает на 60 секунд, как предполагалось. Подскажите, пожалуйста: почему?
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Длительность события, в минутах

Сообщение Chainik » Пт апр 02, 2021 2:38 pm

Наверное, проблема с синтаксисом. Поменяйте строчку с таймером на:

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

SetTimeOut("Timer02","rs('WaterPumpAlarm');",60);
Stryzhak
Сообщения: 35
Зарегистрирован: Пт сен 27, 2019 3:37 pm
Благодарил (а): 21 раз
Поблагодарили: 2 раза

Re: Длительность события, в минутах

Сообщение Stryzhak » Пт апр 02, 2021 3:42 pm

Chainik писал(а):
Пт апр 02, 2021 2:38 pm
Наверное, проблема с синтаксисом. Поменяйте строчку с таймером на:

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

SetTimeOut("Timer02","rs('WaterPumpAlarm');",60);
Поменял, не сработало также. Может проблема в другом?
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Длительность события, в минутах

Сообщение Chainik » Пт апр 02, 2021 4:29 pm

А... Еще в этом блоке return надо в конец перенести:

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

if (gg('Pump3.status')==1){
setGlobal('Pump3.startTime',time());
ClearTimeOut("Timer02");
SetTimeOut("Timer02","rs('WaterPumpAlarm');",60);
return;}
За это сообщение автора Chainik поблагодарил:
Stryzhak (Пн апр 05, 2021 10:41 am)
Рейтинг: 1.16%
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Длительность события, в минутах

Сообщение fandaymon » Пт апр 02, 2021 4:55 pm

И ClearTimeOut не нужен, так как первое что делает функция SetTimeOut, это вызывает ClearTimeOut
За это сообщение автора fandaymon поблагодарил:
Stryzhak (Пн апр 05, 2021 10:41 am)
Рейтинг: 1.16%
Stryzhak
Сообщения: 35
Зарегистрирован: Пт сен 27, 2019 3:37 pm
Благодарил (а): 21 раз
Поблагодарили: 2 раза

Re: Длительность события, в минутах

Сообщение Stryzhak » Пн апр 05, 2021 10:51 am

Спасибо вам дорогие, после исправлений - все заработало!
Stryzhak
Сообщения: 35
Зарегистрирован: Пт сен 27, 2019 3:37 pm
Благодарил (а): 21 раз
Поблагодарили: 2 раза

Re: Длительность события, в минутах

Сообщение Stryzhak » Пн апр 05, 2021 1:20 pm

Еще один вопрос, товарищи: при такой реализации

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

if (gg('Pump3.status')==1){
setGlobal('Pump3.startTime',time());
SetTimeOut("Timer02","rs('WaterPumpAlarm');",300);
return;
}
скрипт срабатывает по истечении таймера, а как сделать так чтобы таймер остановился при Pump3.status==0?
Спасибо вам.
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Длительность события, в минутах

Сообщение Chainik » Пн апр 05, 2021 3:46 pm

Видимо, так:

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

if (gg('Pump3.status')==0){
ClearTimeOut("Timer02");
//return;
}
Если дальнейшее выполнение кода при этом должно остановиться, добавьте "return;"
Stryzhak
Сообщения: 35
Зарегистрирован: Пт сен 27, 2019 3:37 pm
Благодарил (а): 21 раз
Поблагодарили: 2 раза

Re: Длительность события, в минутах

Сообщение Stryzhak » Вт апр 20, 2021 1:32 pm

xor писал(а):
Чт апр 01, 2021 2:47 am
Stryzhak писал(а):
Ср мар 31, 2021 4:16 pm
Здравствуйте дорогие друзья!
У меня схожая задача: надо посчитать время от изменения статуса обьекта с 1 на 0. Я написал такой сценарий:
если есть история свойства статуса насоса -
посмотрите https://connect.smartliving.ru/profile/ ... omili.html
Подскажите, пожалуйста, как в добавленом мною свойстве объекта включить историю?
Спасибо вам
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Длительность события, в минутах

Сообщение fandaymon » Вт апр 20, 2021 1:52 pm

Stryzhak писал(а):
Вт апр 20, 2021 1:32 pm
xor писал(а):
Чт апр 01, 2021 2:47 am
Stryzhak писал(а):
Ср мар 31, 2021 4:16 pm
Здравствуйте дорогие друзья!
У меня схожая задача: надо посчитать время от изменения статуса обьекта с 1 на 0. Я написал такой сценарий:
если есть история свойства статуса насоса -
посмотрите https://connect.smartliving.ru/profile/ ... omili.html
Подскажите, пожалуйста, как в добавленом мною свойстве объекта включить историю?
Спасибо вам
Надо добавить свойство в классе и там же включить историю
За это сообщение автора fandaymon поблагодарил:
Stryzhak (Сб апр 24, 2021 12:33 pm)
Рейтинг: 1.16%
Ответить