SAT9/.resources/8b21cb94fdd864f689b817758b9c05087ed06d005cde05b8bc1cfa16044745f9
2025-04-18 19:44:27 +04:00

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)