Merge remote-tracking branch 'origin/develop'

This commit is contained in:
Samuele Locatelli
2022-07-08 12:26:04 +02:00
6 changed files with 64 additions and 21 deletions
+30 -8
View File
@@ -7,6 +7,8 @@ import os
import os.path
import FTL.FTLog
from os.path import exists
FTL.FTLog.Write(" FTLogger started")
#configurazione per lavorare su server redis locale
@@ -58,8 +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():
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
@@ -68,10 +72,24 @@ def fileSave():
rawLastLog = datetime.datetime.now()
#format date e time con strftime()
lastLog = rawLastLog.strftime(dateFormat)
try:
# filepath completo
filePath = workingDirectory+"/"+dataFileName
# verifico se file esista
if(exists(filePath)):
outFile = open(workingDirectory+"/"+dataFileName, "a")
except FileNotFoundError:
else:
outFile = open(workingDirectory+"/"+dataFileName, "w+")
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
csvRow = str(lastLog) +";"
# scrivo le letture del canale A
@@ -82,10 +100,14 @@ def fileSave():
chB = getRedisVal('SETTINGS:CHANNEL:B')
chBOut = getRedisVal('RTDATA:OUT:'+str(chB))
csvRow += chBOut+";"
#aggiungo il valore risultante calcolato V1/(V2-V1)
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()
+27 -6
View File
@@ -56,8 +56,12 @@ if redSrv0.get('SETTINGS:LOG:EXETIME') is None:
redSrv0.set('SETTINGS:LOG:EXETIME', 1)
if redSrv0.get('RTDATA:VALUE:SMOOTHED') is None:
redSrv0.set('RTDATA:VALUE:SMOOTHED', 1)
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:
@@ -182,22 +186,41 @@ def calculateValue():
den = abs(float(v1)-float(v2))
if(den < 0.01):
den = 0.01
# calcolo il valore risultante pulito (senza correzioni)
XVal = (float(v2)/float(den))
# applicare costanti k1*x^2, k2*x e offset
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.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
@@ -223,7 +246,7 @@ try:
for counter in range(0,smoothFact,+1):
# leggo gli 8 valori
CHvalue = CH.ADS1256_GetAll()
floatArray = np.array(CHvalue, dtype=np.float)
floatArray = np.array(CHvalue, dtype=float)
dataBox[counter] = floatArray*float(5.0/0x7fffff)
# calcolo e scrittura ogni NUM PERIOD cicli
if counter == (smoothFact-1):
@@ -241,8 +264,6 @@ try:
delta = endExec - now
# attesa viene fatta sempre
waitTime = (int(sampleFreq)*smoothFact)/1000 - delta.microseconds/1000000
#redSrv0.set('SETTINGS:MONITOR:WAITIME',waitTime)
#redSrv0.set('SETTINGS:MONITOR:DELTATIME',str(delta.microseconds/1000))
if(waitTime < 0.0):
redSrv0.set('SETTINGS:WARNING:EXETIME',1)
else:
+2 -1
View File
@@ -26,6 +26,7 @@ led = LED(26)
#assegno ipv4 statico
ipv4 = '10.10.10.210'
#ipv4 = '10.74.82.210'
#definisco directory /data
dataDir='/home/pi/data/'
@@ -131,7 +132,7 @@ def api_channels_all():
'LogFreq' : getRedisVal('SETTINGS:LOG:FREQ'),
'SelProcessing' : getRedisVal('SETTINGS:SMOOTHING:FUNCTION'),
'ResultValue' : getRedisVal('RTDATA:VALUE:SMOOTHED'),
'RealValue' : getRedisVal('RTDATA:VALUE:REAL'),
'RealValue' : getRedisVal('RTDATA:VALUE:SMRAW'),
'Crono' : getRedisVal('SETTINGS:LOG:CRONO'),
'DisplayAlert' : displayWarning
}
+2 -2
View File
@@ -25,11 +25,11 @@
<h4>FT Logger</h4>
</div>
<div class="card-body">
Steamware 2021
Egalware 2022
<br>
Software di lettura e scrittura per canali analogici e digitali
<br>
V 1.3.1
V 1.6.0
</div>
</div>
</main>
+1 -2
View File
@@ -65,13 +65,12 @@
{% endblock %}
</div>
</div>
<!--fine contenuto main, inizio footer (data, ora, logo)-->
<footer class="py-1 bg-light bg-dark text-light fixed-bottom">
<div class="container-fluid">
<div class="d-flex align-items-center justify-content-between small">
<div><span id="ServerTime"></span></div>
<div>&copy; Steamware 2021
<div>&copy; Egalware 2022
</div>
</div>
</div>
+2 -2
View File
@@ -361,11 +361,11 @@
<div class="row">
<div class="col-1"></div>
<div class="col-5">
<strong>Istant: </strong><span class="h5" id="RealValue"></span>
<strong>Media Grezza: </strong><span class="h5" id="RealValue"></span>
<span class="h5" id="CalcMeasure1"></span>
</div>
<div class="col-5">
<strong>Media: </strong><span class="h5" id="ResultValue"></span>
<strong>Media Corretta: </strong><span class="h5" id="ResultValue"></span>
<span class="h5" id="CalcMeasure2"></span>
</div>
<div class="col-1"></div>