在小时或分钟的顶部记录的实时时间间隔平均值

时间:2019-05-22 17:31:40

标签: python average

我正在开发一个程序,该程序将使用pymodbus记录Modbus通道,其中大约5个通道。我已经说到可以调用通道,获取值并将它们写入csv文件的地步了,但是现在我需要记录一分钟的平均值和一小时的平均值。这些平均值必须为1:00到1:59小时,而不是1:30到2:30,时间戳为1:00。有什么建议么?我试图以这种方式编写程序,以便程序进行所有平均。 我看到的大多数示例都没有考虑当前时间,只是时间间隔为1小时或1分钟。

#Imports
from pymodbus.client.sync import ModbusTcpClient as ModbusClient
import time
import subprocess
import os.path
minute1 = []
minute2 = []
start = time.strftime(%H%M)
#Define where the call is going: IP     Port      Connection Type
client = ModbusClient("192.168.1.201", port=502, auto_open=True)
#Check if Log File exist
output_path_m = '/home/pi/AeroQual-Minute_' + time.strftime("%Y_%m_%d") + '.csv'
output_path_h = '/home/pi/AeroQual-Hour_' + time.strftime("%Y_%m_%d") + '.csv'

while True:
#Open Connection
    client.connect()

#Call Values from Holding Registers (Start, total called, Unit ID)
    rr = client.read_holding_registers(0, 2, unit=0x00)

# Assign Values to Variables
    coefficent = 5.00/65535
    A0= rr.registers[0]
    A1= rr.registers[1]

#Print Output
    print (rr.registers )
    print 'A0=',"{0:.3f}".format(A0*coefficent*100), "ppb"
    print 'A1=',"{0:.3f}".format(A1*coefficent*100), "ppb"
#Close Connection
    client.close()
#Create Minute Average Data
    if start == time.strftime("%H%M"): 
        mintute1.append(A0)
        minute2.append(A1)
    else:
        a0m = mean(minute1)
        a2m = mean(minute2)
        start = time.strftime(%H%M)
#Write Data Minute Average to Log File
        newfile = not os.path.isfile(output_path_m)
        with open(output_path_m,'a+')as output:
            a0m = "{0:.3f}".format(A0*coefficent*100)
            a1m = "{0:.3f}".format(A1*coefficent*100)
            output.write(time.strftime("%Y/%m/%d %H:%M:%S")+"," + a0m + "ppb," +a1m + "ppb \r\n")
            minute1.clear()
            minute2.clear()
#Force loop to wait 15 seconds  
    time.sleep(15)

0 个答案:

没有答案