BUG Fix: timeSerie: exacte tijd werd naar boven afgerond

This commit is contained in:
Marcel Nijenhof
2020-07-29 20:28:26 +02:00
parent 51ac3676d4
commit e2966f52ef

View File

@@ -286,6 +286,15 @@ Returns a single string value or None
m = (window.seconds % 3600)//60 m = (window.seconds % 3600)//60
return("+%02i:%02i" % (h, m)) 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, def timeSerie(self, process, location, parameter,
startTime, endTime, cmd_type="DATB"): startTime, endTime, cmd_type="DATB"):
"""timeSerie(process, location, parameter, startTime, endTime, cmd_type="DATA") """timeSerie(process, location, parameter, startTime, endTime, cmd_type="DATA")
@@ -314,30 +323,33 @@ Errors:
endTime - startTime > 24 hour endTime - startTime > 24 hour
now - startTime < 30 days 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')) 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 (parameter.find("10") != -1):
if startTime.minute % 10 != 0: delta = timedelta(minutes=10)
delta = timedelta(minutes=10)
startTime += timedelta(minutes=(10-startTime.minute%10))
else: else:
delta = timedelta(minutes=1) delta = timedelta(minutes=1)
if startTime > endTime: if startTime > endTime:
self.log.warn("starttime > endtime: %s > %s", startTime, endTime)
raise sipTimeSeriesError(startTime, endTime, raise sipTimeSeriesError(startTime, endTime,
"starttime > endtime") "starttime > endtime")
if datetime.now(tz=tz.gettz('GMT+1')) - startTime > timedelta(days=30): 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, raise sipTimeSeriesError(startTime, endTime,
"now - starttime > 30 days") "now - starttime > 30 days")
self.log.debug("LmwSip.timeSerie: startTime: %s" % startTime)
self.log.debug("LmwSip.timeSerie: endTime: %s" % endTime)
if process == "VW": if process == "VW":
cmd_type="DATA" cmd_type="DATA"
res = lmwTimeSerie(startTime, delta, "") res = lmwTimeSerie(startTime, delta, "")
while startTime < endTime: while startTime <= endTime:
if endTime - startTime > timedelta(days=1): if endTime - startTime > timedelta(days=1):
window = timedelta(days=1) - delta window = timedelta(days=1) - delta
else: else: