Gestione parametro EWMA

This commit is contained in:
marco.locatelli@steamware.net
2023-06-27 10:30:23 +02:00
parent 1853575919
commit 774966bc03
3 changed files with 31 additions and 4 deletions
+7 -2
View File
@@ -68,6 +68,8 @@ if redSrv0.get('SETTINGS:SMOOTHING:FUNCTION') is None:
redSrv0.set('SETTINGS:SMOOTHING:FUNCTION', 0)
if redSrv0.get('SETTINGS:SMOOTHING:FACTOR') is None:
redSrv0.set('SETTINGS:SMOOTHING:FACTOR', 10)
if redSrv0.get('SETTINGS:SMOOTHING:EFACT') is None:
redSrv0.set('SETTINGS:SMOOTHING:EFACT', 3)
if redSrv0.get('SETTINGS:PASSWORD:CURRENT') is None:
redSrv0.set('SETTINGS:PASSWORD:CURRENT',"-")
if redSrv0.get('SETTINGS:FOLDER:CURRENT') is None:
@@ -183,6 +185,11 @@ def calculateValue():
k1 = getRedisVal('RTDATA:VALUE:K1CONST')
k2 = getRedisVal('RTDATA:VALUE:K2CONST')
offset = getRedisVal('RTDATA:VALUE:OFFSET')
eFact = getRedisVal('RTDATA:SMOOTHING:EFACT')
# check val min di 1 x denom EWMA...
if(eFact < 1):
eFact = 1
den = abs(float(v1)-float(v2))
if(den < 0.05):
den = 0.05
@@ -199,7 +206,6 @@ def calculateValue():
# 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))
@@ -221,7 +227,6 @@ def calculateValue():
# 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))
+10
View File
@@ -129,6 +129,7 @@ def api_channels_all():
'RealDateStatus' : getRedisVal('SETTINGS:TIME:REAL'),
'SelPowerChannel' : getRedisVal('SETTINGS:POWER:CH'),
'SmoothFact' : getRedisVal('SETTINGS:SMOOTHING:FACTOR'),
'EFact' : getRedisVal('SETTINGS:SMOOTHING:EFACT'),
'LogFreq' : getRedisVal('SETTINGS:LOG:FREQ'),
'SelProcessing' : getRedisVal('SETTINGS:SMOOTHING:FUNCTION'),
'ResultValue' : getRedisVal('RTDATA:VALUE:SMOOTHED'),
@@ -165,6 +166,7 @@ def api_channels_current():
'Offset' : getRedisVal('RTDATA:VALUE:OFFSET'),
'CalcUMeasure' : getRedisVal('RTDATA:VALUE:UMEASURE'),
'SmoothFact' : getRedisVal('SETTINGS:SMOOTHING:FACTOR'),
'EFact' : getRedisVal('SETTINGS:SMOOTHING:EFACT'),
'ChanThresh' : getRedisVal('SETTINGS:POWER:THRESH'),
'timeSrv' : getRedisVal('RTDATA:TIME:SRV'),
'LogFreq' : getRedisVal('SETTINGS:LOG:FREQ'),
@@ -417,6 +419,14 @@ def setSmoothFact():
# rimando in settings
return redirect("/settings")
@flaskApp.route("/api/v1/eFact", methods=['POST'])
def setSmoothFact():
eFactor = request.form['EFact']
redSrv0.set('SETTINGS:SMOOTHING:EFACT', eFactor)
redSrv0.save()
# rimando in settings
return redirect("/settings")
@flaskApp.route("/api/v1/frequency", methods=['POST'])
def setWriteFrequency():
#funzione set frequenza scrive su redis LOG:FREQ prendendolo dall'input in pagina html con nome LogFreq
+14 -2
View File
@@ -39,6 +39,7 @@
$("#UniMisura").val(result.UniMisura);
$("#ChanThresh").val(result.ChanThresh);
$("#SmoothFact").val(result.SmoothFact);
$("#EFact").val(result.EFact);
$("#CalcUMeasure").val(result.CalcUMeasure);
$("#MinUptime").val(result.MinUptime);
// inizio nascondendo div2 e div3
@@ -417,7 +418,7 @@
</div>
<select class="form-control" id="SelProcessing" onchange="setProcessing(this)">
<option value="0">Nessuno</option>
<option value="1">EWMA</option>
<option value="1">Media</option>
<option value="2">RMS</option>
</select>
</div>
@@ -429,7 +430,18 @@
</div>
<input type="number" min="1" max="40" class="form-control" id="SmoothFact" name="SmoothFact"></input>
<div class="input-group-append">
<input type="submit" value="SET" class="btn btn-success "></input>
<input type="submit" value="SET" class="btn btn-success"></input>
</div>
</div>
</form>
<form class="col-12" method="POST" action="/api/v1/eFact">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">Valore per EWMA: &nbsp;</span>
</div>
<input type="number" min="1" max="200" step="1" class="form-control" id="EFact" name="EFact"></input>
<div class="input-group-append">
<input type="submit" value="SET" class="btn btn-success"></input>
</div>
</div>
</form>