From 977025828d5aae2d9db5153fb13cfa0823905de3 Mon Sep 17 00:00:00 2001 From: Marco Locatelli Date: Fri, 26 Mar 2021 15:11:53 +0100 Subject: [PATCH] salva valori min/max IN --- logger/FlythisLogger.py | 73 +++++++++++++----- server/FlythisServer.py | 68 +++++++++-------- server/static/css/DsegSeven.woff | Bin 7044 -> 0 bytes server/static/css/fonts.css | 4 - server/templates/layout.html | 1 - server/templates/settings.html | 122 ++++++++++++++++++++++++++----- 6 files changed, 200 insertions(+), 68 deletions(-) delete mode 100644 server/static/css/DsegSeven.woff delete mode 100644 server/static/css/fonts.css diff --git a/logger/FlythisLogger.py b/logger/FlythisLogger.py index c51e3c9..fc43d83 100644 --- a/logger/FlythisLogger.py +++ b/logger/FlythisLogger.py @@ -14,21 +14,26 @@ redSrv0 = redis.Redis( port=REDIS_PORT, db=0) -#se non c'è un valore nei campi di redis, gli do 1 +#se non c'è un valore nei campi di redis, gli do 0 if redSrv0.get('SETTINGS:LOG:STATUS') is None: redSrv0.set('SETTINGS:LOG:STATUS',1) -if redSrv0.get('SETTINGS:CH:SCALE:MIN1') is None: - redSrv0.set('SETTINGS:CH:SCALE:MIN1',1) +if redSrv0.get('SETTINGS:SELECTED_CH') is None: + redSrv0.set('SETTINGS:SELECTED_CH',0) -if redSrv0.get('SETTINGS:CH:SCALE:MAX1') is None: - redSrv0.set('SETTINGS:CH:SCALE:MAX1',1) + for numCh in range(0,8,+1): -if redSrv0.get('SETTINGS:CH:REAL:MIN1') is None: - redSrv0.set('SETTINGS:CH:REAL:MIN1',1) + if redSrv0.get('SETTINGS:IN:MAX:'+str(numCh)) is None: + redSrv0.set('SETTINGS:IN:MAX:'+str(numCh),100) -if redSrv0.get('SETTINGS:CH:REAL:MAX1') is None: - redSrv0.set('SETTINGS:CH:REAL:MAX1',1) + if redSrv0.get('SETTINGS:IN:MIN:'+str(numCh)) is None: + redSrv0.set('SETTINGS:IN:MIN:'+str(numCh),0) + + if redSrv0.get('SETTINGS:OUT:MAX:'+str(numCh)) is None: + redSrv0.set('SETTINGS:OUT:MAX:'+str(numCh),100) + + if redSrv0.get('SETTINGS:OUT:MIN:'+str(numCh)) is None: + redSrv0.set('SETTINGS:OUT:MIN:'+str(numCh),0) #intervallo in millisecondi fra un campionamento e il successivo redSampleFreq = 'SETTINGS:LOG:FREQ' @@ -41,8 +46,8 @@ try: #funzione stampa otto valori letti su terminale def videoPrint(CHvalue): - for CHcount in range(0,8,+1): - print("CH "+str(CHcount)+"= %lf"%(CHvalue[CHcount]*5.0/0x7fffff)) + for chIndex in range(0,8,+1): + print("CH "+str(chIndex)+"= %lf"%(CHvalue[chIndex]*5.0/0x7fffff)) #funzione salva time+data e otto valori letti su file def fileSave(CHvalue): @@ -52,18 +57,52 @@ try: print("Creating new PyLog.txt") logFile = open("PyLog.txt", "w+") logFile.write("\nTime: "+str(now)) - for CHcount in range(0,8,+1): - logFile.write(" | CH "+str(CHcount)+" = %lf"%(CHvalue[CHcount]*5.0/0x7fffff)) + for chIndex in range(0,8,+1): + logFile.write(" | CH "+str(chIndex)+" = %lf"%(CHvalue[chIndex]*5.0/0x7fffff)) #funzione salva time+data di log e otto valori su redis def redisSave(CHvalue): redLastLog = 'RTDATA:TIME:LOG' lastLog = datetime.datetime.now() redSrv0.set(redLastLog,str(lastLog)) - for CHcount in range(0,8,+1): - redArea = 'RTDATA:CH:'+str(CHcount) - strVal = "%lf" % (CHvalue[CHcount]*5.0/0x7fffff) - redSrv0.set(redArea,strVal) + for chIndex in range(0,8,+1): + redAreaIn = 'RTDATA:CH:'+str(chIndex) + redAreaOut = 'RTDATA:OUT:'+str(chIndex) + strValIn = "%.4f" % (CHvalue[chIndex]*5.0/0x7fffff) + redSrv0.set(redAreaIn,strValIn) + # salvo i valori scalati in OUT + strValOut = "%.4f" % scaleVal(CHvalue[chIndex]*5.0/0x7fffff, chIndex) + redSrv0.set(redAreaOut,strValOut) + + #funzione di refresh valori scalati + def scaleVal(inValue, chIndex): + #rileggo da redis i valori min/max secondo chIndex + chInMin = float(0) + if (redSrv0.get('SETTINGS:IN:MIN:'+str(chIndex)) != 0): + chInMin = float(redSrv0.get('SETTINGS:IN:MIN:'+str(chIndex))) + + chInMax = float(3.3) + if (redSrv0.get('SETTINGS:IN:MAX:'+str(chIndex)) != 100): + chInMax = float(redSrv0.get('SETTINGS:IN:MAX:'+str(chIndex))) + + chOutMin = float(0) + if (redSrv0.get('SETTINGS:OUT:MIN:'+str(chIndex)) != 0): + chOutMin = float(redSrv0.get('SETTINGS:OUT:MIN:'+str(chIndex))) + + chOutMax = float(1000) + if (redSrv0.get('SETTINGS:OUT:MAX:'+str(chIndex)) != 100): + chOutMax = float(redSrv0.get('SETTINGS:OUT:MAX:'+str(chIndex))) + + # check denom zero + deltaOut = (chOutMax - chOutMin) + deltaIn = (chInMax - chInMin) + if(deltaIn==0): + deltaIn = 1 + + # calcolo scalato + outVal = chOutMin + ((inValue-chInMin) * (deltaOut / deltaIn)) + + return outVal #ciclo principale, salva time attuale e se LOG:STATUS è 1 fa il ciclo principale while(1): diff --git a/server/FlythisServer.py b/server/FlythisServer.py index 3927a3f..cb4c0ba 100644 --- a/server/FlythisServer.py +++ b/server/FlythisServer.py @@ -7,6 +7,8 @@ import redis import socket from werkzeug.utils import redirect + + #create a socket object s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) @@ -80,6 +82,7 @@ def about(): # definisco una NUOVA route a cui rispondere su chiamta in metodo GET x restituire dati aggiornati @flaskApp.route("/api/v1/channels/all", methods=['GET']) def api_channels_all(): + numCh = redSrv0.get('SETTINGS:SELECTED_CH').decode('utf-8') #funzione api_channels_all: legge direttamente da redis, ritorna jsonify channelsData = { 'timeSrv' : redSrv0.get('RTDATA:TIME:SRV').decode('utf-8'), @@ -93,10 +96,10 @@ def api_channels_all(): 'Ch5' : redSrv0.get('RTDATA:CH:5').decode('utf-8'), 'Ch6' : redSrv0.get('RTDATA:CH:6').decode('utf-8'), 'Ch7' : redSrv0.get('RTDATA:CH:7').decode('utf-8'), - 'ChScaleMax1' : redSrv0.get('SETTINGS:CH:SCALE:MAX1').decode('utf-8'), - 'ChScaleMin1' : redSrv0.get('SETTINGS:CH:SCALE:MIN1').decode('utf-8'), - 'ChRealMax1' : redSrv0.get('SETTINGS:CH:REAL:MAX1').decode('utf-8'), - 'ChRealMin1' : redSrv0.get('SETTINGS:CH:REAL:MIN1').decode('utf-8') + 'ChScaleMax' : redSrv0.get('SETTINGS:IN:MAX:'+str(numCh)).decode('utf-8'), + 'ChScaleMin' : redSrv0.get('SETTINGS:IN:MIN:'+str(numCh)).decode('utf-8'), + 'ChRealMax' : redSrv0.get('SETTINGS:OUT:MAX:'+str(numCh)).decode('utf-8'), + 'ChRealMin' : redSrv0.get('SETTINGS:OUT:MIN:'+str(numCh)).decode('utf-8') } # restituisce in formato json i dati letti da redis return jsonify(channelsData) @@ -114,6 +117,31 @@ def stop_log(): redSrv0.set('SETTINGS:LOG:STATUS', 0) return "OK" +@flaskApp.route("/api/v1/setup/saveInMin", methods=['PUT']) +def setupInMin(): + # devo leggere il channel attualmente selezionato + indCh = redSrv0.get('SETTINGS:SELECTED_CH').decode('utf-8') + currChVal = redSrv0.get('RTDATA:CH:'+ str(indCh)) + redSrv0.set('SETTINGS:IN:MIN:'+ str(indCh), currChVal) + return redirect("/settings") + +@flaskApp.route("/api/v1/setup/saveInMax", methods=['PUT']) +def setupInMax(): + # devo leggere il channel attualmente selezionato + indCh = redSrv0.get('SETTINGS:SELECTED_CH').decode('utf-8') + currChVal = redSrv0.get('RTDATA:CH:'+ str(indCh)) + redSrv0.set('SETTINGS:IN:MAX:'+ str(indCh), currChVal) + return redirect("/settings") + +@flaskApp.route("/api/v1/setup/selectChannel/", methods=['PUT']) +def selectChannel(numCh): + print(numCh) + # request_data = request.get_json() + # # devo leggere il channel attualmente selezionato, x ora cablo a 0... + # numCh = request_data['channel'] + redSrv0.set('SETTINGS:SELECTED_CH', numCh) + return "OK" + @flaskApp.route("/api/v1/sessions", methods=['POST']) def sessionCreate(): #funzione creazione sessione: scrive su redis SESSION:NAME prendendolo dall'input in pagina html con nome NewSessionName @@ -130,31 +158,13 @@ def setFrequency(): # rimando in settings return redirect("/settings") -@flaskApp.route("/api/v1/smin1", methods=['POST']) -def setScaleMin1(): - scaleMin1 = request.form['ScaleMin1'] - redSrv0.set('SETTINGS:CH:SCALE:MIN1', scaleMin1) - # rimando in settings - return redirect("/settings") - -@flaskApp.route("/api/v1/smax1", methods=['POST']) -def setScaleMax1(): - scaleMax1 = request.form['ScaleMax1'] - redSrv0.set('SETTINGS:CH:SCALE:MAX1', scaleMax1) - # rimando in settings - return redirect("/settings") - -@flaskApp.route("/api/v1/rmin1", methods=['POST']) -def setRealMin1(): - realMin1 = redSrv0.get('RTDATA:CH:0') - redSrv0.set('SETTINGS:CH:REAL:MIN1', realMin1) - # rimando in settings - return redirect("/settings") - -@flaskApp.route("/api/v1/rmax1", methods=['POST']) -def setRealMax1(): - realMax1 = redSrv0.get('RTDATA:CH:0') - redSrv0.set('SETTINGS:CH:REAL:MAX1', realMax1) +@flaskApp.route("/api/v1/scaleout", methods=['POST']) +def setScale(): + indexCh = redSrv0.get('SETTINGS:SELECTED_CH').decode('utf-8') + scaleMin = request.form['ScaleMin'] + redSrv0.set('SETTINGS:OUT:MIN:'+ str(indexCh), scaleMin) + scaleMax = request.form['ScaleMax'] + redSrv0.set('SETTINGS:OUT:MAX:'+ str(indexCh), scaleMax) # rimando in settings return redirect("/settings") diff --git a/server/static/css/DsegSeven.woff b/server/static/css/DsegSeven.woff deleted file mode 100644 index 89f8653a59506171a18f8b33484d88fbcd67745f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7044 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 diff --git a/server/static/css/fonts.css b/server/static/css/fonts.css deleted file mode 100644 index bd1a289..0000000 --- a/server/static/css/fonts.css +++ /dev/null @@ -1,4 +0,0 @@ -@font-face { - font-family: DsegSeven; - src: url('DsegSeven.woff') format('woff'); - } \ No newline at end of file diff --git a/server/templates/layout.html b/server/templates/layout.html index 2feb3a2..ea26f17 100644 --- a/server/templates/layout.html +++ b/server/templates/layout.html @@ -8,7 +8,6 @@ {{ title }} - diff --git a/server/templates/settings.html b/server/templates/settings.html index 5686853..9a6eda7 100644 --- a/server/templates/settings.html +++ b/server/templates/settings.html @@ -4,6 +4,29 @@
@@ -25,13 +48,84 @@ var intTime=1000;
- - Channel 1 Settings -
-
+
+ + Channel Setup +
+
+ +
+
+
+ +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
IN
+
+
+
+
Current
+
+
+
+
+
+ +
+
OUT
+
+
+ +
+
Scaled OUT
+
+ +
+
+ +
+
+
+ + + +
-
{% endblock %} \ No newline at end of file