Длительность события, в минутах
Модератор: immortal
-
- Сообщения: 141
- Зарегистрирован: Пн авг 22, 2016 10:03 am
- Благодарил (а): 28 раз
- Поблагодарили: 5 раз
Длительность события, в минутах
Добрый.
Подскажите пожалуйста. Нужно вытащить с мдм длительность события. Суть: есть переменные вида '13:00' - время, типа метки. Задается кодом или берется со свойства объекта. Есть текущее время. Нужно вычислить сколько минут прошло со времени установки метки, именно минут. Подкиньте плиз идею. Не очень силен во временных функциях.
Пример. Сейчас текущее 20:20, кодом задается метка 20:10. Нужно получить эти 10 минут.
благодарю
Подскажите пожалуйста. Нужно вытащить с мдм длительность события. Суть: есть переменные вида '13:00' - время, типа метки. Задается кодом или берется со свойства объекта. Есть текущее время. Нужно вычислить сколько минут прошло со времени установки метки, именно минут. Подкиньте плиз идею. Не очень силен во временных функциях.
Пример. Сейчас текущее 20:20, кодом задается метка 20:10. Нужно получить эти 10 минут.
благодарю
-
- Сообщения: 1462
- Зарегистрирован: Вс янв 10, 2016 11:05 am
- Благодарил (а): 260 раз
- Поблагодарили: 454 раза
Re: Длительность события, в минутах
Сходу код не подскажу, но самый простой вариант иметь дополнительно метку времени типа Timestamp (количество секунд с полуночи 1 января 1970 года).
Тогда все упрощается. Делаем разность между текущим временем (функция time()) и меткой времени, делим на 60 и округляем до минут.
Тогда все упрощается. Делаем разность между текущим временем (функция time()) и меткой времени, делим на 60 и округляем до минут.
-
- Сообщения: 2084
- Зарегистрирован: Пт апр 07, 2017 12:20 pm
- Благодарил (а): 313 раз
- Поблагодарили: 457 раз
Re: Длительность события, в минутах
"поморщу лоб" (с)
timeConvert
и еще больше, но выше будет достаточно на интервале текущего дня
mktime
последняя ссылка на прекрасный справочник, справа список близких функций
timeConvert
и еще больше, но выше будет достаточно на интервале текущего дня
mktime
последняя ссылка на прекрасный справочник, справа список близких функций
Код: Выделить всё
$tm = '17:20';
$time = time();
$timeDiffMin = floor(($time - timeConvert($tm))/60);
echo $timeDiffMin;
- Рейтинг: 1.16%
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
-
- Сообщения: 35
- Зарегистрирован: Пт сен 27, 2019 3:37 pm
- Благодарил (а): 21 раз
- Поблагодарили: 2 раза
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. Подскажите, что я понимаю не правильно. Спасибо вам.
-
- Сообщения: 1462
- Зарегистрирован: Вс янв 10, 2016 11:05 am
- Благодарил (а): 260 раз
- Поблагодарили: 454 раза
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);
}
- Рейтинг: 1.16%
-
- Сообщения: 2084
- Зарегистрирован: Пт апр 07, 2017 12:20 pm
- Благодарил (а): 313 раз
- Поблагодарили: 457 раз
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. Подскажите, что я понимаю не правильно. Спасибо вам.
СпойлерПоказать
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
- xor
- Сообщения: 2039
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 286 раз
- Поблагодарили: 629 раз
Re: Длительность события, в минутах
если есть история свойства статуса насоса -
посмотрите https://connect.smartliving.ru/profile/ ... omili.html
- Рейтинг: 1.16%
win10 connect https://connect.smartliving.ru/profile/303
-
- Сообщения: 35
- Зарегистрирован: Пт сен 27, 2019 3:37 pm
- Благодарил (а): 21 раз
- Поблагодарили: 2 раза
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); }
-
- Сообщения: 35
- Зарегистрирован: Пт сен 27, 2019 3:37 pm
- Благодарил (а): 21 раз
- Поблагодарили: 2 раза
Re: Длительность события, в минутах
У меня появился новый вопрос: А как сделать так, чтобы этот скрипт в реальном времени следил за временем работы насоса -Pump3.status'==1, и если это время превышает заданый мною наперед интервал, извещало, или делало что то еще, что я наперед пропишу? Но суть в том, как сделать тригер по времени активного включения?
Спасибо вам.
Спасибо вам.
-
- Сообщения: 1554
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
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('Название сценария'); если нужно сделать что-то более сложное.
- Рейтинг: 1.16%