как сбросить таймер

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

Модератор: immortal

Ответить
Аватара пользователя
vitosmaxim80sad145
Сообщения: 148
Зарегистрирован: Сб июл 07, 2018 12:48 am
Откуда: Днепр
Благодарил (а): 100 раз
Поблагодарили: 1 раз

как сбросить таймер

Сообщение vitosmaxim80sad145 » Сб окт 03, 2020 10:53 am

есть у меня такой код ,гдето взял на форуме

//напомним вынести мусор
$h=gg('ThisComputer.timeNow');
$tasc=gg('Musor.late');

if (($h>=7) && $tasc="1") {
ClearTimeOut("HomeTasks"); // очищаем таймер (чтобы случайно две копии не запустить)
say(getRandomLine('Musor'),2);
setTimeOut("HomeTasks","say(getRandomLine('Musor'),2);",30*60);// ставим таймер на запуск самого себя через 45 минут
} elseif(($h>=16) || $tasc="0") {
ClearTimeOut("HomeTasks");
}

но при изминении свойстиа Musor.late с1 на 0 таймер всеравно продолжает работать до заданого времени ,проговаривает текст и лиш затм сбрасуется , как поправить чтобы он сбрасывался сразу по изминению свойства и как вставит say на сброс таймера , если вставить после
elseif(($h>=16) || $tasc="0") {
ClearTimeOut("HomeTasks"); то он будет говорить каждый день в 16 00 как ето избежать
JackOfShadows
Сообщения: 104
Зарегистрирован: Ср янв 09, 2019 8:37 pm
Благодарил (а): 23 раза
Поблагодарили: 26 раз

Re: как сбросить таймер

Сообщение JackOfShadows » Вт окт 06, 2020 11:09 am

459 просмотров, прикольно.

Почему бы не проверять значение Musor.late перед say внутри setTimeOut?

Проговаривание на сброс - проверяйте, через timeOutExists, есть ли таймер. Если есть - проговариваете и сбрасываете.
За это сообщение автора JackOfShadows поблагодарил:
vitosmaxim80sad145 (Чт окт 08, 2020 11:07 am)
Рейтинг: 1.16%
Аватара пользователя
vitosmaxim80sad145
Сообщения: 148
Зарегистрирован: Сб июл 07, 2018 12:48 am
Откуда: Днепр
Благодарил (а): 100 раз
Поблагодарили: 1 раз

Re: как сбросить таймер

Сообщение vitosmaxim80sad145 » Чт окт 08, 2020 11:15 am

JackOfShadows писал(а):
Вт окт 06, 2020 11:09 am
459 просмотров, прикольно.

Почему бы не проверять значение Musor.late перед say внутри setTimeOut?

Проговаривание на сброс - проверяйте, через timeOutExists , есть ли таймер. Если есть - проговариваете и сбрасываете.
Спасибо что отозвались ,но я немного непонял
Почему бы не проверять значение Musor.late перед say внутри setTimeOut? Я ведь вначале проверяю если время и статус 1 то запустить таймер ,вроде все правельно-как вы советуете проверить ещё ? А timeOutExists вставить вместо клин таймер и добавить сей ? Но снова же непойму почему у меня таймер не сбрасует по изменению статуса ?За ранее спасибо
JackOfShadows
Сообщения: 104
Зарегистрирован: Ср янв 09, 2019 8:37 pm
Благодарил (а): 23 раза
Поблагодарили: 26 раз

Re: как сбросить таймер

Сообщение JackOfShadows » Пт окт 09, 2020 4:57 pm

vitosmaxim80sad145 писал(а):
Чт окт 08, 2020 11:15 am
Спасибо что отозвались ,но я немного непонял
Почему бы не проверять значение Musor.late перед say внутри setTimeOut? Я ведь вначале проверяю если время и статус 1 то запустить таймер ,вроде все правельно-как вы советуете проверить ещё ?
Вы проверяете, что время позже 7 утра и задача есть, говорите "выбросить" и заводите таймаут на час. Если мусор в течение этого часа выбросится - таймер всё равно сработает, его же никто не сбрасывает. Я добавляю проверку перед say в таймере. Ну или можно ловить изменение Musor.late и сбрасывать таймер там - но тогда обработка будеи в двух местах, смотрите сами.
А timeOutExists вставить вместо клин таймер и добавить сей ? Но снова же непойму почему у меня таймер не сбрасует по изменению статуса
Потому что Вы не обрабатываете изменение статуса.



Вот как-то так - смотрите мои комментарии (я не проверял).

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

$h=gg('ThisComputer.timeNow');
$tasc=gg('Musor.late');

if (($h>=7) && $tasc="1") {
  ClearTimeOut("HomeTasks");
  say(getRandomLine('Musor'),2);
  setTimeOut("HomeTasks","if(gg('Musor.late')='1') {say(getRandomLine('Musor'),2);}",30*60); // повторно проверяем gg('Musor.late')
} elseif(($h>=16) || $tasc="0") {
  if(timeOutExists("HomeTasks")!=0) {  // проверяем наличие таймера
    say('Очищаем таймер');
    ClearTimeOut("HomeTasks");
  }
}
JackOfShadows
Сообщения: 104
Зарегистрирован: Ср янв 09, 2019 8:37 pm
Благодарил (а): 23 раза
Поблагодарили: 26 раз

Re: как сбросить таймер

Сообщение JackOfShadows » Пт окт 09, 2020 11:08 pm

Этот код у Вас на чём висит? OnNewHour?
JackOfShadows
Сообщения: 104
Зарегистрирован: Ср янв 09, 2019 8:37 pm
Благодарил (а): 23 раза
Поблагодарили: 26 раз

Re: как сбросить таймер

Сообщение JackOfShadows » Вт окт 27, 2020 7:59 am

Как Ваши успехи?
Аватара пользователя
vitosmaxim80sad145
Сообщения: 148
Зарегистрирован: Сб июл 07, 2018 12:48 am
Откуда: Днепр
Благодарил (а): 100 раз
Поблагодарили: 1 раз

Re: как сбросить таймер

Сообщение vitosmaxim80sad145 » Чт ноя 19, 2020 12:35 pm

JackOfShadows писал(а):
Пт окт 09, 2020 11:08 pm
Этот код у Вас на чём висит? OnNewHour?
спасибо за помощь долго не отвечал не было времени , я все делал как здесь https://www.youtube.com/watch?v=BTjXItZpkgo только лобавил метод say_tasks но если ставлю запуск метода при изменении свойства late то метод срабатывает и при 1 и при 0 то есть если сбрасываешь вручную то метод тоже отрабатывает и говорит что нужно вынести
и второе если код setTimeOut("HomeTasks","say(getRandomLine('Musor'),2);",30*60); то по окончанию таймера говорит а с вашим кодом setTimeOut("HomeTasks","if(gg('Musor.late')='1') {say(getRandomLine('Musor'),2);}",30*60); нет хотя и свойство равно 1 в итоге я сделала все через cron
timurufa86
Сообщения: 65
Зарегистрирован: Вт фев 17, 2015 8:40 pm
Благодарил (а): 19 раз
Поблагодарили: 2 раза

Re: как сбросить таймер

Сообщение timurufa86 » Пт дек 25, 2020 9:15 am

vitosmaxim80sad145 писал(а):
Чт ноя 19, 2020 12:35 pm
JackOfShadows писал(а):
Пт окт 09, 2020 11:08 pm
Этот код у Вас на чём висит? OnNewHour?
спасибо за помощь долго не отвечал не было времени , я все делал как здесь https://www.youtube.com/watch?v=BTjXItZpkgo только лобавил метод say_tasks но если ставлю запуск метода при изменении свойства late то метод срабатывает и при 1 и при 0 то есть если сбрасываешь вручную то метод тоже отрабатывает и говорит что нужно вынести
и второе если код setTimeOut("HomeTasks","say(getRandomLine('Musor'),2);",30*60); то по окончанию таймера говорит а с вашим кодом setTimeOut("HomeTasks","if(gg('Musor.late')='1') {say(getRandomLine('Musor'),2);}",30*60); нет хотя и свойство равно 1 в итоге я сделала все через cron
должно быть "if(gg('Musor.late')=='1') (два знака равенства) вы же сравниваете а не присваиваете
За это сообщение автора timurufa86 поблагодарили (всего 2):
JackOfShadows (Сб дек 26, 2020 9:20 pm) • vitosmaxim80sad145 (Ср дек 30, 2020 12:09 am)
Рейтинг: 2.33%
JackOfShadows
Сообщения: 104
Зарегистрирован: Ср янв 09, 2019 8:37 pm
Благодарил (а): 23 раза
Поблагодарили: 26 раз

Re: как сбросить таймер

Сообщение JackOfShadows » Сб дек 26, 2020 9:20 pm

timurufa86 писал(а):
Пт дек 25, 2020 9:15 am
должно быть "if(gg('Musor.late')=='1') (два знака равенства) вы же сравниваете а не присваиваете
Точно, спасибо.
Ответить