Страница 1 из 1

Данные по таймеру?

Добавлено: Чт янв 16, 2020 10:19 pm
SmoKE_xDDD
Привет всем! Когда завожу таймер через SetTimeOut есть вариант как либо посмотреть время до сработки?

Re: Данные по таймеру?

Добавлено: Чт янв 16, 2020 10:57 pm
Chainik
SmoKE_xDDD писал(а):
Чт янв 16, 2020 10:19 pm
Привет всем! Когда завожу таймер через SetTimeOut есть вариант как либо посмотреть время до сработки?
Сам автор системы дал ответ.
viewtopic.php?f=4&t=1760

Re: Данные по таймеру?

Добавлено: Чт янв 16, 2020 11:09 pm
SmoKE_xDDD
Chainik писал(а):
Чт янв 16, 2020 10:57 pm
SmoKE_xDDD писал(а):
Чт янв 16, 2020 10:19 pm
Привет всем! Когда завожу таймер через SetTimeOut есть вариант как либо посмотреть время до сработки?
Сам автор системы дал ответ.
viewtopic.php?f=4&t=1760
Низкий вам поклон... =)

Re: Данные по таймеру?

Добавлено: Пт янв 17, 2020 1:35 am
Logrus

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

// Возвращает оставшееся время в секундах работы таймера по его имени
// Если таймера нет, вернет 0
function timeOutResidue($title) {
 $timerId = timeOutExists($title);
 if ($timerId) {
  $timer_job=SQLSelectOne("SELECT UNIX_TIMESTAMP(RUNTIME) as TM FROM jobs WHERE ID='".$timerId."'");
  $diff=(int)$timer_job['TM']-time(); // получаем время в секундах, оставшееся до запланированного срабатывания таймера
  return $diff;
 } else {
  return 0;
 }
}
Снимок.PNG
Снимок.PNG (34.19 КБ) 996 просмотров

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

if ($timeout = timeOutResidue('KitchenTimer')) {
 $timeout += 300;
} else {
 $timeout = 300;
}

setTimeOut('KitchenTimer', 'setGlobal(\'XiaomiGateway.ringtone\', \'23,60\');', $timeout);
say('Установлен таймер на ' . $timeout . ' секунд', 2);

Re: Данные по таймеру?

Добавлено: Пт янв 17, 2020 1:40 am
SmoKE_xDDD
Да спасибо, я тоже уже функцию написал... =)

Re: Данные по таймеру?

Добавлено: Пт июл 10, 2020 9:20 pm
xor
Logrus писал(а):
Пт янв 17, 2020 1:35 am

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

// Возвращает оставшееся время в секундах работы таймера по его имени
// Если таймера нет, вернет 0
function timeOutResidue($title) {
 $timerId = timeOutExists($title);
 if ($timerId) {
  $timer_job=SQLSelectOne("SELECT UNIX_TIMESTAMP(RUNTIME) as TM FROM jobs WHERE ID='".$timerId."'");
  $diff=(int)$timer_job['TM']-time(); // получаем время в секундах, оставшееся до запланированного срабатывания таймера
  return $diff;
 } else {
  return 0;
 }
}
лучше возвращать -1 при отсутствии таймера, как и в registeredEventTime. Да и попасть можно в сработку, а скажет, что нет таймера, а он стрельнет

Re: Данные по таймеру?

Добавлено: Пт июл 10, 2020 10:01 pm
Logrus
xor писал(а):
Пт июл 10, 2020 9:20 pm
Logrus писал(а):
Пт янв 17, 2020 1:35 am

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

// Возвращает оставшееся время в секундах работы таймера по его имени
// Если таймера нет, вернет 0
function timeOutResidue($title) {
 $timerId = timeOutExists($title);
 if ($timerId) {
  $timer_job=SQLSelectOne("SELECT UNIX_TIMESTAMP(RUNTIME) as TM FROM jobs WHERE ID='".$timerId."'");
  $diff=(int)$timer_job['TM']-time(); // получаем время в секундах, оставшееся до запланированного срабатывания таймера
  return $diff;
 } else {
  return 0;
 }
}
лучше возвращать -1 при отсутствии таймера, как и в registeredEventTime. Да и попасть можно в сработку, а скажет, что нет таймера, а он стрельнет
их из коммон вообще вынести в джобс
дополнить чего нет
и дорабатывать