Подскажите как правильно создать таймер!

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

Модератор: immortal

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

Re: Подскажите как правильно создать таймер!

Сообщение xor »

Yashalta писал(а):так работает!

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

addScheduledJob("lightOnTimer50","fopen('http://192.168.18.110/state?c=set&n=60&o=1', 'r');say('Свет включен!',2);",time()+5);
Имейте ввиду, что использование аддшедуледджоб отличается от таймера не только заданием абсолютного времени вместо смещения, но и реализацией. Новое задание джоба с существующим именем создаст новый джоб с тем же именем (без очистки старого)

Отправлено с моего Redmi 4X через Tapatalk

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

Re: Подскажите как правильно создать таймер!

Сообщение xor »

Yashalta писал(а):так работает!

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

addScheduledJob("lightOnTimer50","fopen('http://192.168.18.110/state?c=set&n=60&o=1', 'r');say('Свет включен!',2);",time()+5);
Ха, если в коде заменить аддшедуледджоб на сеттимеоут и убрать тиме()- ничего не изменится, только букв меньше и в таймере меньше ошибок))

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

setTimeOut("lightOnTutimer50","fopen('http://192.168.18.110/state?c=set&n=60&o=1', 'r');say('Свет включен!',2);",5);
Отправлено с моего Redmi 4X через Tapatalk
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am

Re: Подскажите как правильно создать таймер!

Сообщение Chainik »

xor писал(а): Вт апр 02, 2019 7:19 pm Имейте ввиду, что использование аддшедуледджоб отличается от таймера не только заданием абсолютного времени вместо смещения, но и реализацией. Новое задание джоба с существующим именем создаст новый джоб с тем же именем (без очистки старого)
Интересно, если, допустим, запущен первый AddScheduledJob, а потом второй AddScheduledJob с тем же именем, а затем выполнен сброс

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

ClearScheduledJob('title');
Какой ScheduledJob при этом будет ликвидирован: первый, второй или оба?
Может кто знает?
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин

Re: Подскажите как правильно создать таймер!

Сообщение tarasfrompir »

Chainik писал(а): Ср апр 03, 2019 8:56 pm
xor писал(а): Вт апр 02, 2019 7:19 pm Имейте ввиду, что использование аддшедуледджоб отличается от таймера не только заданием абсолютного времени вместо смещения, но и реализацией. Новое задание джоба с существующим именем создаст новый джоб с тем же именем (без очистки старого)
Интересно, если, допустим, запущен первый AddScheduledJob, а потом второй AddScheduledJob с тем же именем, а затем выполнен сброс

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

ClearScheduledJob('title');
Какой ScheduledJob при этом будет ликвидирован: первый, второй или оба?
Может кто знает?
Вот содержимое функции

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

function clearScheduledJob($title)
{
    SQLExec("DELETE FROM jobs WHERE TITLE = '" . DBSafe($title) . "'");
}
Удалит все джобы с одинаковым названием
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
xor
Сообщения: 2044
Зарегистрирован: Сб ноя 22, 2014 8:45 pm

Re: Подскажите как правильно создать таймер!

Сообщение xor »

tarasfrompir писал(а):
Chainik писал(а): Ср апр 03, 2019 8:56 pm
xor писал(а): Вт апр 02, 2019 7:19 pm Имейте ввиду, что использование аддшедуледджоб отличается от таймера не только заданием абсолютного времени вместо смещения, но и реализацией. Новое задание джоба с существующим именем создаст новый джоб с тем же именем (без очистки старого)
Интересно, если, допустим, запущен первый AddScheduledJob, а потом второй AddScheduledJob с тем же именем, а затем выполнен сброс

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

ClearScheduledJob('title');
Какой ScheduledJob при этом будет ликвидирован: первый, второй или оба?
Может кто знает?
Вот содержимое функции

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

function clearScheduledJob($title)
{
    SQLExec("DELETE FROM jobs WHERE TITLE = '" . DBSafe($title) . "'"); // а так будет
}
Удалит все джобы с одинаковым названием
Причем заявлено, что будет работать шаблон "title%" для удаления джобов по маске, а он не будет))

