Scrittura Colonna Valore Grezzo Mediato
This commit is contained in:
+19
-15
@@ -60,9 +60,10 @@ if redSrv0.get('SETTINGS:FOLDER:CURRENT') is None:
|
||||
|
||||
#funzione salva time+data e otto valori letti su file SE LOG è 1
|
||||
def fileSave():
|
||||
rawValue = getRedisVal('RTDATA:VALUE:RAW')
|
||||
resultValue = getRedisVal('RTDATA:VALUE:REAL')
|
||||
smoothedValue = getRedisVal('RTDATA:VALUE:SMOOTHED')
|
||||
rawIstant = getRedisVal('RTDATA:VALUE:RAW')
|
||||
fixedIstant = getRedisVal('RTDATA:VALUE:REAL')
|
||||
rawAverage = getRedisVal('RTDATA:VALUE:SMRAW')
|
||||
fixedAverage = getRedisVal('RTDATA:VALUE:SMOOTHED')
|
||||
currentFolder = getRedisVal('SETTINGS:FOLDER:CURRENT')
|
||||
workingDirectory = (DATA_path+currentFolder)
|
||||
#dò un nome al nuovo file
|
||||
@@ -80,12 +81,13 @@ def fileSave():
|
||||
outFile = open(workingDirectory+"/"+dataFileName, "a")
|
||||
else:
|
||||
outFile = open(workingDirectory+"/"+dataFileName, "w+")
|
||||
firstRow = "Data e Ora;"
|
||||
firstRow += "Canale A;"
|
||||
firstRow += "Canale B;"
|
||||
firstRow += "Valore Grezzo;"
|
||||
firstRow += "Valore Corretto;"
|
||||
firstRow += "Valore Corretto e Mediato"
|
||||
firstRow = "Data Ora;"
|
||||
firstRow += "Ch A;"
|
||||
firstRow += "Ch B;"
|
||||
firstRow += "Istant Grezzo;"
|
||||
firstRow += "Istant Corretto;"
|
||||
firstRow += "Mediato Grezzo;"
|
||||
firstRow += "Mediato Corretto"
|
||||
outFile.write(firstRow+"\r\n")
|
||||
|
||||
# dichiaro una stringa in cui accumulo i valori
|
||||
@@ -98,12 +100,14 @@ def fileSave():
|
||||
chB = getRedisVal('SETTINGS:CHANNEL:B')
|
||||
chBOut = getRedisVal('RTDATA:OUT:'+str(chB))
|
||||
csvRow += chBOut+";"
|
||||
#aggiungo il valore pulito
|
||||
csvRow += rawValue+";"
|
||||
#aggiungo il valore corretto con k1 k2 offset
|
||||
csvRow += resultValue+";"
|
||||
#aggiungo il valore risultante MEDIATO
|
||||
csvRow += smoothedValue
|
||||
#aggiungo il valore istant raw
|
||||
csvRow += rawIstant+";"
|
||||
#aggiungo il valore istant fixed
|
||||
csvRow += fixedIstant+";"
|
||||
#aggiungo il valore average raw
|
||||
csvRow += rawAverage+";"
|
||||
#aggiungo il valore average fixed
|
||||
csvRow += fixedAverage
|
||||
# scrivo in blocco la riga dei valori
|
||||
outFile.write(csvRow +"\r\n")
|
||||
outFile.close()
|
||||
|
||||
+22
-3
@@ -60,6 +60,8 @@ if redSrv0.get('RTDATA:VALUE:RAW') is None:
|
||||
redSrv0.set('RTDATA:VALUE:RAW', 1)
|
||||
if redSrv0.get('RTDATA:VALUE:REAL') is None:
|
||||
redSrv0.set('RTDATA:VALUE:REAL', 1)
|
||||
if redSrv0.get('RTDATA:VALUE:SMRAW') is None:
|
||||
redSrv0.set('RTDATA:VALUE:SMRAW', 1)
|
||||
if redSrv0.get('SETTINGS:POWER:THRESH') is None:
|
||||
redSrv0.set('SETTINGS:POWER:THRESH', 0)
|
||||
if redSrv0.get('SETTINGS:SMOOTHING:FUNCTION') is None:
|
||||
@@ -187,21 +189,38 @@ def calculateValue():
|
||||
# calcolo il valore risultante pulito (senza correzioni)
|
||||
XVal = (float(v2)/float(den))
|
||||
redSrv0.set('RTDATA:VALUE:RAW',round(XVal,decimalsCount))
|
||||
# applicare correzioni (costanti k1*x^2, k2*x e offset)
|
||||
|
||||
# Smoothing EWMA valori "grezzi""
|
||||
strValInRaw = XVal
|
||||
# EWMAx RAW RILEGGO DA REDIS vecchio valore
|
||||
oldValRaw = float(redSrv0.get('RTDATA:VALUE:SMRAW'))
|
||||
if(oldValRaw == 0):
|
||||
oldValRaw = 0.01
|
||||
# se variazione < 50% smooth, altrimenti usa il valore nuovo
|
||||
if((abs(XVal - oldValRaw) / oldValRaw) < 0.5):
|
||||
# effettuo smoothing valore
|
||||
eFact = 3
|
||||
strValInRaw = (XVal/eFact) + (oldValRaw * (eFact-1) / eFact)
|
||||
redSrv0.set('RTDATA:VALUE:SMRAW',round(strValInRaw,decimalsCount))
|
||||
|
||||
# applicazione correzioni (costanti k1*x^2, k2*x e offset)
|
||||
newValue = (float(k1)*float(XVal)*float(XVal))+(float(k2)*float(XVal))+float(offset)
|
||||
redSrv0.set('RTDATA:VALUE:REAL',round(newValue,decimalsCount))
|
||||
|
||||
# Smoothing EWMA valori corretti (fattori k1 k2)
|
||||
strValIn = newValue
|
||||
# EWMA: RILEGGO DA REDIS vecchio valore
|
||||
# EWMA: RILEGGO DA REDIS vecchio valore
|
||||
oldVal = float(redSrv0.get('RTDATA:VALUE:SMOOTHED'))
|
||||
if(oldVal == 0):
|
||||
oldVal = 0.01
|
||||
# se variazione < 50% smooth
|
||||
# se variazione < 50% smooth, altrimenti usa il valore nuovo
|
||||
if((abs(newValue - oldVal) / oldVal) < 0.5):
|
||||
# effettuo smoothing valore
|
||||
eFact = 3
|
||||
strValIn = (newValue/eFact) + (oldVal * (eFact-1) / eFact)
|
||||
redSrv0.set('RTDATA:VALUE:SMOOTHED',round(strValIn,decimalsCount))
|
||||
|
||||
|
||||
# init array
|
||||
smoothFact= int(getRedisVal('SETTINGS:SMOOTHING:FACTOR'))
|
||||
initArray = [0.0] * 8
|
||||
|
||||
Reference in New Issue
Block a user