2026-04-24 FE Backup

This commit is contained in:
2026-04-24 12:37:16 +00:00
parent ace79b82f7
commit 0ba11a23b8
3705 changed files with 1240402 additions and 0 deletions

View File

@@ -0,0 +1,87 @@
from datetime import datetime
def getBaseTagPaths(collection, location=None):
if location is not None:
return collection[location]
else:
# return [x for v in collection.values() for x in v]
return [value for key, values in collection.items() if key in ["Common","DH1","DH2","DH3","DH4","DH5"] for value in values]
def getHistory(paths, startDate, endDate, customArgs={}):
"""
Generic get history
Args:
paths: [] of strings/tagpaths
startDate: date start of range
endDate: date end of range
customArgs: dictionary of custom values if needed
returns:
PyDataSet
"""
intervalMin = customArgs.get("intervalMinutes",1)
noInterpol = customArgs.get("noInterpolation",True)
ignoreBad = customArgs.get("ignoreBadQuality",True)
aggMode = customArgs.get("aggregationMode","LastValue")
histDS = system.tag.queryTagHistory(paths, startDate, endDate, aggregationMode = aggMode, intervalMinutes= intervalMin,noInterpolation= noInterpol, ignoreBadQuality= ignoreBad )
# print "common.util.getHist", histDS.getRowCount(), paths
return system.dataset.toPyDataSet(histDS)
def generateSumCol(hist, sumColName="SumRealPwr"):
allHeaders = system.dataset.getColumnHeaders(hist)
sumCol = []
for row in hist:
try:
sumCol.append(sum([row[h] for h in allHeaders[1:] if row[h] is not None]) if len(allHeaders)>1 else 0)
except:
sumCol.append(0)
return system.dataset.toPyDataSet(system.dataset.addColumn(hist, sumCol, sumColName, float))
def averageIntervalData(histDS, interval=15):
"""
Average values over time based on minute per minute data.
First column should be t_stamp
"""
timeUnitStr = ""
GroupDict= {} # represents {"datetime":{"col1":[], "col2":[]...}}
histDsCols = system.dataset.getColumnHeaders(histDS)[1:]
resultData = []
for i,row in enumerate(histDS):
if i%interval == 0:
timeUnitStr = system.date.format(row["t_stamp"],"yyyy-MM-dd HH:mm")
GroupDict.setdefault(timeUnitStr, {})
GroupDict[timeUnitStr]={col:[] for col in histDsCols}
# GroupDict[quarterHrStr].append(row["SumRealPwr"])
for col in histDsCols:
GroupDict[timeUnitStr][col].append(row[col] if row[col] is not None else 0)
sortedDateKeys = sorted(GroupDict.keys(), key=lambda x: datetime.strptime(x, '%Y-%m-%d %H:%M'))
for dt_str in sortedDateKeys:
oneRow = [system.date.parse(dt_str, "yyyy-MM-dd HH:mm")]+ [sum(GroupDict[dt_str][col])/len(GroupDict[dt_str][col]) for col in histDsCols]
resultData.append(oneRow)
return system.dataset.toPyDataSet(system.dataset.toDataSet(["t_stamp"]+histDsCols, resultData))
def mergeHistorianData(ds1, ds2):
"""
Expects 2 sets of historian data, sanity check . t_stamp should be column index 0, so we only need one
"""
if len(ds1) != len(ds2):
raise Exception("Mismatch on both datasets")
else:
ds1Header = system.dataset.getColumnHeaders(ds1)
ds2Header = system.dataset.getColumnHeaders(ds2)[1:]
newHeader = ds1Header+ds2Header
allRows = []
for i,row in enumerate(ds1):
newRow = [c for c in row] + ([c for c in ds2[i]][1:])
allRows.append(newRow)
# print len(newHeader), len(allRows[0])
return system.dataset.toPyDataSet(system.dataset.toDataSet(newHeader, allRows))