| @@ -74,6 +74,14 @@ def linramp(start, end, wtarget, minsize): | |||||
| #print(repr((x, i))) | #print(repr((x, i))) | ||||
| yield (i, x / ndates * wtarget) | yield (i, x / ndates * wtarget) | ||||
| def makeconsumption(s, mean, sig, interval): | |||||
| s = s.replace(hour=0, minute=0, second=0) | |||||
| e = (s + timedelta(days=1)) - interval | |||||
| ret = [ (i, rand.gauss(mean, sig)) for i in drange(s, e, interval) ] | |||||
| return ret | |||||
| def distribute(s, e, prod, minsize): | def distribute(s, e, prod, minsize): | ||||
| onehour = timedelta(hours=1) | onehour = timedelta(hours=1) | ||||
| totaltime = e - s | totaltime = e - s | ||||
| @@ -101,7 +109,8 @@ def distribute(s, e, prod, minsize): | |||||
| #print('start') | #print('start') | ||||
| points = [] | |||||
| prodpoints = [] | |||||
| conspoints = [] | |||||
| index = [] | index = [] | ||||
| def serializearrowasmili(obj): | def serializearrowasmili(obj): | ||||
| @@ -117,7 +126,24 @@ for i in arrow.Arrow.range('day', startdate, enddate): | |||||
| index.append((noon, whprod)) | index.append((noon, whprod)) | ||||
| #print(repr(i), whprod) | #print(repr(i), whprod) | ||||
| dist = distribute(s, e, whprod, timedelta(seconds=20)) | |||||
| dist = [] | |||||
| conspoints.extend(makeconsumption(s, rand.uniform(400,800), 100, timedelta(minutes=1))) | |||||
| # zero points for non-production | |||||
| import sys | |||||
| print(repr((i, s)), file=sys.stderr) | |||||
| dist.extend(distribute(i, s, 0, timedelta(minutes=5))) | |||||
| # production | |||||
| print(repr((s, e)), file=sys.stderr) | |||||
| dist.extend(distribute(s, e, whprod, timedelta(seconds=20))) | |||||
| # zero points for non-production | |||||
| eod = i.replace(hour=23, minute=55) | |||||
| print(repr((e, eod)), file=sys.stderr) | |||||
| dist.extend(distribute(e, eod, 0, timedelta(minutes=5))) | |||||
| # print timestamps as miliseconds | # print timestamps as miliseconds | ||||
| if False: | if False: | ||||
| @@ -128,6 +154,6 @@ for i in arrow.Arrow.range('day', startdate, enddate): | |||||
| print('\n'.join('%s %s' % (a, b) for a, b in dist)) | print('\n'.join('%s %s' % (a, b) for a, b in dist)) | ||||
| else: | else: | ||||
| #print(json.dumps(tuple(dist), indent=2)) | #print(json.dumps(tuple(dist), indent=2)) | ||||
| points.extend(dist) | |||||
| prodpoints.extend(dist) | |||||
| print('fakedata =', json.dumps(dict(production=points, index=index), default=serializearrowasmili)) | |||||
| print('fakedata =', json.dumps(dict(production=prodpoints, consumption=conspoints, index=index), default=serializearrowasmili)) | |||||