From eb4efcf9a31a36635b8da1c4f1b86e556344649a Mon Sep 17 00:00:00 2001 From: "marco.locatelli@steamware.net" Date: Tue, 27 Jun 2023 13:06:14 +0200 Subject: [PATCH] 1.8.1 Fix a correzione e media --- sampler/FTSampler.py | 35 ++++++++++++++++++++--------------- server/FTServer.py | 2 +- server/templates/about.html | 4 ++-- 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/sampler/FTSampler.py b/sampler/FTSampler.py index a26293d..f01d3b0 100644 --- a/sampler/FTSampler.py +++ b/sampler/FTSampler.py @@ -185,7 +185,7 @@ def calculateValue(): k1 = getRedisVal('RTDATA:VALUE:K1CONST') k2 = getRedisVal('RTDATA:VALUE:K2CONST') offset = getRedisVal('RTDATA:VALUE:OFFSET') - eFact = getRedisVal('RTDATA:SMOOTHING:EFACT') + eFact = int(getRedisVal('SETTINGS:SMOOTHING:EFACT')) # check val min di 1 x denom EWMA... if(eFact < 1): eFact = 1 @@ -201,17 +201,22 @@ def calculateValue(): strValInRaw = XVal # EWMAx RAW RILEGGO DA REDIS vecchio valore oldValRaw = float(redSrv0.get('RTDATA:VALUE:SMRAW')) - if(oldValRaw == 0): - oldValRaw = 0.01 + #if(oldValRaw == 0): + # oldValRaw = 0.001 # se variazione < 50% smooth, altrimenti usa il valore nuovo - if((abs(XVal - oldValRaw) / oldValRaw) < 0.5): - # effettuo smoothing valore - strValInRaw = (XVal/eFact) + (oldValRaw * (eFact-1) / eFact) + #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)) # 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)) + # 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: @@ -222,12 +227,12 @@ def calculateValue(): strValIn = newValue # EWMA: RILEGGO DA REDIS vecchio valore oldVal = float(redSrv0.get('RTDATA:VALUE:SMOOTHED')) - if(oldVal == 0): - oldVal = 0.01 - # se variazione < 50% smooth, altrimenti usa il valore nuovo - if((abs(newValue - oldVal) / oldVal) < 0.5): - # effettuo smoothing valore - strValIn = (newValue/eFact) + (oldVal * (eFact-1) / eFact) + #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)) # init array @@ -272,8 +277,8 @@ try: # calcolo il delta time dovuto alle esecuzioni delta = endExec - now # attesa viene fatta sempre - waitTime = (int(sampleFreq)*smoothFact)/1000 - delta.microseconds/1000000 - if(waitTime < 0.0): + waitTime = delta.microseconds/1000000 - (int(sampleFreq)*smoothFact)/1000 + if(waitTime > 1000.0): redSrv0.set('SETTINGS:WARNING:EXETIME',1) else: redSrv0.set('SETTINGS:WARNING:EXETIME',0) diff --git a/server/FTServer.py b/server/FTServer.py index 494a256..4107ab3 100644 --- a/server/FTServer.py +++ b/server/FTServer.py @@ -420,7 +420,7 @@ def setSmoothFact(): return redirect("/settings") @flaskApp.route("/api/v1/eFact", methods=['POST']) -def setSmoothFact(): +def setEFact(): eFactor = request.form['EFact'] redSrv0.set('SETTINGS:SMOOTHING:EFACT', eFactor) redSrv0.save() diff --git a/server/templates/about.html b/server/templates/about.html index 7c750ca..0400518 100644 --- a/server/templates/about.html +++ b/server/templates/about.html @@ -25,9 +25,9 @@

FTLogger

- Egalware 2022 + Egalware 2023
- Ver 1.6.2 + Ver 1.8.1