v1.8.3 , fix importante a media e correzione
This commit is contained in:
+19
-37
@@ -193,48 +193,30 @@ def calculateValue():
|
||||
den = abs(float(v1)-float(v2))
|
||||
if(den < 0.05):
|
||||
den = 0.05
|
||||
# calcolo il valore risultante pulito (senza correzioni)
|
||||
# calcolo il valore risultante RealTime pulito (senza correzioni)
|
||||
XVal = (float(v2)/float(den))
|
||||
redSrv0.set('RTDATA:VALUE:RAW',round(XVal,decimalsCount))
|
||||
|
||||
# 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.001
|
||||
# se variazione < 50% smooth, altrimenti usa il valore nuovo
|
||||
#if((abs(XVal - oldValRaw) / oldValRaw) < 0.9):
|
||||
# # effettuo smoothing valore
|
||||
strValInRaw = (XVal/eFact) + (oldValRaw * (eFact-1) / eFact)
|
||||
redSrv0.set('RTDATA:VALUE:SMRAW',round(strValInRaw,decimalsCount))
|
||||
# # correzione fattore di scala K2 su cifre significative
|
||||
# corrDecCount = decimalsCount - int(round(math.log(float(k2),10),0))
|
||||
# if (corrDecCount < 0):
|
||||
# corrDecCount = 0
|
||||
# applicazione correzioni (costanti k1*x^2, k2*x e offset) in RT
|
||||
YVal = (float(k1)*float(XVal)*float(XVal))+(float(k2)*float(XVal))+float(offset)
|
||||
# redSrv0.set('RTDATA:VALUE:REAL',round(YVal,corrDecCount))
|
||||
redSrv0.set('RTDATA:VALUE:REAL',round(YVal,decimalsCount))
|
||||
|
||||
# applicazione correzioni (costanti k1*x^2, k2*x e offset)
|
||||
newValue = (float(k1)*float(XVal)*float(XVal))+(float(k2)*float(XVal))+float(offset)
|
||||
# correzione fattore di scala K2 su cifre significative
|
||||
corrDecCount = decimalsCount - int(round(math.log(float(k2),10),0))
|
||||
if (corrDecCount < 0):
|
||||
corrDecCount = 0
|
||||
#redSrv0.set('RTDATA:VALUE:REAL',round(newValue,decimalsCount))
|
||||
redSrv0.set('RTDATA:VALUE:REAL',round(newValue,corrDecCount))
|
||||
#if(newValue > 0):
|
||||
# redSrv0.set('RTDATA:VALUE:REAL',round(newValue,decimalsCount))
|
||||
#else:
|
||||
# newValue = 300
|
||||
# redSrv0.set('RTDATA:VALUE:REAL',round(newValue,decimalsCount))
|
||||
|
||||
# Smoothing EWMA valori corretti (fattori k1 k2)
|
||||
strValIn = newValue
|
||||
# EWMA: RILEGGO DA REDIS vecchio valore
|
||||
oldVal = float(redSrv0.get('RTDATA:VALUE:SMOOTHED'))
|
||||
#if(oldVal == 0):
|
||||
# oldVal = 0.001 * float(k2)
|
||||
## se variazione < 50% smooth, altrimenti usa il valore nuovo
|
||||
#if((abs(newValue - oldVal) / oldVal) < 0.9):
|
||||
# # effettuo smoothing valore
|
||||
strValIn = (newValue/eFact) + (oldVal * (eFact-1) / eFact)
|
||||
redSrv0.set('RTDATA:VALUE:SMOOTHED',round(strValIn,decimalsCount))
|
||||
# Smoothing EWMA valori "grezzi" (= medio sul passato) --> ottengo valori "X filtrati"
|
||||
# RILEGGO DA REDIS vecchio valore
|
||||
XValOld = float(redSrv0.get('RTDATA:VALUE:SMRAW'))
|
||||
XValEwma = (XVal/eFact) + (XValOld * (eFact-1) / eFact)
|
||||
redSrv0.set('RTDATA:VALUE:SMRAW',round(XValEwma,decimalsCount))
|
||||
|
||||
# applicazione correzioni (costanti k1*x^2, k2*x e offset) sul valore "X filtrato"
|
||||
YValEwma = (float(k1)*float(XValEwma)*float(XValEwma))+(float(k2)*float(XValEwma))+float(offset)
|
||||
# redSrv0.set('RTDATA:VALUE:SMOOTHED',round(YValEwma,corrDecCount))
|
||||
redSrv0.set('RTDATA:VALUE:SMOOTHED',round(YValEwma,decimalsCount))
|
||||
|
||||
# init array
|
||||
smoothFact= int(getRedisVal('SETTINGS:SMOOTHING:FACTOR'))
|
||||
initArray = [0.0] * 8
|
||||
|
||||
Reference in New Issue
Block a user