Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4283f32d33 | |||
| 0e233f5f2d | |||
| 116efb58b5 | |||
| a72456a770 | |||
| d0531476d3 | |||
| 8d9f23ba70 | |||
| 43b32c6b8c | |||
| 3aebe55260 |
+61
-81
@@ -32,22 +32,26 @@ redSamPer='SETTINGS:LOG:EXETIME'
|
||||
redSampleFreq = 'SETTINGS:LOG:FREQ'
|
||||
|
||||
#se non c'è un valore nei campi di redis, popolo il db
|
||||
redSrv0.set('SETTINGS:LOG:STATUS', 0)
|
||||
redSrv0.set('SETTINGS:POWER:OFF', 0)
|
||||
redSrv0.set('SETTINGS:LOG:STATUS',0)
|
||||
redSrv0.set('SETTINGS:POWER:OFF',0)
|
||||
if redSrv0.get('SETTINGS:WARNING:EXETIME') is None:
|
||||
redSrv0.set('SETTINGS:WARNING:EXETIME', 0)
|
||||
if redSrv0.get('RTDATA:EWMA:VETO') is None:
|
||||
redSrv0.set('RTDATA:EWMA:VETO', 0)
|
||||
redSrv0.set('SETTINGS:WARNING:EXETIME',0)
|
||||
if redSrv0.get('SETTINGS:LOG:FREQ') is None:
|
||||
redSrv0.set('SETTINGS:LOG:FREQ', 20)
|
||||
redSrv0.set('SETTINGS:LOG:FREQ', 100)
|
||||
if redSrv0.get('SETTINGS:DECIMALS:COUNT') is None:
|
||||
redSrv0.set('SETTINGS:DECIMALS:COUNT', 3)
|
||||
if redSrv0.get('SETTINGS:DECIMALS:DISPLAY') is None:
|
||||
redSrv0.set('SETTINGS:DECIMALS:DISPLAY', 1)
|
||||
if redSrv0.get('RTDATA:VALUE:K1CONST') is None:
|
||||
redSrv0.set('RTDATA:VALUE:K1CONST', 0)
|
||||
redSrv0.set('SETTINGS:DECIMALS:COUNT',1)
|
||||
if redSrv0.get('RTDATA:VALUE:K6CONST') is None:
|
||||
redSrv0.set('RTDATA:VALUE:K6CONST', 0)
|
||||
if redSrv0.get('RTDATA:VALUE:K5CONST') is None:
|
||||
redSrv0.set('RTDATA:VALUE:K5CONST', 0)
|
||||
if redSrv0.get('RTDATA:VALUE:K4CONST') is None:
|
||||
redSrv0.set('RTDATA:VALUE:K4CONST', 0)
|
||||
if redSrv0.get('RTDATA:VALUE:K3CONST') is None:
|
||||
redSrv0.set('RTDATA:VALUE:K3CONST', 0)
|
||||
if redSrv0.get('RTDATA:VALUE:K2CONST') is None:
|
||||
redSrv0.set('RTDATA:VALUE:K2CONST', 1)
|
||||
redSrv0.set('RTDATA:VALUE:K2CONST', 0)
|
||||
if redSrv0.get('RTDATA:VALUE:K1CONST') is None:
|
||||
redSrv0.set('RTDATA:VALUE:K1CONST', 1)
|
||||
if redSrv0.get('RTDATA:VALUE:OFFSET') is None:
|
||||
redSrv0.set('RTDATA:VALUE:OFFSET', 0)
|
||||
if redSrv0.get('SETTINGS:POWER:UPTIME') is None:
|
||||
@@ -69,23 +73,21 @@ if redSrv0.get('RTDATA:VALUE:SMRAW') is None:
|
||||
if redSrv0.get('SETTINGS:POWER:THRESH') is None:
|
||||
redSrv0.set('SETTINGS:POWER:THRESH', 0)
|
||||
if redSrv0.get('SETTINGS:SMOOTHING:FUNCTION') is None:
|
||||
redSrv0.set('SETTINGS:SMOOTHING:FUNCTION', 2)
|
||||
redSrv0.set('SETTINGS:SMOOTHING:FUNCTION', 0)
|
||||
if redSrv0.get('SETTINGS:SMOOTHING:FACTOR') is None:
|
||||
redSrv0.set('SETTINGS:SMOOTHING:FACTOR', 25)
|
||||
if redSrv0.get('SETTINGS:SMOOTHING:EFACT') is None:
|
||||
redSrv0.set('SETTINGS:SMOOTHING:EFACT', 3)
|
||||
redSrv0.set('SETTINGS:SMOOTHING:FACTOR', 10)
|
||||
if redSrv0.get('SETTINGS:PASSWORD:CURRENT') is None:
|
||||
redSrv0.set('SETTINGS:PASSWORD:CURRENT', "-")
|
||||
redSrv0.set('SETTINGS:PASSWORD:CURRENT',"-")
|
||||
if redSrv0.get('SETTINGS:FOLDER:CURRENT') is None:
|
||||
redSrv0.set('SETTINGS:FOLDER:CURRENT', "")
|
||||
if redSrv0.get('SETTINGS:SELECTED_CH') is None:
|
||||
redSrv0.set('SETTINGS:SELECTED_CH', 0)
|
||||
redSrv0.set('SETTINGS:SELECTED_CH',0)
|
||||
if redSrv0.get('SETTINGS:CHANNEL:A') is None:
|
||||
redSrv0.set('SETTINGS:CHANNEL:A', 2)
|
||||
redSrv0.set('SETTINGS:CHANNEL:A',2)
|
||||
if redSrv0.get('SETTINGS:CHANNEL:B') is None:
|
||||
redSrv0.set('SETTINGS:CHANNEL:B', 3)
|
||||
redSrv0.set('SETTINGS:CHANNEL:B',3)
|
||||
if redSrv0.get('RTDATA:SESSION:NAME') is None:
|
||||
redSrv0.set('RTDATA:SESSION:NAME', "")
|
||||
redSrv0.set('RTDATA:SESSION:NAME',"")
|
||||
|
||||
for numCh in range(0,8,+1):
|
||||
if redSrv0.get('SETTINGS:IN:MAX:'+str(numCh)) is None:
|
||||
@@ -139,27 +141,6 @@ def redisSave(CHvalues):
|
||||
roundedOut = round(scaleVal(CHvalues[chIndex], chIndex), decimalsCount)
|
||||
redSrv0.set(redAreaOut,roundedOut)
|
||||
|
||||
|
||||
#funzione di gestione dei valori grezzi di ingresso dei canali x taratura min/MAX
|
||||
def setupScale(CHvalues):
|
||||
decimalsCount = int(getRedisVal('SETTINGS:DECIMALS:COUNT'))
|
||||
redLastLog = 'RTDATA:TIME:LOG'
|
||||
dateFormat ="%d/%m/%Y %H:%M:%S"
|
||||
rawLastLog = datetime.datetime.now()
|
||||
lastLog = rawLastLog.strftime(dateFormat)
|
||||
redSrv0.set(redLastLog,str(lastLog))
|
||||
for chIndex in range(0,8,+1):
|
||||
redAreaIn = 'RTDATA:CH:'+str(chIndex)
|
||||
redAreaOut = 'RTDATA:OUT:'+str(chIndex)
|
||||
strValIn = float("%.4f" % (CHvalues[chIndex]))
|
||||
#salvo valore IN filtrato
|
||||
redSrv0.set(redAreaIn,round(strValIn,decimalsCount))
|
||||
# salvo i valori scalati in OUT
|
||||
roundedOut = round(scaleVal(CHvalues[chIndex], chIndex), decimalsCount)
|
||||
redSrv0.set(redAreaOut,roundedOut)
|
||||
|
||||
|
||||
|
||||
#funzione di refresh valori scalati
|
||||
def scaleVal(inValue, chIndex):
|
||||
#rileggo da redis i valori min/max secondo chIndex
|
||||
@@ -207,51 +188,52 @@ def calculateValue():
|
||||
ch2 = getRedisVal('SETTINGS:CHANNEL:B')
|
||||
v1 = getRedisVal('RTDATA:OUT:' + ch1)
|
||||
v2 = getRedisVal('RTDATA:OUT:' + ch2)
|
||||
k1 = getRedisVal('RTDATA:VALUE:K1CONST')
|
||||
k6 = getRedisVal('RTDATA:VALUE:K6CONST')
|
||||
k5 = getRedisVal('RTDATA:VALUE:K5CONST')
|
||||
k4 = getRedisVal('RTDATA:VALUE:K4CONST')
|
||||
k3 = getRedisVal('RTDATA:VALUE:K3CONST')
|
||||
k2 = getRedisVal('RTDATA:VALUE:K2CONST')
|
||||
k1 = getRedisVal('RTDATA:VALUE:K1CONST')
|
||||
offset = getRedisVal('RTDATA:VALUE:OFFSET')
|
||||
eFact = int(getRedisVal('SETTINGS:SMOOTHING:EFACT'))
|
||||
# check val min di 1 x denom EWMA...
|
||||
if(eFact < 1):
|
||||
eFact = 1
|
||||
# fix valore minimo denominatore
|
||||
den = abs(float(v1)-float(v2))
|
||||
if(den < 0.05):
|
||||
den = 0.05
|
||||
redSrv0.set('RTDATA:WARNING:DENOMZERO', 1)
|
||||
else:
|
||||
redSrv0.set('RTDATA:WARNING:DENOMZERO', 0)
|
||||
# calcolo il valore risultante RealTime pulito (senza correzioni)
|
||||
# calcolo il valore risultante pulito (senza correzioni)
|
||||
XVal = (float(v2)/float(den))
|
||||
redSrv0.set('RTDATA:VALUE:RAW',round(XVal,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))
|
||||
# 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))
|
||||
|
||||
# procedo SOLO SE il veto EWMA non è presente...
|
||||
eVeto = getRedisVal('RTDATA:EWMA:VETO')
|
||||
if (redSrv0.get('RTDATA:EWMA:VETO') is None):
|
||||
# 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)
|
||||
else:
|
||||
# NON faccio nulla
|
||||
XValEwma = XVal
|
||||
|
||||
# salvo XVal!
|
||||
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))
|
||||
# applicazione correzioni fino al quinto grado (costanti k e offset)
|
||||
newValue = (float(k6)*pow(float(XVal),6)) + (float(k5)*pow(float(XVal),5)) + (float(k4)*pow(float(XVal),4)) + (float(k3)*pow(float(XVal),3)) + (float(k2)*pow(float(XVal),2)) + (float(k1)*float(XVal)) + float(offset)
|
||||
|
||||
#salvo in redis nuovo valore corretto e arrotondato
|
||||
redSrv0.set('RTDATA:VALUE:REAL',round(newValue,decimalsCount))
|
||||
|
||||
# Smoothing EWMA valori corretti
|
||||
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
|
||||
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
|
||||
@@ -285,8 +267,6 @@ try:
|
||||
meanValues = calcMean(dataBox)
|
||||
#salvo valori
|
||||
redisSave(meanValues)
|
||||
#verifica se sono in fase di salvataggio min/max x taratura valori ingresso
|
||||
setupScale(meanValues)
|
||||
# controllo soglia spegnimento
|
||||
checkPowerOff()
|
||||
# calcolo il valore k*[V2/(V1-V2)] + offset
|
||||
@@ -296,8 +276,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.001):
|
||||
waitTime = (int(sampleFreq)*smoothFact)/1000 - delta.microseconds/1000000
|
||||
if(waitTime < 0.0):
|
||||
redSrv0.set('SETTINGS:WARNING:EXETIME',1)
|
||||
else:
|
||||
redSrv0.set('SETTINGS:WARNING:EXETIME',0)
|
||||
|
||||
+20
-57
@@ -89,20 +89,12 @@ def about():
|
||||
@flaskApp.route("/api/v1/channels/all", methods=['GET'])
|
||||
def api_channels_all():
|
||||
numCh = getRedisVal('SETTINGS:SELECTED_CH')
|
||||
# check exe time vs sample time
|
||||
exeWarning = getRedisVal('SETTINGS:WARNING:EXETIME')
|
||||
displayWarning = 0
|
||||
if exeWarning == "1":
|
||||
displayWarning = 1
|
||||
elif exeWarning == "0":
|
||||
displayWarning = 0
|
||||
#check demon warning
|
||||
denZero = getRedisVal('RTDATA:WARNING:DENOMZERO')
|
||||
displayDenomWarning = 0
|
||||
if denZero == "1":
|
||||
displayDenomWarning = 1
|
||||
elif denZero == "0":
|
||||
displayDenomWarning = 0
|
||||
CH = [0,0,0,0,0,0,0,0]
|
||||
OUT = [0,0,0,0,0,0,0,0]
|
||||
OUTMIN = [0,0,0,0,0,0,0,0]
|
||||
@@ -118,7 +110,6 @@ def api_channels_all():
|
||||
'timeSrv' : getRedisVal('RTDATA:TIME:SRV'),
|
||||
'WriteFreq' : getRedisVal('SETTINGS:WRITE:FREQ'),
|
||||
'DecimalsCount' : getRedisVal('SETTINGS:DECIMALS:COUNT'),
|
||||
'DecimalsDisplay' : getRedisVal('SETTINGS:DECIMALS:DISPLAY'),
|
||||
'Status' : getRedisVal('SETTINGS:LOG:STATUS'),
|
||||
'Channels': CH,
|
||||
'Outs': OUT,
|
||||
@@ -138,15 +129,12 @@ 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'),
|
||||
'RealValue' : getRedisVal('RTDATA:VALUE:SMRAW'),
|
||||
'Crono' : getRedisVal('SETTINGS:LOG:CRONO'),
|
||||
'DisplayAlert' : displayWarning,
|
||||
'DisplayDenomAlert' : displayDenomWarning,
|
||||
'EwmaEnab' : (redSrv0.get('RTDATA:EWMA:VETO') is None)
|
||||
'DisplayAlert' : displayWarning
|
||||
}
|
||||
# restituisce in formato json i dati letti da redis
|
||||
return jsonify(channelsData)
|
||||
@@ -172,17 +160,19 @@ def api_channels_current():
|
||||
#funzione legge direttamente da redis, ritorna jsonify
|
||||
result = {
|
||||
'numCh' : numCh,
|
||||
'CostanteK1' : getRedisVal('RTDATA:VALUE:K1CONST'),
|
||||
'CostanteK6' : getRedisVal('RTDATA:VALUE:K6CONST'),
|
||||
'CostanteK5' : getRedisVal('RTDATA:VALUE:K5CONST'),
|
||||
'CostanteK4' : getRedisVal('RTDATA:VALUE:K4CONST'),
|
||||
'CostanteK3' : getRedisVal('RTDATA:VALUE:K3CONST'),
|
||||
'CostanteK2' : getRedisVal('RTDATA:VALUE:K2CONST'),
|
||||
'CostanteK1' : getRedisVal('RTDATA:VALUE:K1CONST'),
|
||||
'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'),
|
||||
'DecimalsCount' : getRedisVal('SETTINGS:DECIMALS:COUNT'),
|
||||
'DecimalsDisplay' : getRedisVal('SETTINGS:DECIMALS:DISPLAY'),
|
||||
'WriteFreq' : getRedisVal('SETTINGS:WRITE:FREQ'),
|
||||
'TimeBeforeWrite' : getRedisVal('SETTINGS:LOG:WAITIME'),
|
||||
'CurrIn' : getRedisVal('RTDATA:CH:'+str(numCh)),
|
||||
@@ -243,8 +233,6 @@ def start_log():
|
||||
workingDirectory = (dataDir+currentFolder)
|
||||
if workingDirectory != dataDir:
|
||||
redSrv0.set('SETTINGS:LOG:STATUS', 1)
|
||||
redSrv0.set('RTDATA:EWMA:VETO', 1)
|
||||
redSrv0.expire('RTDATA:EWMA:VETO', 2)
|
||||
#data e time ora
|
||||
lastDate = datetime.now()
|
||||
#formato per data time nomefile: YYYYddmm_HMS
|
||||
@@ -260,8 +248,6 @@ def start_log():
|
||||
workingDirectory = (dataDir+currentFolder)
|
||||
os.mkdir(workingDirectory)
|
||||
redSrv0.set('SETTINGS:LOG:STATUS', 1)
|
||||
redSrv0.set('RTDATA:EWMA:VETO', 1)
|
||||
redSrv0.expire('RTDATA:EWMA:VETO', 2)
|
||||
#data e time ora
|
||||
lastDate = datetime.now()
|
||||
#formato per data time nomefile: YYYYddmm_HMS
|
||||
@@ -362,20 +348,6 @@ def insertPassword():
|
||||
redSrv0.set('SETTINGS:PASSWORD:CURRENT', currentPassword, ex=3600)
|
||||
return redirect("/settings")
|
||||
|
||||
@flaskApp.route("/api/v1/setup/setupValues", methods=['PUT'])
|
||||
def setupValues():
|
||||
redSrv0.set('SETTINGS:SMOOTHING:FACTOR', 100)
|
||||
redSrv0.set('SETTINGS:LOG:FREQ', 10)
|
||||
redSrv0.save()
|
||||
return redirect("/settings")
|
||||
|
||||
@flaskApp.route("/api/v1/setup/workingValues", methods=['PUT'])
|
||||
def workingValues():
|
||||
redSrv0.set('SETTINGS:SMOOTHING:FACTOR', 25)
|
||||
redSrv0.set('SETTINGS:LOG:FREQ', 20)
|
||||
redSrv0.save()
|
||||
return redirect("/settings")
|
||||
|
||||
@flaskApp.route("/api/v1/setup/saveInMin", methods=['PUT'])
|
||||
def setupInMin():
|
||||
# devo leggere il channel attualmente selezionato
|
||||
@@ -449,52 +421,43 @@ def setSmoothFact():
|
||||
# rimando in settings
|
||||
return redirect("/settings")
|
||||
|
||||
@flaskApp.route("/api/v1/eFact", methods=['POST'])
|
||||
def setEFact():
|
||||
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
|
||||
newLogFrequency = request.form['LogFreq']
|
||||
redSrv0.set('SETTINGS:LOG:FREQ', newLogFrequency)
|
||||
newWriteFrequency = request.form['WriteFreq']
|
||||
redSrv0.set('SETTINGS:WRITE:FREQ', newWriteFrequency)
|
||||
newLogFrequency = request.form['LogFreq']
|
||||
redSrv0.set('SETTINGS:LOG:FREQ', newLogFrequency)
|
||||
timeBeforeWrite = request.form['TimeBeforeWrite']
|
||||
redSrv0.set('SETTINGS:LOG:WAITIME', timeBeforeWrite)
|
||||
redSrv0.save()
|
||||
# rimando in settings
|
||||
return redirect("/settings")
|
||||
|
||||
@flaskApp.route("/api/v1/decimalsCount", methods=['POST'])
|
||||
@flaskApp.route("/api/v1/decimals", methods=['POST'])
|
||||
def setDecimalsCount():
|
||||
#funzione set decimali per i calcoli, scrive su SETTINGS:DECIMALS:COUNT
|
||||
#funzione set decimali, scrive su SETTINGS:DECIMALS:COUNT
|
||||
newDecimalsCount = request.form['DecimalsCount']
|
||||
redSrv0.set('SETTINGS:DECIMALS:COUNT', newDecimalsCount)
|
||||
redSrv0.save()
|
||||
# rimando in settings
|
||||
return redirect("/settings")
|
||||
|
||||
@flaskApp.route("/api/v1/decimalsDisplay", methods=['POST'])
|
||||
def setDecimalsDisplay():
|
||||
#funzione set decimali da mostrare, scrive su SETTINGS:DECIMALS:DISPLAY
|
||||
newDecimalsDisplay = request.form['DecimalsDisplay']
|
||||
redSrv0.set('SETTINGS:DECIMALS:DISPLAY', newDecimalsDisplay)
|
||||
redSrv0.save()
|
||||
# rimando in settings
|
||||
return redirect("/settings")
|
||||
|
||||
@flaskApp.route("/api/v1/kconst", methods=['POST'])
|
||||
def setKConst():
|
||||
#scrive su redis la costante K
|
||||
newK1Const = request.form['K1Const']
|
||||
redSrv0.set('RTDATA:VALUE:K1CONST', newK1Const)
|
||||
newK6Const = request.form['K6Const']
|
||||
redSrv0.set('RTDATA:VALUE:K6CONST', newK6Const)
|
||||
newK5Const = request.form['K5Const']
|
||||
redSrv0.set('RTDATA:VALUE:K5CONST', newK5Const)
|
||||
newK4Const = request.form['K4Const']
|
||||
redSrv0.set('RTDATA:VALUE:K4CONST', newK4Const)
|
||||
newK3Const = request.form['K3Const']
|
||||
redSrv0.set('RTDATA:VALUE:K3CONST', newK3Const)
|
||||
newK2Const = request.form['K2Const']
|
||||
redSrv0.set('RTDATA:VALUE:K2CONST', newK2Const)
|
||||
newK1Const = request.form['K1Const']
|
||||
redSrv0.set('RTDATA:VALUE:K1CONST', newK1Const)
|
||||
newOffset = request.form['Offset']
|
||||
redSrv0.set('RTDATA:VALUE:OFFSET', newOffset)
|
||||
redSrv0.save()
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
}
|
||||
}});
|
||||
};
|
||||
|
||||
</script>
|
||||
<div class="card my-2">
|
||||
<div class="card-header">
|
||||
@@ -26,7 +27,7 @@
|
||||
<div class="card-body">
|
||||
Egalware 2023
|
||||
<br>
|
||||
V 1.8.9
|
||||
Ver 1.7.1
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
@@ -46,32 +46,22 @@
|
||||
<div id="main">
|
||||
<div class="container-fluid">
|
||||
<div id="Div0">
|
||||
<div class="card my-2">
|
||||
<div class="card-header">
|
||||
<div class="card col-12 my-2">
|
||||
<div class="row card-header">
|
||||
<strong>Data e ora</strong>
|
||||
</div>
|
||||
<div class="card-body p-1">
|
||||
<div class="row">
|
||||
<div class="col-12 input-group my-2">
|
||||
<div class="input-group-prepend">
|
||||
<label for="dateTimeInput" class="input-group-text">Data Interna: </label>
|
||||
</div>
|
||||
<span id="ServerTime" class="form-control"></span>
|
||||
<div class="card-body">
|
||||
<div class="col-12 row input-group my-2">
|
||||
<label for="dateTimeInput" class="input-group-text col-4">Data Interna: </label>
|
||||
<div class="col-8"><span id="ServerTime" class="input-group-text"></span></div>
|
||||
</div>
|
||||
<form class="col-12" method="POST" action="/api/v1/setup/dateTime">
|
||||
<div class="row input-group my-2">
|
||||
<label for="dateTimeInput" class="input-group-text col-4">Imposta Data: </label>
|
||||
<input type="datetime-local" class="col-6" id="dateTimeInput" name="dateTimeInput">
|
||||
<input type="submit" value="SET" class="btn btn-success col-2">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<form class="col-12" method="POST" action="/api/v1/setup/dateTime">
|
||||
<div class="input-group my-2">
|
||||
<div class="input-group-prepend">
|
||||
<label for="dateTimeInput" class="input-group-text">Imposta Data: </label>
|
||||
</div>
|
||||
<input type="datetime-local" class="form-control" id="dateTimeInput" name="dateTimeInput">
|
||||
<div class="input-group-append">
|
||||
<input type="submit" value="SET" class="btn btn-success">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -80,15 +70,14 @@
|
||||
</div>
|
||||
</div>
|
||||
<!--fine contenuto main, inizio footer (data, ora, logo)-->
|
||||
<footer class="py-1 bg-dark text-light text-center fixed-bottom">
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
V 1.8.9
|
||||
</div>
|
||||
<div class="col-6">
|
||||
© Egalware 2023
|
||||
</div>
|
||||
<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>© Egalware 2022
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -15,26 +15,26 @@
|
||||
timeoutFast = setInterval(dataRefresh, intTime);
|
||||
timeoutSlow = setInterval(fixTables, intTimeSlow);
|
||||
|
||||
function fixFloat(actVal, numDisplay)
|
||||
function fixFloat(actVal, numCount)
|
||||
{
|
||||
return parseFloat(actVal).toFixed(numDisplay)
|
||||
return parseFloat(actVal).toFixed(numCount)
|
||||
}
|
||||
|
||||
function dataRefresh() {
|
||||
// scarico i dati aggioranti
|
||||
$.ajax({url: "/api/v1/channels/all", success: function(result){
|
||||
|
||||
numDisplay = parseInt(result.DecimalsDisplay)
|
||||
numCount = parseInt(result.DecimalsCount)
|
||||
var divWidth = document.getElementById("divChA").offsetWidth
|
||||
|
||||
// compilo i dati scaricati
|
||||
$("#SelChannelA").html(result.ChA);
|
||||
$("#OutputA").html(fixFloat(result.Outs[result.ChA],numDisplay));
|
||||
$("#OutputA").html(fixFloat(result.Outs[result.ChA],numCount));
|
||||
|
||||
setGaugeA(divWidth,result.Outs[result.ChA],result.Outmin[result.ChA],result.Outmax[result.ChA]);
|
||||
|
||||
$("#SelChannelB").html(result.ChB);
|
||||
$("#OutputB").html(fixFloat(result.Outs[result.ChB],numDisplay));
|
||||
$("#OutputB").html(fixFloat(result.Outs[result.ChB],numCount));
|
||||
|
||||
setGaugeB(divWidth,result.Outs[result.ChB],result.Outmin[result.ChB],result.Outmax[result.ChB]);
|
||||
|
||||
@@ -42,8 +42,8 @@
|
||||
$("#ServerTime").html(result.timeSrv);
|
||||
$("#LastSessionName").html(result.LastSessionName);
|
||||
$("#CurrentFolder").html(result.CurrentWorkFolder);
|
||||
$("#ResultValue").html(fixFloat(result.ResultValue,numDisplay));
|
||||
$("#RealValue").html(fixFloat(result.RealValue,numDisplay));
|
||||
$("#ResultValue").html(result.ResultValue);
|
||||
$("#RealValue").html(result.RealValue);
|
||||
$("#Crono").html(result.Crono);
|
||||
|
||||
if(result.GateOpen == "0")
|
||||
@@ -77,21 +77,12 @@
|
||||
{
|
||||
$("#btnStart").show();
|
||||
$("#btnStop").hide();
|
||||
$("#EwmaVeto").hide();
|
||||
}
|
||||
|
||||
else if(result.Status == "1")
|
||||
{
|
||||
$("#btnStart").hide();
|
||||
$("#btnStop").show();
|
||||
// mostro se ci sia veto EWMA...
|
||||
if (result.EwmaEnab) {
|
||||
$("#EwmaVeto").hide();
|
||||
}
|
||||
else
|
||||
{
|
||||
$("#EwmaVeto").show();
|
||||
}
|
||||
}
|
||||
|
||||
// se real date status non è stato inserito, mostro div0 che lo chiede
|
||||
@@ -106,15 +97,6 @@
|
||||
$("#ExeWarning").show();
|
||||
}
|
||||
|
||||
// controllo i due warning del denominatore
|
||||
$("#DenomWarning01").hide();
|
||||
$("#DenomWarning02").hide();
|
||||
if (result.DisplayDenomAlert == "1") {
|
||||
$("#DenomWarning01").show();
|
||||
$("#DenomWarning02").show();
|
||||
}
|
||||
|
||||
|
||||
//scarico unità di misura dei canali mostrati
|
||||
$("#UniMisuA").html(result.UniMeasure[result.ChA]);
|
||||
$("#UniMisuB").html(result.UniMeasure[result.ChB]);
|
||||
@@ -122,7 +104,6 @@
|
||||
$("#CalcMeasure2").html(result.CalcUMeasure);
|
||||
$("#SmoothFact").html(result.SmoothFact);
|
||||
$("#LogFreq").html(result.LogFreq);
|
||||
$("#RecPeriod").html(result.SmoothFact*result.LogFreq);
|
||||
}});
|
||||
// A ogni giro di data refresh fix di tabella cartelle e tabella file
|
||||
};
|
||||
@@ -369,75 +350,30 @@
|
||||
<div class="card text-center">
|
||||
<div class="card-header text-center">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<span class="badge badge-warning" id="DenomWarning01">
|
||||
<img src="../static/img/exclamation-triangle-fill.svg" height="10" widht="10"></img>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-3"></div>
|
||||
<div class="col-6">
|
||||
<strong>Risultante B/(A-B)</strong>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<span class="badge badge-warning" id="DenomWarning02">
|
||||
<img src="../static/img/exclamation-triangle-fill.svg" height="10" widht="10"></img>
|
||||
</span>
|
||||
<strong>Risultante B/(A-B) </strong>
|
||||
</div>
|
||||
<div class="col-3"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
Media Grezza:
|
||||
</div>
|
||||
<div class="col-6">
|
||||
Media Corretta:
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<span class="h5" id="RealValue"></span>
|
||||
<div class="col-1"></div>
|
||||
<div class="col-5">
|
||||
<strong>Media Grezza: </strong><span class="h5" id="RealValue"></span>
|
||||
<span class="h5" id="CalcMeasure1"></span>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<span class="h5" id="ResultValue"></span>
|
||||
<div class="col-5">
|
||||
<strong>Media Corretta: </strong><span class="h5" id="ResultValue"></span>
|
||||
<span class="h5" id="CalcMeasure2"></span>
|
||||
</div>
|
||||
<div class="col-1"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-xl-6">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-3 text-center">
|
||||
Smooth Factor:
|
||||
</div>
|
||||
<div class="col-3 text-center">
|
||||
Sample Period:
|
||||
</div>
|
||||
<div class="col-3 text-center">
|
||||
Record Period:
|
||||
</div>
|
||||
<div class="col-3 text-center">
|
||||
System Load:
|
||||
</div>
|
||||
<div class="col-3 text-center">
|
||||
<span class="h5" id="SmoothFact"></span>
|
||||
</div>
|
||||
<div class="col-3 text-center">
|
||||
<span class="h5" id="LogFreq"></span> ms
|
||||
</div>
|
||||
<div class="col-3 text-center">
|
||||
<span class="h5" id="RecPeriod"></span> ms
|
||||
</div>
|
||||
<div class="col-3 text-center">
|
||||
<span class="badge badge-warning" id="ExeWarning">
|
||||
<img src="../static/img/exclamation-triangle-fill.svg" height="16" widht="16"></img>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-xl-6">
|
||||
<div class="card my-2">
|
||||
<div id="Div7" class="card-header">
|
||||
@@ -445,9 +381,6 @@
|
||||
<div class="col-5">
|
||||
<button id="btnStart" type="button" class="btn btn-success btn-block" style="font-size: 110%" onclick="startLog()">
|
||||
<img src="../static/img/play-fill.svg" height="24" width="24"> Inizia Scrittura</button>
|
||||
<span class="badge badge-success" id="EwmaVeto">
|
||||
<img src="../static/img/exclamation-triangle-fill.svg" height="20" widht="20"></img>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-2 badge badge-dark text-light text-center">
|
||||
<em><span class="h5" id="Crono"></span></em>
|
||||
@@ -494,9 +427,24 @@
|
||||
<p class="text-center" id="showData"></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-5">
|
||||
Smooth Factor: <span class="h5" id="SmoothFact"></span>
|
||||
</div>
|
||||
<div class="col-5">
|
||||
Sample Period: <span class="h5" id="LogFreq"></span> ms
|
||||
</div>
|
||||
<span class="badge badge-warning" id="ExeWarning">
|
||||
<img src="../static/img/exclamation-triangle-fill.svg" height="20" widht="20"></img>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
+258
-306
@@ -20,44 +20,41 @@
|
||||
$.ajax({url: "/api/v1/channels/current", success: function(result){
|
||||
// compilo i dati scaricati
|
||||
numCount = parseInt(result.DecimalsCount)
|
||||
numDisplay = parseInt(result.DecimalsDisplay)
|
||||
$("#CurrIn").html(fixFloat(result.CurrIn,numCount));
|
||||
$("#CurrOut").html(fixFloat(result.CurrOut, numCount));
|
||||
$("#LogFreq").val(result.LogFreq);
|
||||
$("#WriteFreq").val(result.WriteFreq);
|
||||
$("#TimeBeforeWrite").val(result.TimeBeforeWrite);
|
||||
$("#DecimalsCount").val(result.DecimalsCount);
|
||||
$("#DecimalsDisplay").val(result.DecimalsDisplay);
|
||||
$("#ServerTime").html(result.timeSrv);
|
||||
$("#ddlChannels").val(result.numCh);
|
||||
$("#MinOut").val(result.MinOut);
|
||||
$("#MaxOut").val(result.MaxOut);
|
||||
$("#MinIn").val(result.MinIn);
|
||||
$("#MaxIn").val(result.MaxIn);
|
||||
$("#K1Const").val(result.CostanteK1);
|
||||
$("#K6Const").val(result.CostanteK6);
|
||||
$("#K5Const").val(result.CostanteK5);
|
||||
$("#K4Const").val(result.CostanteK4);
|
||||
$("#K3Const").val(result.CostanteK3);
|
||||
$("#K2Const").val(result.CostanteK2);
|
||||
$("#K1Const").val(result.CostanteK1);
|
||||
$("#Offset").val(result.Offset);
|
||||
$("#CurrentFolder").html(result.CurrentWorkFolder);
|
||||
$("#UniMisura").val(result.UniMisura);
|
||||
$("#ChanThresh").val(result.ChanThresh);
|
||||
$("#SmoothFact").val(result.SmoothFact);
|
||||
$("#EFact").val(result.EFact);
|
||||
$("#CalcUMeasure").val(result.CalcUMeasure);
|
||||
$("#MinUptime").val(result.MinUptime);
|
||||
$("#RecPeriod").html(result.SmoothFact*result.LogFreq);
|
||||
// inizio nascondendo div2 e div3
|
||||
$("#Div1").show();
|
||||
$("#Div2").hide();
|
||||
$("#Div3").hide();
|
||||
if(result.ShowDiv02 == "1")
|
||||
{
|
||||
$("#Div2").show();
|
||||
$("#Div1").hide();
|
||||
}
|
||||
if(result.ShowDiv03 == "1")
|
||||
{
|
||||
$("#Div3").show();
|
||||
$("#Div1").hide();
|
||||
}
|
||||
}});
|
||||
}
|
||||
@@ -66,7 +63,6 @@
|
||||
$.ajax({url: "/api/v1/channels/current", success: function(result){
|
||||
// compilo i dati scaricati
|
||||
numCount = parseInt(result.DecimalsCount)
|
||||
numDisplay = parseInt(result.DecimalsDisplay)
|
||||
$("#CurrIn").html(fixFloat(result.CurrIn,numCount));
|
||||
$("#CurrOut").html(fixFloat(result.CurrOut, numCount));
|
||||
$("#LoggerTime").html(result.timeLog);
|
||||
@@ -81,7 +77,6 @@
|
||||
$.ajax({url: "/api/v1/channels/all", success: function(result){
|
||||
|
||||
numCount = parseInt(result.DecimalsCount)
|
||||
numDisplay = parseInt(result.DecimalsDisplay)
|
||||
$("#SelChannelA").val(result.ChA);
|
||||
$("#ChannelA").html(fixFloat(result.Channels[result.ChA],numCount+1));
|
||||
$("#OutputA").html(fixFloat(result.Outs[result.ChA],numCount));
|
||||
@@ -95,7 +90,6 @@
|
||||
$("#LogFrequency").html(result.LogFreq);
|
||||
$("#WriteFrequency").html(result.WriteFreq);
|
||||
$("#DecimalsCount").html(result.DecimalsCount);
|
||||
$("#DecimalsDisplay").html(result.DecimalsDisplay);
|
||||
$("#ServerTime").html(result.timeSrv);
|
||||
$("#ChanScaleMin").html(result.ChScaleMin);
|
||||
$("#ChanScaleMax").html(result.ChScaleMax);
|
||||
@@ -105,34 +99,6 @@
|
||||
}});
|
||||
};
|
||||
|
||||
function setupValues(){
|
||||
$.ajax({
|
||||
type: 'PUT'
|
||||
,url: "/api/v1/setup/setupValues"
|
||||
,data: ""
|
||||
,success: function(){
|
||||
alert('Setup Values');
|
||||
}
|
||||
})
|
||||
refreshInput();
|
||||
refreshSettings();
|
||||
dataRefresh();
|
||||
};
|
||||
|
||||
function workingValues(){
|
||||
$.ajax({
|
||||
type: 'PUT'
|
||||
,url: "/api/v1/setup/workingValues"
|
||||
,data: ""
|
||||
,success: function(){
|
||||
alert('Working Values');
|
||||
}
|
||||
})
|
||||
refreshInput();
|
||||
refreshSettings();
|
||||
dataRefresh();
|
||||
};
|
||||
|
||||
function saveMin(){
|
||||
$.ajax({
|
||||
type: 'PUT'
|
||||
@@ -214,7 +180,7 @@
|
||||
});
|
||||
};
|
||||
|
||||
//funzione Settings Reset chiede conferma prima di flushare DB redis
|
||||
//funzione powerOff: chiede conferma per spegnimento.
|
||||
function settingsReset(){
|
||||
var R = confirm("Reset impostazioni?");
|
||||
if (R == true){
|
||||
@@ -242,73 +208,13 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="Div2">
|
||||
<div class="row">
|
||||
<div class="col-6 pr-0">
|
||||
<div class="card my-2">
|
||||
<div class="card-header">
|
||||
<strong>Canale A</strong>
|
||||
<div class="form-group">
|
||||
<select class="form-control" id="SelChannelA" onchange="setChannelA(this)">
|
||||
<option>0</option>
|
||||
<option>1</option>
|
||||
<option>2</option>
|
||||
<option>3</option>
|
||||
<option>4</option>
|
||||
<option>5</option>
|
||||
<option>6</option>
|
||||
<option>7</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body text-center">
|
||||
Nativo: <span id="ChannelA"></span>
|
||||
<br>
|
||||
<strong>Scalato: <span id="OutputA"></span>
|
||||
</strong>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 pl-0">
|
||||
<div class="card my-2">
|
||||
<div class="card-header">
|
||||
<strong>Canale B</strong>
|
||||
<div class="form-group">
|
||||
<select class="form-control" id="SelChannelB" onchange="setChannelB(this)">
|
||||
<option>0</option>
|
||||
<option>1</option>
|
||||
<option>2</option>
|
||||
<option>3</option>
|
||||
<option>4</option>
|
||||
<option>5</option>
|
||||
<option>6</option>
|
||||
<option>7</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body text-center">
|
||||
Nativo: <span id="ChannelB"></span>
|
||||
<br>
|
||||
<strong>Scalato: <span id="OutputB"></span>
|
||||
</strong>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="Div3">
|
||||
<div class="card my-2 col-12">
|
||||
<div class="row card-header">
|
||||
<div class="col-5">
|
||||
<i class="fas fa-table mr-1"></i>
|
||||
<strong>Taratura</strong>
|
||||
</div>
|
||||
<div class="col-7">
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Canale n°</span>
|
||||
</div>
|
||||
<select class="form-control" id="ddlChannels" onchange="setChannel(this)">
|
||||
<div class="row" id="Div2">
|
||||
<div class="col-6 pr-0">
|
||||
<div class="card my-2">
|
||||
<div class="card-header">
|
||||
<strong>Canale A</strong>
|
||||
<div class="form-group">
|
||||
<select class="form-control" id="SelChannelA" onchange="setChannelA(this)">
|
||||
<option>0</option>
|
||||
<option>1</option>
|
||||
<option>2</option>
|
||||
@@ -320,154 +226,238 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body text-center">
|
||||
Nativo: <span id="ChannelA"></span>
|
||||
<br>
|
||||
<strong>Scalato: <span id="OutputA"></span>
|
||||
</strong>
|
||||
</div>
|
||||
<div class="card-body p-1 text-center">
|
||||
<form method="POST" action="/api/v1/scale">
|
||||
<div class="row text-center">
|
||||
<div class="col-1">
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<b>Min</b>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<b>Now</b>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<b>Max</b>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 pl-0">
|
||||
<div class="card my-2">
|
||||
<div class="card-header">
|
||||
<strong>Canale B</strong>
|
||||
<div class="form-group">
|
||||
<select class="form-control" id="SelChannelB" onchange="setChannelB(this)">
|
||||
<option>0</option>
|
||||
<option>1</option>
|
||||
<option>2</option>
|
||||
<option>3</option>
|
||||
<option>4</option>
|
||||
<option>5</option>
|
||||
<option>6</option>
|
||||
<option>7</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body text-center">
|
||||
Nativo: <span id="ChannelB"></span>
|
||||
<br>
|
||||
<strong>Scalato: <span id="OutputB"></span>
|
||||
</strong>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="Div3">
|
||||
<div class="card my-2 col-12">
|
||||
<div class="row card-header">
|
||||
<div class="col-5">
|
||||
<i class="fas fa-table mr-1"></i>
|
||||
<strong>Impostazioni scalatura</strong>
|
||||
</div>
|
||||
<div class="col-3 text-right">
|
||||
<label for="sel1"> Canale n°</label>
|
||||
</div>
|
||||
<div class="col-4 text-right">
|
||||
<div class="form-group">
|
||||
<select class="form-control" id="ddlChannels" onchange="setChannel(this)">
|
||||
<option>0</option>
|
||||
<option>1</option>
|
||||
<option>2</option>
|
||||
<option>3</option>
|
||||
<option>4</option>
|
||||
<option>5</option>
|
||||
<option>6</option>
|
||||
<option>7</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body h6 text-center">
|
||||
<div class="card-body row text-center">
|
||||
<div class="col-2"></div>
|
||||
<div class="col-8">
|
||||
<div class="row">
|
||||
<div class="col-2"></div>
|
||||
<div class="col-8">Input Attuale: <span class="text-center" id="CurrIn">000</span></div>
|
||||
<div class="col-2"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row text-center">
|
||||
<div class="col-1 px-0 mx-0 small">
|
||||
Out
|
||||
<div class="col-2"></div>
|
||||
</div>
|
||||
<div class="card-body row text-center">
|
||||
<div class="col-2"></div>
|
||||
<div class="col-8">
|
||||
<div class="row">
|
||||
<div class="col-2"></div>
|
||||
<div class="col-8">Output attuale: <span class="text-center" id="CurrOut">{{ Out0 }}</span></div>
|
||||
<div class="col-2"></div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="input-group input-group-sm mb-3">
|
||||
<input type="number" step="0.0000001" class="form-control text-center" id="MinOut" name="MinOut"></input>
|
||||
</div>
|
||||
<div class="col-2"></div>
|
||||
</div>
|
||||
<div class="card-body row text-center">
|
||||
<div class="col-2"></div>
|
||||
<div class="col-8">
|
||||
<div class="row">
|
||||
<div class="col-5 px-0"><button type="button" class="btn btn-secondary" onclick="saveMin()">Salva Min</button></div>
|
||||
<div class="col-2"></div>
|
||||
<div class="col-5 px-0"><button type="button" class="btn btn-info" onclick="saveMax()">Salva Max</button></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-2"></div>
|
||||
</div>
|
||||
<form method="POST" action="/api/v1/scale">
|
||||
<div class="card-body row text-center">
|
||||
<div class="col-2">IN</div>
|
||||
<div class="col-8">
|
||||
<div class="row text-center">
|
||||
<div class="col-5 px-0"><input type="number" step="0.0000001" class="form-control text-center" id="MinIn" name="MinIn"></input></div>
|
||||
<div class="col-2 px-0"></div>
|
||||
<div class="col-5 px-0"><input type="number" step="0.0000001" class="form-control text-center" id="MaxIn" name="MaxIn"></input></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-3 px-0">
|
||||
<span class="text-center small" id="CurrOut"> </span>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="input-group input-group-sm mb-3">
|
||||
<input type="number" step="0.0000001" class="form-control text-center" id="MaxOut" name="MaxOut">
|
||||
<div class="col-2"></div>
|
||||
</div>
|
||||
<div class="card-body row text-center">
|
||||
<div class="col-2 text-center">OUT</div>
|
||||
<div class="col-8">
|
||||
<div class="row">
|
||||
<div class="col-5 px-0"><input type="number" step="0.0000001" class="form-control text-center" id="MinOut" name="MinOut"></input></div>
|
||||
<div class="col-2"></div>
|
||||
<div class="col-5 px-0"><input type="number" step="0.0000001" class="form-control text-center" id="MaxOut" name="MaxOut"></input></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-1 px-0 mx-0 small">
|
||||
In
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="input-group input-group-sm mb-3">
|
||||
<input type="number" step="0.0000001" class="form-control text-center" id="MinIn" name="MinIn"></input>
|
||||
<div class="input-group-append">
|
||||
<button type="button" class="btn btn-info" onclick="saveMin()">S</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-3 px-0">
|
||||
<span class="text-center small" id="CurrIn"> </span>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="input-group input-group-sm mb-3">
|
||||
<input type="number" step="0.0000001" class="form-control text-center" id="MaxIn" name="MaxIn">
|
||||
<div class="input-group-append">
|
||||
<button type="button" class="btn btn-info" onclick="saveMax()">S</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-2">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Unità di misura: </span>
|
||||
</div>
|
||||
<input type="text" class="form-control" id="UniMisura" name="UniMisura"></input>
|
||||
</div>
|
||||
<div class="input-group my-2 px-0">
|
||||
<span class="col-6 input-group-text">Unità di misura: </span>
|
||||
<input type="text" class="col-6 form-control" id="UniMisura" name="UniMisura"></input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row text-center">
|
||||
<div class="col-12">
|
||||
<input type="submit" value="SET TARATURA" class="btn btn-success btn-block mt-2"></input>
|
||||
<div class="col-2"></div>
|
||||
<div class="col-8">
|
||||
<input type="submit" value="IMPOSTA SCALATURA" class="btn btn-success btn-block mt-2"></input>
|
||||
</div>
|
||||
<div class="col-2"></div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card my-2 col-12">
|
||||
<div class="row card-header">
|
||||
<div class="col-7">
|
||||
<i class="fas fa-table mr-1"></i>
|
||||
<strong>Processing e Timer</strong>
|
||||
</div>
|
||||
<div class="col-5 text-right">
|
||||
<span id="RecPeriod"> </span> ms
|
||||
</div>
|
||||
<i class="fas fa-table mr-1"></i>
|
||||
<strong>Setup k6*x^6 + k5*x^5 + k4*x^4 + k3*x^3 + k2*x^2 + k1*x + offset</strong>
|
||||
</div>
|
||||
<div class="card-body p-1">
|
||||
<div class="row my-2 text-center">
|
||||
<div class="col-6"><button type="button" class="btn btn-block btn-sm btn-primary" onclick="setupValues()">Set Parametri Taratura</button></div>
|
||||
<div class="col-6"><button type="button" class="btn btn-block btn-sm btn-primary" onclick="workingValues()">Set Parametri Lettura</button></div>
|
||||
</div>
|
||||
<div class="card-body row">
|
||||
<form class="col-12" method="POST" action="/api/v1/kconst">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Costante k6: </span>
|
||||
</div>
|
||||
<input type="number" step="0.0000001" class="form-control" id="K6Const" name="K6Const"></input>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Costante k5: </span>
|
||||
</div>
|
||||
<input type="number" step="0.0000001" class="form-control" id="K5Const" name="K5Const"></input>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Costante k4: </span>
|
||||
</div>
|
||||
<input type="number" step="0.0000001" class="form-control" id="K4Const" name="K4Const"></input>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Costante k3: </span>
|
||||
</div>
|
||||
<input type="number" step="0.0000001" class="form-control" id="K3Const" name="K3Const"></input>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Costante k2: </span>
|
||||
</div>
|
||||
<input type="number" step="0.0000001" class="form-control" id="K2Const" name="K2Const"></input>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Costante k1: </span>
|
||||
</div>
|
||||
<input type="number" step="0.0000001" class="form-control" id="K1Const" name="K1Const"></input>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Offset: </span>
|
||||
</div>
|
||||
<input type="number" step="0.0000001" class="form-control" id="Offset" name="Offset"></input>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-2"></div>
|
||||
<div class="col-8">
|
||||
<input type="submit" value="SET" class="btn btn-success btn-block mt-2"></input>
|
||||
</div>
|
||||
<div class="col-2"></div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card my-2 col-12">
|
||||
<div class="row card-header">
|
||||
<strong>Unità di misura del risultato di [Valore B / (Valore A - Valore B)]</strong>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form class="col-12" method="POST" action="/api/v1/setup/calcMeasureUnit">
|
||||
<div class="row input-group my-2">
|
||||
<span class="input-group-text col-4">Unità di misura: </span>
|
||||
<input type="text" class=" form-control col-5" id="CalcUMeasure" name="CalcUMeasure"></input>
|
||||
<input type="submit" value="SET" class="btn btn-success col-3"></input>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card my-2 col-12">
|
||||
<div class="row card-header">
|
||||
<strong>Tipo processing</strong>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Selezione Processing</span>
|
||||
</div>
|
||||
<select class="form-control" id="SelProcessing" onchange="setProcessing(this)">
|
||||
<option value="0">Nessuno</option>
|
||||
<option value="1">Media</option>
|
||||
<option value="1">EWMA</option>
|
||||
<option value="2">RMS</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<form class="col-12" method="POST" action="/api/v1/smoothFact">
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Fattore di Smoothing: </span>
|
||||
</div>
|
||||
<input type="number" min="1" max="100" class="form-control" id="SmoothFact" name="SmoothFact"></input>
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<form class="col-12" method="POST" action="/api/v1/eFact">
|
||||
<div class="input-group input-group-sm mb-3">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Valore per EWMA: </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>
|
||||
<form class="col-12" method="POST" action="/api/v1/frequency">
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Periodo di campionamento (ms): </span>
|
||||
</div>
|
||||
<input type="number" class="form-control" id="LogFreq" name="LogFreq"></input>
|
||||
</div>
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Periodo di scrittura su file (ms): </span>
|
||||
</div>
|
||||
<input type="number" class="form-control" id="WriteFreq" name="WriteFreq"></input>
|
||||
<br>
|
||||
</div>
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Ritardo prima scrittura su file (s): </span>
|
||||
</div>
|
||||
<input type="number" min="1" max="5" class="form-control" id="TimeBeforeWrite" name="TimeBeforeWrite"></input>
|
||||
<br>
|
||||
</div>
|
||||
<div class="row text-center">
|
||||
<div class="col-12">
|
||||
<input type="submit" value="SET" class="btn btn-success btn-block mt-2"></input>
|
||||
<input type="submit" value="SET" class="btn btn-success "></input>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -479,84 +469,15 @@
|
||||
<i class="fas fa-table mr-1"></i>
|
||||
<strong>Numero Decimali</strong>
|
||||
</div>
|
||||
<div class="card-body p-1">
|
||||
<div class="row">
|
||||
<form class="col-12" method="POST" action="/api/v1/decimalsCount">
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Decimali calcolo: </span>
|
||||
</div>
|
||||
<input type="number" min="1" max="5" class="form-control" id="DecimalsCount" name="DecimalsCount"></input>
|
||||
<div class="input-group-append">
|
||||
<input type="submit" value="SET" class="btn btn-success"></input>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<form class="col-12" method="POST" action="/api/v1/decimalsDisplay">
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Decimali display: </span>
|
||||
</div>
|
||||
<input type="number" min="1" max="5" class="form-control" id="DecimalsDisplay" name="DecimalsDisplay"></input>
|
||||
<div class="input-group-append">
|
||||
<input type="submit" value="SET" class="btn btn-success"></input>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card my-2 col-12">
|
||||
<div class="row card-header">
|
||||
<div class="col-12">
|
||||
<strong>Valori per calcolo risultante = k1*x^2 + k2*x + offset</strong>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body p-1">
|
||||
<div class="row">
|
||||
<form class="col-12" method="POST" action="/api/v1/kconst">
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Costante k1: </span>
|
||||
</div>
|
||||
<input type="number" step="0.0000001" class="form-control" id="K1Const" name="K1Const"></input>
|
||||
</div>
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Costante k2: </span>
|
||||
</div>
|
||||
<input type="number" step="0.0000001" class="form-control" id="K2Const" name="K2Const"></input>
|
||||
</div>
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Offset o: </span>
|
||||
</div>
|
||||
<input type="number" step="0.0000001" class="form-control" id="Offset" name="Offset"></input>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<input type="submit" value="SET" class="btn btn-success btn-block mt-2"></input>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card my-2 col-12">
|
||||
<div class="row card-header">
|
||||
<strong>Unità di misura del risultato di [Valore B / (Valore A - Valore B)]</strong>
|
||||
</div>
|
||||
<div class="card-body p-1">
|
||||
<form method="POST" action="/api/v1/setup/calcMeasureUnit">
|
||||
<div class="input-group my-2">
|
||||
<div class="card-body row">
|
||||
<form class="col-12" method="POST" action="/api/v1/decimals">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Unità di misura: </span>
|
||||
<span class="input-group-text">Numero di cifre decimali: </span>
|
||||
</div>
|
||||
<input type="text" class=" form-control" id="CalcUMeasure" name="CalcUMeasure"></input>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<input type="submit" value="SET" class="btn btn-success btn-block"></input>
|
||||
<input type="number" min="1" max="4" class="form-control" id="DecimalsCount" name="DecimalsCount"></input>
|
||||
<div class="input-group-append">
|
||||
<input type="submit" value="SET" class="btn btn-success"></input>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -566,10 +487,10 @@
|
||||
<div class="row card-header">
|
||||
<strong>Impostazione canale da monitorare per soglia spegnimento</strong>
|
||||
</div>
|
||||
<div class="card-body p-1">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Selezione canale</span>
|
||||
</div>
|
||||
@@ -587,27 +508,56 @@
|
||||
</div>
|
||||
</div>
|
||||
<form class="col-12" method="POST" action="/api/v1/threshold">
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Soglia spegnimento: </span>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">Soglia spegnimento: </span>
|
||||
<input type="number" step="0.1" min="0" max="3" class="form-control" id="ChanThresh" name="ChanThresh"></input>
|
||||
</div>
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Attesa spegnimento (sec): </span>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">Attesa minima prima dello spegnimento: </span>
|
||||
<input type="number" min="360" class="form-control" id="MinUptime" name="MinUptime"></input>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="col-2"></div>
|
||||
<div class="col-8">
|
||||
<input type="submit" value="SET" class="btn btn-success btn-block mt-2"></input>
|
||||
</div>
|
||||
<div class="col-2"></div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card my-2 col-12">
|
||||
<div class="row card-header">
|
||||
<i class="fas fa-table mr-1"></i>
|
||||
<strong>Impostazioni Timer</strong>
|
||||
</div>
|
||||
<div class="card-body row">
|
||||
<form class="col-12" method="POST" action="/api/v1/frequency">
|
||||
<div class="input-group">
|
||||
<span class="col-6 input-group-text">Periodo di campionamento (ms): </span>
|
||||
<input type="number" class="col-6 form-control" id="LogFreq" name="LogFreq"></input>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<span class="col-6 input-group-text">Periodo di scrittura su file (ms): </span>
|
||||
<input type="number" class="col-6 form-control" id="WriteFreq" name="WriteFreq"></input>
|
||||
<br>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<span class="col-6 input-group-text">Ritardo prima scrittura su file (s): </span>
|
||||
<input type="number" min="1" max="5" class="col-6 form-control" id="TimeBeforeWrite" name="TimeBeforeWrite"></input>
|
||||
<br>
|
||||
</div>
|
||||
<div class="row text-center">
|
||||
<div class="col-2"></div>
|
||||
<div class="col-8">
|
||||
<input type="submit" value="SET" class="btn btn-success btn-block mt-2"></input>
|
||||
</div>
|
||||
<div class="col-2"></div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card my-2 col-12">
|
||||
<div class="row card-header">
|
||||
<i class="fas fa-table mr-1"></i>
|
||||
@@ -615,9 +565,11 @@
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row text-center">
|
||||
<div class="col-12">
|
||||
<div class="col-2"></div>
|
||||
<div class="col-8">
|
||||
<input type="submit" value="RESET IMPOSTAZIONI" class="btn btn-danger btn-block mt-2" onclick="settingsReset()"></input>
|
||||
</div>
|
||||
<div class="col-2"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -625,4 +577,4 @@
|
||||
<br>
|
||||
</div>
|
||||
</main>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
@@ -1,9 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
|
||||
if [ -a /dev/sd[a-z]1 ]
|
||||
then
|
||||
/bin/mount /dev/sd[a-z]1 /mnt/USB
|
||||
else
|
||||
/bin/mount /dev/sd[a-z] /mnt/USB
|
||||
fi
|
||||
Reference in New Issue
Block a user