From e2966f52ef538273749eeb848ad4a2e5b196c6b1 Mon Sep 17 00:00:00 2001 From: Marcel Nijenhof Date: Wed, 29 Jul 2020 20:28:26 +0200 Subject: [PATCH] BUG Fix: timeSerie: exacte tijd werd naar boven afgerond --- lmwsip.py | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/lmwsip.py b/lmwsip.py index 76b4b12..73ed59d 100644 --- a/lmwsip.py +++ b/lmwsip.py @@ -286,6 +286,15 @@ Returns a single string value or None m = (window.seconds % 3600)//60 return("+%02i:%02i" % (h, m)) + def _roundtime_(self, time, parameter): + if time.microsecond != 0: + time += timedelta(microseconds=1000000-time.microsecond) + if time.second != 0: + time += timedelta(seconds=60-time.second) + if (parameter.find("10") != -1) and (time.minute % 10 != 0): + time += timedelta(minutes=(10-time.minute%10)) + return(time) + def timeSerie(self, process, location, parameter, startTime, endTime, cmd_type="DATB"): """timeSerie(process, location, parameter, startTime, endTime, cmd_type="DATA") @@ -314,30 +323,33 @@ Errors: endTime - startTime > 24 hour now - startTime < 30 days """ - startTime = startTime.astimezone(tz.gettz('GMT+1')) + startTime = self._roundtime_(startTime.astimezone(tz.gettz('GMT+1')), parameter) endTime = endTime.astimezone(tz.gettz('GMT+1')) - startTime += timedelta(microseconds=1000000-startTime.microsecond) - startTime += timedelta(seconds=60-startTime.second) if (parameter.find("10") != -1): - if startTime.minute % 10 != 0: - delta = timedelta(minutes=10) - startTime += timedelta(minutes=(10-startTime.minute%10)) + delta = timedelta(minutes=10) else: delta = timedelta(minutes=1) if startTime > endTime: + self.log.warn("starttime > endtime: %s > %s", startTime, endTime) raise sipTimeSeriesError(startTime, endTime, "starttime > endtime") + if datetime.now(tz=tz.gettz('GMT+1')) - startTime > timedelta(days=30): + self.log.warn("now() - starttime > 30 days: %s", startTime) raise sipTimeSeriesError(startTime, endTime, "now - starttime > 30 days") + + self.log.debug("LmwSip.timeSerie: startTime: %s" % startTime) + self.log.debug("LmwSip.timeSerie: endTime: %s" % endTime) + if process == "VW": cmd_type="DATA" res = lmwTimeSerie(startTime, delta, "") - while startTime < endTime: + while startTime <= endTime: if endTime - startTime > timedelta(days=1): window = timedelta(days=1) - delta else: