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,81 @@
import pprint, time
Logger = system.util.getLogger("alarm.summary")
provider = "[default]"
def initAlarmSummaries():
""" This function will reset all the alarm summary udt's in the system
"""
allActiveAlarmsTag = []
newValues = []
for t in system.tag.browse(provider, {"tagType":"UdtInstance", "typeId": "AlarmSummary", "recursive":True}):
allActiveAlarmsTag.append(t["fullPath"].toString() +"/ActiveAlarms")
newValues.append({})
system.tag.writeAsync(allActiveAlarmsTag, newValues)
def updateAlarmCount(srcPath, priority, state):
pass
def calcMaxPriority(levelPath):
""" Pass in the path level to determine the max priority and return the value
levelPath: string of the object level path without the /AlarmSummary/ActiveAlarms
"""
aggAlarmStatus = system.tag.readBlocking([levelPath+"/AlarmSummary/ActiveAlarms"])[0].value.toDict()
return determinePriority(aggAlarmStatus)
def determinePriority(tagValue):
""" Use this method to figure out the highest priority level of a tag. Useful with transforms from front-end
Args:
tagValue: dict/document of the expected structure of {srcPath:priority}
Returns:
maxState: int -1 for none, 0-Diag, 1-Low, 2- Med, 3- High, 4-Critical
"""
maxState = -1
for k, v in tagValue.iteritems():
maxState = v if v > maxState else maxState
return maxState
def syncAlarms():
"""
Timer based function to update all of the aggregate alarm tags.
"""
sublog = Logger.createSubLogger("syncAlarms")
start = time.time()
levelAlarmSummary = {} #{"alarmPath":[{srcAlarm:priority}]
for alm in system.alarm.queryStatus(priority=[0,1,2,3,4],state=['ActiveUnacked','ActiveAcked']):
srcPath = alm.getSource().toString()
mainTagPath = srcPath.split("/tag:")[1].split(":/alm")[0]
priorityVal = alm.getPriority().intValue
pathLevelsList = mainTagPath.split("/")
# Because alarms can exist outside of the /Alarms folder in the UDT, we will account for this
almOffset = -1
if "Alarms" not in pathLevelsList:
almOffset= 0
for i in range(1, len(pathLevelsList) + almOffset):
path = provider+"/".join(pathLevelsList[:i])+"/AlarmSummary/ActiveAlarms"
if path not in levelAlarmSummary.keys():
levelAlarmSummary[path]= {}
levelAlarmSummary[path][srcPath] = max([levelAlarmSummary[path].get(srcPath,0), priorityVal ])
# pprint.pprint(levelAlarmSummary)
writeTags, writeVals = [], []
for k, v in levelAlarmSummary.iteritems():
writeTags.append(str(k))
writeVals.append(v)
sublog.debug("%s - %s"%(writeTags, writeVals))
if len(writeTags) == len(writeVals) and len(writeTags) > 0:
system.tag.writeAsync(writeTags, writeVals)
sublog.trace("finished in %s sec"%(time.time() - start))