зы. SQLExec("DELETE FROM jobs WHERE TITLE like '" . DBSafe($title) . "'");

Отправлено с моего Redmi 4X через Tapatalk
Yashalta
Сообщения: 318
Зарегистрирован: Вс май 20, 2018 9:27 am

Re: Подскажите как правильно создать таймер!

Сообщение Yashalta »

Я что-то делаю не так!
Я хочу, что бы мой 2-й "AddScheduledJob" выполнялся следом за первым. Но, он не выполняется, первый выполняется а второго как будто нет вообще!

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

if 
...
($key == 'civil_twilight_begin') {
  //echo 'Начало утренних сумерек: '.date("H:i", $val).'<br>';
  AddScheduledJob("job_civil_twilight_begin","cm('DarknessMode.deactivate');say('Начало утренних сумерек, через 20 минут выключаю свет во дворе!(script)',2);", $val); 
  AddScheduledJob("job_civil_twilight_begin2","fopen('http://192.168.18.110/state?c=set&n=65&o=0', 'r');say('Свет во дворе выключен!(script)',2);",time()+1200);
...
}
Что я не так делаю?
Аватара пользователя
xor
Сообщения: 2044
Зарегистрирован: Сб ноя 22, 2014 8:45 pm

Re: Подскажите как правильно создать таймер!

Сообщение xor »

Yashalta писал(а):Я что-то делаю не так!
Я хочу, что бы мой 2-й "AddScheduledJob" выполнялся следом за первым. Но, он не выполняется, первый выполняется а второго как будто нет вообще!

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

if 
...
($key == 'civil_twilight_begin') {
  //echo 'Начало утренних сумерек: '.date("H:i", $val).'<br>';
  AddScheduledJob("job_civil_twilight_begin","cm('DarknessMode.deactivate');say('Начало утренних сумерек, через 20 минут выключаю свет во дворе!(script)',2);", $val); 
  AddScheduledJob("job_civil_twilight_begin2","fopen('http://192.168.18.110/state?c=set&n=65&o=0', 'r');say('Свет во дворе выключен!(script)',2);",time()+1200);
...
}
Что я не так делаю?
Зачем вы сами себя путаете, засовывая кучу кода в аддшедуледджобы?
Создайте скрипт, отладьте, и запускайте аддшедуледджобом этот скрипт в нужное время

Отправлено с моего Redmi 4X через Tapatalk

Logrus
Сообщения: 2113
Зарегистрирован: Пт апр 07, 2017 12:20 pm

Re: Подскажите как правильно создать таймер!

Сообщение Logrus »

Yashalta писал(а): Пт апр 05, 2019 4:57 pm Что я не так делаю?
готовое не читаете, не стал бы писать, но есть же готовое еще и помимо статического смещения еще и динамическое относительно облачности
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Yashalta
Сообщения: 318
Зарегистрирован: Вс май 20, 2018 9:27 am

Re: Подскажите как правильно создать таймер!

Сообщение Yashalta »

Logrus писал(а): Пт апр 05, 2019 8:47 pm готовое не читаете, не стал бы писать, но есть же готовое еще и помимо статического смещения еще и динамическое относительно облачности
Вот сейчас не понимаю о чем вы! Тем более про статическое и динамическое...
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am

Re: Подскажите как правильно создать таймер!

Сообщение Chainik »

Yashalta писал(а): Пт апр 05, 2019 8:57 pm
Logrus писал(а): Пт апр 05, 2019 8:47 pm готовое не читаете, не стал бы писать, но есть же готовое еще и помимо статического смещения еще и динамическое относительно облачности
Вот сейчас не понимаю о чем вы! Тем более про статическое и динамическое...
Это он про "динамическое относительно облачности". А чтобы учесть фактический уровень освещенности (и на основе этого смещать ежедневное время включения и выключения), естественно, нужны показания уличного датчика освещенности.
Ответить