timeSeries kan nu omgaan met periode groter dan 1 dag.

This commit is contained in:
Marcel Nijenhof
2020-07-26 22:03:12 +02:00
parent 4184e02dc8
commit db870305a3

View File

@@ -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"
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_(startTime, endTime),
self._lmwdelta_(window),
startTime.strftime("%d-%m-%Y"),
startTime.strftime("%H:%M"),
cmd_type)
return(lmwTimeSerie(startTime, delta, values))
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:
@@ -370,25 +376,29 @@ Create a lmwTimeSerie object with:
values: lmw result string
"""
self.ts = []
self.addvalues(start, delta, values)
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"""