SAT9/.resources/39894db65f3500383e10733797a576857335a3824135fdabf1bc2c41d4453196

24 lines
1.0 KiB
Plaintext

def AvgCalc():
## Code to calc avg latency.
whid = system.tag.readBlocking(["Configuration/FC"])[0].value
# Read tag value
tag_values = system.tag.readBlocking(['[%s_SCADA_TAG_PROVIDER]Latency/rolling_latency'% whid])[0].value
# Convert string timestamps to milliseconds
timestamps = [int(value) for value in tag_values]
if 0 in timestamps:
return
else:
# Calculate the average latency in milliseconds
avg_latency = round(sum(timestamps) / len(tag_values), 3)
zero_list = [0]*30
circular_buffer = '[%s_SCADA_TAG_PROVIDER]Latency/rolling_latency.value'% whid
avg_latency_path ='[%s_SCADA_TAG_PROVIDER]Latency/avg_latency'% whid
# clear array to all 0's so we can wait to trigger until 30 new records have happened and write new avg
system.tag.writeBlocking([avg_latency_path,circular_buffer], [avg_latency,zero_list]) # writing the avg_latency back to tag on purpose for visual.
# Call Dynamodb write script, passing in site and latency to be written.
Latency.WriteToDynamo.DynamoWriter(whid,avg_latency)