70 lines
2.9 KiB
Plaintext
70 lines
2.9 KiB
Plaintext
from datetime import datetime
|
|
|
|
def getTagPaths(location=None):
|
|
"""
|
|
Get all the relvant tagpaths needed for the historian query
|
|
"""
|
|
baseTagPaths = reports.MBR.common.util.getBaseTagPaths(reports.MBR.common.static.getUtilitySES(), location)
|
|
return baseTagPaths
|
|
|
|
def getEnergyHistory(startDate, endDate, location=None):
|
|
tagpaths = ["%s/Real Energy"%(path) for path in getTagPaths(location)]
|
|
return reports.MBR.common.util.getHistory(tagpaths, startDate, endDate, customArgs={})
|
|
|
|
def getRealPowerHistory(startDate,endDate, location=None):
|
|
tagpaths = ["%s/Real Power"%(path) for path in getTagPaths(location)]
|
|
return reports.MBR.common.util.getHistory(tagpaths, startDate, endDate, customArgs={"intervalMinutes":60})
|
|
|
|
|
|
def generateEnergyData(startDate, endDate, location=None):
|
|
"""
|
|
We'll take the actual start and end dates, but because we only care about the first entry and last entry we'll do
|
|
2 queries to get the head and tail of the range
|
|
"""
|
|
qStart = startDate
|
|
qEnd = system.date.addMinutes(startDate, 10)
|
|
hist = getEnergyHistory(qStart, qEnd, location)
|
|
energyStart, energyEnd = (), ()
|
|
if len(hist)>0:
|
|
energyStart= (hist[0][1], hist[0][2])
|
|
|
|
qStart = system.date.addMinutes(endDate, -10)
|
|
qEnd = endDate
|
|
hist = getEnergyHistory(qStart, qEnd, location)
|
|
if len(hist)>0:
|
|
energyEnd= (hist[-1][1], hist[-1][2])
|
|
return energyStart, energyEnd
|
|
|
|
def generateRealPowerTrend(startDate,endDate, location=None):
|
|
hist = getRealPowerHistory(startDate, endDate, location)
|
|
return reports.MBR.common.util.generateSumCol(hist, "SumRealPwr")
|
|
|
|
def getRawData(startDate,endDate, intervalMins = 15, location=None):
|
|
# Try doing this the direct way through historian
|
|
tagpaths = ["%s/Real Power"%(path) for path in getTagPaths(location)] + ["%s/Real Energy"%(path) for path in getTagPaths(location)]
|
|
return system.dataset.toPyDataSet(
|
|
system.tag.queryTagHistory(tagpaths, startDate, endDate, intervalMinutes= intervalMins,
|
|
columnNames= ["SES-1A Pwr","SES-1B Pwr", "SES-1A Energy", "SES-1B Energy"],
|
|
aggregationModes=["SimpleAverage","SimpleAverage","LastValue","LastValue"], noInterpolation=True,
|
|
ignoreBadQuality=True)
|
|
)
|
|
|
|
def doReport(startDate, endDate, intervalMin= 15):
|
|
"""
|
|
This report runs only for the SES1A and SES1B yard.
|
|
"""
|
|
res= {"RealPower":None, "RealEnergy":{}}
|
|
sEnergy, eEnergy= generateEnergyData(startDate,endDate, "Yard")
|
|
res["RealEnergy"]["1A"] = {"Start":sEnergy[0], "End":eEnergy[0]}
|
|
res["RealEnergy"]["1B"] = {"Start":sEnergy[1], "End":eEnergy[1]}
|
|
|
|
powerChart = generateRealPowerTrend(startDate, endDate, "Yard")
|
|
oldHeader = system.dataset.getColumnHeaders(powerChart)
|
|
newHeader = ["t_stamp", "SES_1A", "SES_1B", "SumPower"]
|
|
allRows = [[row[c] for c in oldHeader] for row in powerChart]
|
|
|
|
res["RealPower"] = system.dataset.toDataSet(newHeader, allRows)
|
|
res["RawData"] = reports.MBR.utility.getRawData(startDate,endDate, intervalMin, "Yard")
|
|
return res
|
|
|