From db870305a3946182b2d0c1d311681a0039d84eed Mon Sep 17 00:00:00 2001 From: Marcel Nijenhof Date: Sun, 26 Jul 2020 22:03:12 +0200 Subject: [PATCH] timeSeries kan nu omgaan met periode groter dan 1 dag. --- lmwsip.py | 50 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/lmwsip.py b/lmwsip.py index a259aa7..3fe0165 100644 --- a/lmwsip.py +++ b/lmwsip.py @@ -274,10 +274,9 @@ Returns a single string value or None # return(value) - def _lmwdelta_(self, startTime, endTime): - d = endTime - startTime - h = 24*d.days + d.seconds // 3600 - m = (d.seconds % 3600)//60 + def _lmwdelta_(self, window): + h = 24*window.days + window.seconds // 3600 + m = (window.seconds % 3600)//60 return("+%02i:%02i" % (h, m)) def timeSerie(self, process, location, parameter, @@ -323,21 +322,28 @@ Errors: if startTime > endTime: raise sipTimeSeriesError(startTime, endTime, "starttime > endtime") - if endTime - startTime > timedelta(days=1): - raise sipTimeSeriesError(startTime, endTime, - "endtime - starttime > 24 hour") if datetime.now(tz=tz.gettz('GMT+1')) - startTime > timedelta(days=30): raise sipTimeSeriesError(startTime, endTime, "now - starttime > 30 days") if process == "VW": cmd_type="DATA" - values = self.cmd(process, location, parameter, - self._lmwdelta_(startTime, endTime), - startTime.strftime("%d-%m-%Y"), - startTime.strftime("%H:%M"), - cmd_type) - return(lmwTimeSerie(startTime, delta, values)) + res = lmwTimeSerie(startTime, delta, "") + + while startTime < endTime: + if endTime - startTime > timedelta(days=1): + window = timedelta(days=1) - delta + else: + window = endTime-startTime + values = self.cmd(process, location, parameter, + self._lmwdelta_(window), + startTime.strftime("%d-%m-%Y"), + startTime.strftime("%H:%M"), + cmd_type) + res.addvalues(startTime, values) + startTime += window + delta + + return(res) def logout(self): """logout() @@ -361,7 +367,7 @@ Note: * Additionale kwaliteit is optional and may contain None. """ - def __init__(self, start, delta, values): + def __init__(self, start, delta, values=""): """lmwTimeSerie(start, delta, values) Create a lmwTimeSerie object with: @@ -369,26 +375,30 @@ Create a lmwTimeSerie object with: delta: Period of the measurements values: lmw result string """ - self.ts = [] - self.addvalues(start, delta, values) + self.ts = [] + self.delta = delta + if values != "": + self.addvalues(start, values) - def addvalues(self, start, delta, values): + def addvalues(self, start, values): """addvalues(start, delta, values) Add values to a timeserie start: Start time delta: Period of the measurements values: lmw result string -""" - self.ts = [] +Note: + Times in UTC +""" + start = start.astimezone(tz.gettz('UTC')) for e in values.split(";"): v = e.split("/") v[0] = v[0].split(",") if len(v) == 2: v.append(None) self.ts.append([start, v[0], v[1], v[2]]) - start += delta + start += self.delta class sipTimeSeriesError(Exception): """Parameter errors for timeSeries"""