Files
Stream_PHX_A7/Gateways/FE/projects/.resources/cc9e8d773c33412370b8990f39056ec6538d1795b6fa7566438b20a9d512a643

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