Длительность события, в минутах
Модератор: immortal
Длительность события, в минутах
Добрый.
Подскажите пожалуйста. Нужно вытащить с мдм длительность события. Суть: есть переменные вида '13:00' - время, типа метки. Задается кодом или берется со свойства объекта. Есть текущее время. Нужно вычислить сколько минут прошло со времени установки метки, именно минут. Подкиньте плиз идею. Не очень силен во временных функциях.
Пример. Сейчас текущее 20:20, кодом задается метка 20:10. Нужно получить эти 10 минут.
благодарю
Подскажите пожалуйста. Нужно вытащить с мдм длительность события. Суть: есть переменные вида '13:00' - время, типа метки. Задается кодом или берется со свойства объекта. Есть текущее время. Нужно вычислить сколько минут прошло со времени установки метки, именно минут. Подкиньте плиз идею. Не очень силен во временных функциях.
Пример. Сейчас текущее 20:20, кодом задается метка 20:10. Нужно получить эти 10 минут.
благодарю
Re: Длительность события, в минутах
Сходу код не подскажу, но самый простой вариант иметь дополнительно метку времени типа Timestamp (количество секунд с полуночи 1 января 1970 года).
Тогда все упрощается. Делаем разность между текущим временем (функция time()) и меткой времени, делим на 60 и округляем до минут.
Тогда все упрощается. Делаем разность между текущим временем (функция time()) и меткой времени, делим на 60 и округляем до минут.
Re: Длительность события, в минутах
"поморщу лоб" (с)
timeConvert
и еще больше, но выше будет достаточно на интервале текущего дня
mktime
последняя ссылка на прекрасный справочник, справа список близких функций
timeConvert
и еще больше, но выше будет достаточно на интервале текущего дня
mktime
последняя ссылка на прекрасный справочник, справа список близких функций
Код: Выделить всё
$tm = '17:20';
$time = time();
$timeDiffMin = floor(($time - timeConvert($tm))/60);
echo $timeDiffMin;Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Re: Длительность события, в минутах
Здравствуйте дорогие друзья!
У меня схожая задача: надо посчитать время от изменения статуса обьекта с 1 на 0. Я написал такой сценарий:
Но после выполнения этого кода я получаю отрицательное значение, а именно: -1617173637 или примерно такое.
Такое впечатления, что оно отнимает от нуля, то есть переменная $finish как бы равна 0. Я пробовал ей присваевать значение time(). Но результат тот же. и второй момент это то, что оно почемуто выполняет другое условие внутри первого сразу же, не дожидаясь что свойство Pump3.status' станет 0. Подскажите, что я понимаю не правильно. Спасибо вам.
У меня схожая задача: надо посчитать время от изменения статуса обьекта с 1 на 0. Я написал такой сценарий:
Код: Выделить всё
if (gg('Pump3.status')==1){
$start=time();
if (gg('Pump3.status')==0){
$finish= gg('Pump3.updated');
}
$duration=$finish-$start;
setGlobal('Pump3.durationLast',($duration));
say('длительность работы насоса '.$duration.' секунд',1);
}Такое впечатления, что оно отнимает от нуля, то есть переменная $finish как бы равна 0. Я пробовал ей присваевать значение time(). Но результат тот же. и второй момент это то, что оно почемуто выполняет другое условие внутри первого сразу же, не дожидаясь что свойство Pump3.status' станет 0. Подскажите, что я понимаю не правильно. Спасибо вам.
Re: Длительность события, в минутах
Когда насос стартует, он может проработать минуты и часы, а ваш скрипт никуда не сохраняет время старта. Кроме того ваша версия скрипта будет отрабатывать только в случае 'Pump3.status'==1. В одно и то же время свойство не может принимать одновременно 2 значения ("1" и "0"). Отсюда понятно, почему в переменной $finish у вас "0".
Думаю, не хватает свойства, куда бы сохранялось время старта насоса ("startTime"). Добавьте его. Вот так, видимо, заработает:
Думаю, не хватает свойства, куда бы сохранялось время старта насоса ("startTime"). Добавьте его. Вот так, видимо, заработает:
Код: Выделить всё
if (gg('Pump3.status')==1){
setGlobal('Pump3.startTime',time());
return;}
if (gg('Pump3.status')==0){
$finish=time();
$start=gg('Pump3.startTime');
$duration=$finish-$start;
setGlobal('Pump3.durationLast',$duration);
say('длительность работы насоса '.$duration.' секунд',1);
}Re: Длительность события, в минутах
Stryzhak писал(а): Ср мар 31, 2021 4:16 pm Здравствуйте дорогие друзья!
У меня схожая задача: надо посчитать время от изменения статуса обьекта с 1 на 0. Я написал такой сценарий:Но после выполнения этого кода я получаю отрицательное значение, а именно: -1617173637 или примерно такое.Код: Выделить всё
if (gg('Pump3.status')==1){ $start=time(); if (gg('Pump3.status')==0){ $finish= gg('Pump3.updated'); } $duration=$finish-$start; setGlobal('Pump3.durationLast',($duration)); say('длительность работы насоса '.$duration.' секунд',1); }
Такое впечатления, что оно отнимает от нуля, то есть переменная $finish как бы равна 0. Я пробовал ей присваевать значение time(). Но результат тот же. и второй момент это то, что оно почемуто выполняет другое условие внутри первого сразу же, не дожидаясь что свойство Pump3.status' станет 0. Подскажите, что я понимаю не правильно. Спасибо вам.
SPOILERSPOILER_SHOW
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Re: Длительность события, в минутах
если есть история свойства статуса насоса -Stryzhak писал(а): Ср мар 31, 2021 4:16 pm Здравствуйте дорогие друзья!
У меня схожая задача: надо посчитать время от изменения статуса обьекта с 1 на 0. Я написал такой сценарий:
посмотрите https://connect.smartliving.ru/profile/ ... omili.html
win10 connect https://connect.smartliving.ru/profile/303
Re: Длительность события, в минутах
Огромное спасибо, все заработалоChainik писал(а): Ср мар 31, 2021 4:44 pm Когда насос стартует, он может проработать минуты и часы, а ваш скрипт никуда не сохраняет время старта. Кроме того ваша версия скрипта будет отрабатывать только в случае 'Pump3.status'==1. В одно и то же время свойство не может принимать одновременно 2 значения ("1" и "0"). Отсюда понятно, почему в переменной $finish у вас "0".
Думаю, не хватает свойства, куда бы сохранялось время старта насоса ("startTime"). Добавьте его. Вот так, видимо, заработает:Код: Выделить всё
if (gg('Pump3.status')==1){ setGlobal('Pump3.startTime',time()); return;} if (gg('Pump3.status')==0){ $finish=time(); $start=gg('Pump3.startTime'); $duration=$finish-$start; setGlobal('Pump3.durationLast',$duration); say('длительность работы насоса '.$duration.' секунд',1); }
Re: Длительность события, в минутах
У меня появился новый вопрос: А как сделать так, чтобы этот скрипт в реальном времени следил за временем работы насоса -Pump3.status'==1, и если это время превышает заданый мною наперед интервал, извещало, или делало что то еще, что я наперед пропишу? Но суть в том, как сделать тригер по времени активного включения?
Спасибо вам.
Спасибо вам.
Re: Длительность события, в минутах
При включении запускать таймер на этот заданный интервал.Stryzhak писал(а): Пт апр 02, 2021 1:32 pm У меня появился новый вопрос: А как сделать так, чтобы этот скрипт в реальном времени следил за временем работы насоса -Pump3.status'==1, и если это время превышает заданый мною наперед интервал, извещало, или делало что то еще, что я наперед пропишу? Но суть в том, как сделать тригер по времени активного включения?
Спасибо вам.
SetTimeOut('title','commands', $timeout); -- $timeout в секундах
https://kb.mjdm.ru/vstroennie-v-majordomo-funkcii/
в качестве команды написать say, если нужно что-то сказать или rs('Название сценария'); если нужно сделать что-то более сложное.