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

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

Модератор: immortal

Ответить
Аватара пользователя
SmoKE_xDDD
Сообщения: 816
Зарегистрирован: Ср апр 17, 2019 5:00 pm
Откуда: Нижний Новгород
Благодарил (а): 110 раз
Поблагодарили: 898 раз

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

Сообщение SmoKE_xDDD » Чт янв 16, 2020 10:19 pm

Привет всем! Когда завожу таймер через SetTimeOut есть вариант как либо посмотреть время до сработки?
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

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

Сообщение Chainik » Чт янв 16, 2020 10:57 pm

SmoKE_xDDD писал(а):
Чт янв 16, 2020 10:19 pm
Привет всем! Когда завожу таймер через SetTimeOut есть вариант как либо посмотреть время до сработки?
Сам автор системы дал ответ.
viewtopic.php?f=4&t=1760
За это сообщение автора Chainik поблагодарил:
SmoKE_xDDD (Чт янв 16, 2020 11:09 pm)
Рейтинг: 1.16%
Аватара пользователя
SmoKE_xDDD
Сообщения: 816
Зарегистрирован: Ср апр 17, 2019 5:00 pm
Откуда: Нижний Новгород
Благодарил (а): 110 раз
Поблагодарили: 898 раз

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

Сообщение SmoKE_xDDD » Чт янв 16, 2020 11:09 pm

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

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

Сообщение 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;
 }
}
Снимок.PNG
Снимок.PNG (34.19 КБ) 3047 просмотров

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

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

setTimeOut('KitchenTimer', 'setGlobal(\'XiaomiGateway.ringtone\', \'23,60\');', $timeout);
say('Установлен таймер на ' . $timeout . ' секунд', 2);
За это сообщение автора Logrus поблагодарили (всего 4):
SmoKE_xDDD (Пт янв 17, 2020 1:41 am) • Chainik (Пт янв 17, 2020 8:41 am) • slax (Чт янв 30, 2020 4:44 pm) • shil (Пт фев 28, 2020 11:23 am)
Рейтинг: 4.65%
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
SmoKE_xDDD
Сообщения: 816
Зарегистрирован: Ср апр 17, 2019 5:00 pm
Откуда: Нижний Новгород
Благодарил (а): 110 раз
Поблагодарили: 898 раз

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

Сообщение SmoKE_xDDD » Пт янв 17, 2020 1:40 am

Да спасибо, я тоже уже функцию написал... =)
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

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

Сообщение 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. Да и попасть можно в сработку, а скажет, что нет таймера, а он стрельнет
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

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

Сообщение Logrus » Пт июл 10, 2020 10:01 pm

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. Да и попасть можно в сработку, а скажет, что нет таймера, а он стрельнет
их из коммон вообще вынести в джобс
дополнить чего нет
и дорабатывать
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Ответить