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) return(value)
def _lmwdelta_(self, startTime, endTime): def _lmwdelta_(self, window):
d = endTime - startTime h = 24*window.days + window.seconds // 3600
h = 24*d.days + d.seconds // 3600 m = (window.seconds % 3600)//60
m = (d.seconds % 3600)//60
return("+%02i:%02i" % (h, m)) return("+%02i:%02i" % (h, m))
def timeSerie(self, process, location, parameter, def timeSerie(self, process, location, parameter,
@@ -323,21 +322,28 @@ Errors:
if startTime > endTime: if startTime > endTime:
raise sipTimeSeriesError(startTime, endTime, raise sipTimeSeriesError(startTime, endTime,
"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): if datetime.now(tz=tz.gettz('GMT+1')) - startTime > timedelta(days=30):
raise sipTimeSeriesError(startTime, endTime, raise sipTimeSeriesError(startTime, endTime,
"now - starttime > 30 days") "now - starttime > 30 days")
if process == "VW": if process == "VW":
cmd_type="DATA" 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, values = self.cmd(process, location, parameter,
self._lmwdelta_(startTime, endTime), self._lmwdelta_(window),
startTime.strftime("%d-%m-%Y"), startTime.strftime("%d-%m-%Y"),
startTime.strftime("%H:%M"), startTime.strftime("%H:%M"),
cmd_type) cmd_type)
return(lmwTimeSerie(startTime, delta, values)) res.addvalues(startTime, values)
startTime += window + delta
return(res)
def logout(self): def logout(self):
"""logout() """logout()
@@ -361,7 +367,7 @@ Note:
* Additionale kwaliteit is optional and may contain None. * Additionale kwaliteit is optional and may contain None.
""" """
def __init__(self, start, delta, values): def __init__(self, start, delta, values=""):
"""lmwTimeSerie(start, delta, values) """lmwTimeSerie(start, delta, values)
Create a lmwTimeSerie object with: Create a lmwTimeSerie object with:
@@ -370,25 +376,29 @@ Create a lmwTimeSerie object with:
values: lmw result string values: lmw result string
""" """
self.ts = [] 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) """addvalues(start, delta, values)
Add values to a timeserie Add values to a timeserie
start: Start time start: Start time
delta: Period of the measurements delta: Period of the measurements
values: lmw result string values: lmw result string
"""
self.ts = []
Note:
Times in UTC
"""
start = start.astimezone(tz.gettz('UTC'))
for e in values.split(";"): for e in values.split(";"):
v = e.split("/") v = e.split("/")
v[0] = v[0].split(",") v[0] = v[0].split(",")
if len(v) == 2: if len(v) == 2:
v.append(None) v.append(None)
self.ts.append([start, v[0], v[1], v[2]]) self.ts.append([start, v[0], v[1], v[2]])
start += delta start += self.delta
class sipTimeSeriesError(Exception): class sipTimeSeriesError(Exception):
"""Parameter errors for timeSeries""" """Parameter errors for timeSeries"""