add alias for tools and units types and names

This commit is contained in:
2025-08-03 21:46:15 +02:00
parent fdefd0a430
commit 5fc40093e2
11 changed files with 739 additions and 12 deletions

2
env/ftp.ini vendored
View File

@@ -28,7 +28,7 @@
[tool] [tool]
Types = MUX|MUMS|MODB|IPTM|MUSA|LOC|GD|D2W|CR1000X|G301|NESA|GS1|G201|TLP|DSAS|HORTUS|HEALTH-|READINGS-|INTEGRITY MONITOR|MESSPUNKTEPINI_|HIRPINIA|CO_[0-9]{4}_[0-9]|VULINK Types = MUX|MUMS|MODB|IPTM|MUSA|LOC|GD|D2W|CR1000X|G301|NESA|GS1|G201|TLP|DSAS|HORTUS|HEALTH-|READINGS-|INTEGRITY MONITOR|MESSPUNKTEPINI_|HIRPINIA|CO_[0-9]{4}_[0-9]|VULINK
Names = LOC[0-9]{4}|DT[0-9]{4}|GD[0-9]{4}|[0-9]{18}|MEASUREMENTS_|CHESA_ARCOIRIS_[0-9]*|TS_PS_PETITES_CROISETTES|CO_[0-9]{4}_[0-9] Names = LOC[0-9]{4}|DT[0-9]{4}|GD[0-9]{4}|[0-9]{18}|MEASUREMENTS_|CHESA_ARCOIRIS_[0-9]*|TS_PS_PETITES_CROISETTES|CO_[0-9]{4}_[0-9]
Alias = HEALTH-:SISGEO|READINGS-:SISGEO|INTEGRITY MONITOR:STAZIONETOTALE|MESSPUNKTEPINI_:STAZIONETOTALE|CO_:SOROTECPINI Alias = CO_:=|HEALTH-:HEALTH|READINGS-:READINGS|MESSPUNKTEPINI_:MESSPUNKTEPINI|
[csv] [csv]
Infos = IP|Subnet|Gateway Infos = IP|Subnet|Gateway

View File

@@ -0,0 +1,63 @@
#!/usr/bin/env python3
import sys
import os
from mysql.connector import MySQLConnection, Error
from dbconfig import read_db_config
from decimal import Decimal
from datetime import datetime
import ezodf
def getDataFromCsv(pathFile):
try:
folder_path, file_with_extension = os.path.split(pathFile)
unit_name = os.path.basename(folder_path)#unitname
tool_name, _ = os.path.splitext(file_with_extension)#toolname
tool_name = tool_name.replace("HIRPINIA_", "")
tool_name = tool_name.split("_")[0]
print(unit_name, tool_name)
datiRaw = []
doc = ezodf.opendoc(pathFile)
for sheet in doc.sheets:
node_num = sheet.name.replace("S-", "")
print(f"Sheet Name: {sheet.name}")
rows_to_skip = 2
for i, row in enumerate(sheet.rows()):
if i < rows_to_skip:
continue
row_data = [cell.value for cell in row]
date_time = datetime.strptime(row_data[0], "%Y-%m-%dT%H:%M:%S").strftime("%Y-%m-%d %H:%M:%S").split(" ")
date = date_time[0]
time = date_time[1]
val0 = row_data[2]
val1 = row_data[4]
val2 = row_data[6]
val3 = row_data[8]
datiRaw.append((unit_name, tool_name, node_num, date, time, -1, -273, val0, val1, val2, val3))
try:
db_config = read_db_config()
conn = MySQLConnection(**db_config)
cursor = conn.cursor(dictionary=True)
queryRaw = "insert ignore into RAWDATACOR(UnitName,ToolNameID,NodeNum,EventDate,EventTime,BatLevel,Temperature,Val0,Val1,Val2,Val3) values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
cursor.executemany(queryRaw, datiRaw)
conn.commit()
except Error as e:
print('Error:', e)
finally:
queryMatlab = "select m.matcall from tools as t join units as u on u.id=t.unit_id join matfuncs as m on m.id=t.matfunc where u.name=%s and t.name=%s"
cursor.execute(queryMatlab, [unit_name, tool_name])
resultMatlab = cursor.fetchall()
if(resultMatlab):
print("Avvio "+str(resultMatlab[0]["matcall"]))
os.system("cd /usr/local/matlab_func/; ./run_"+str(resultMatlab[0]["matcall"])+".sh /usr/local/MATLAB/MATLAB_Runtime/v93/ "+str(unit_name)+" "+str(tool_name)+"")
cursor.close()
conn.close()
except Exception as e:
print(f"An unexpected error occurred: {str(e)}\n")
def main():
print("Avviato.")
getDataFromCsv(sys.argv[1])
print("Finito.")
if __name__ == '__main__':
main()

View File

@@ -0,0 +1,305 @@
#!/usr/bin/env python3
import sys
import os
from mysql.connector import MySQLConnection, Error
from dbconfig import read_db_config
from decimal import Decimal
from datetime import datetime
def insertData(dati):
#print(dati)
#print(len(dati))
if(len(dati) > 0):
db_config = read_db_config()
conn = MySQLConnection(**db_config)
cursor = conn.cursor()
if(len(dati) == 2):
u = ""
t = ""
rawdata = dati[0]
elabdata = dati[1]
if(len(rawdata) > 0):
for r in rawdata:
#print(r)
#print(len(r))
if(len(r) == 6):#nodo1
unitname = r[0]
toolname = r[1]
nodenum = r[2]
pressure = Decimal(r[3])*100
date = r[4]
time = r[5]
query = "SELECT * from RAWDATACOR WHERE UnitName=%s AND ToolNameID=%s AND NodeNum=%s ORDER BY EventDate desc,EventTime desc limit 1"
try:
cursor.execute(query, [unitname, toolname, nodenum])
result = cursor.fetchall()
if(result):
if(result[0][8] is None):
datetimeOld = datetime.strptime(str(result[0][4]) + " " + str(result[0][5]), "%Y-%m-%d %H:%M:%S")
datetimeNew = datetime.strptime(str(date) + " " + str(time), "%Y-%m-%d %H:%M:%S")
dateDiff = datetimeNew - datetimeOld
if(dateDiff.total_seconds() / 3600 >= 5):
query = "INSERT INTO RAWDATACOR(UnitName, ToolNameID, NodeNum, EventDate, EventTime, BatLevel, Temperature, val0, BatLevelModule, TemperatureModule) VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
try:
cursor.execute(query, [unitname, toolname, nodenum, date, time, -1, -273, pressure, -1, -273])
conn.commit()
except Error as e:
print('Error:', e)
else:
query = "UPDATE RAWDATACOR SET val0=%s, EventDate=%s, EventTime=%s WHERE UnitName=%s AND ToolNameID=%s AND NodeNum=%s AND val0 is NULL ORDER BY EventDate desc,EventTime desc limit 1"
try:
cursor.execute(query, [pressure, date, time, unitname, toolname, nodenum])
conn.commit()
except Error as e:
print('Error:', e)
elif(result[0][8] is not None):
query = "INSERT INTO RAWDATACOR(UnitName, ToolNameID, NodeNum, EventDate, EventTime, BatLevel, Temperature, val0, BatLevelModule, TemperatureModule) VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
try:
cursor.execute(query, [unitname, toolname, nodenum, date, time, -1, -273, pressure, -1, -273])
conn.commit()
except Error as e:
print('Error:', e)
else:
query = "INSERT INTO RAWDATACOR(UnitName, ToolNameID, NodeNum, EventDate, EventTime, BatLevel, Temperature, val0, BatLevelModule, TemperatureModule) VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
try:
cursor.execute(query, [unitname, toolname, nodenum, date, time, -1, -273, pressure, -1, -273])
conn.commit()
except Error as e:
print('Error:', e)
except Error as e:
print('Error:', e)
else:#altri 2->5
unitname = r[0]
toolname = r[1]
nodenum = r[2]
freqinhz = r[3]
therminohms = r[4]
freqindigit = r[5]
date = r[6]
time = r[7]
query = "SELECT * from RAWDATACOR WHERE UnitName=%s AND ToolNameID=%s AND NodeNum=%s ORDER BY EventDate desc,EventTime desc limit 1"
try:
cursor.execute(query, [unitname, toolname, nodenum])
result = cursor.fetchall()
if(result):
if(result[0][8] is None):
query = "UPDATE RAWDATACOR SET val0=%s, val1=%s, val2=%s, EventDate=%s, EventTime=%s WHERE UnitName=%s AND ToolNameID=%s AND NodeNum=%s AND val0 is NULL ORDER BY EventDate desc,EventTime desc limit 1"
try:
cursor.execute(query, [freqinhz, therminohms, freqindigit, date, time, unitname, toolname, nodenum])
conn.commit()
except Error as e:
print('Error:', e)
elif(result[0][8] is not None):
query = "INSERT INTO RAWDATACOR(UnitName, ToolNameID, NodeNum, EventDate, EventTime, BatLevel, Temperature, val0, val1, val2, BatLevelModule, TemperatureModule) VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
try:
cursor.execute(query, [unitname, toolname, nodenum, date, time, -1, -273, freqinhz, therminohms, freqindigit, -1, -273])
conn.commit()
except Error as e:
print('Error:', e)
else:
query = "INSERT INTO RAWDATACOR(UnitName, ToolNameID, NodeNum, EventDate, EventTime, BatLevel, Temperature, val0, val1, val2, BatLevelModule, TemperatureModule) VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
try:
cursor.execute(query, [unitname, toolname, nodenum, date, time, -1, -273, freqinhz, therminohms, freqindigit, -1, -273])
conn.commit()
except Error as e:
print('Error:', e)
except Error as e:
print('Error:', e)
if(len(elabdata) > 0):
for e in elabdata:
#print(e)
#print(len(e))
if(len(e) == 6):#nodo1
unitname = e[0]
toolname = e[1]
nodenum = e[2]
pressure = Decimal(e[3])*100
date = e[4]
time = e[5]
try:
query = "INSERT INTO ELABDATADISP(UnitName, ToolNameID, NodeNum, EventDate, EventTime, pressure) VALUES(%s,%s,%s,%s,%s,%s)"
cursor.execute(query, [unitname, toolname, nodenum, date, time, pressure])
conn.commit()
except Error as e:
print('Error:', e)
else:#altri 2->5
unitname = e[0]
toolname = e[1]
u = unitname
t = toolname
nodenum = e[2]
pch = e[3]
tch = e[4]
date = e[5]
time = e[6]
try:
query = "INSERT INTO ELABDATADISP(UnitName, ToolNameID, NodeNum, EventDate, EventTime, XShift, T_node) VALUES(%s,%s,%s,%s,%s,%s,%s)"
cursor.execute(query, [unitname, toolname, nodenum, date, time, pch, tch])
conn.commit()
except Error as e:
print('Error:', e)
#os.system("cd /usr/local/matlab_func/; ./run_ATD_lnx.sh /usr/local/MATLAB/MATLAB_Runtime/v93/ "+u+" "+t+"")
else:
for r in dati:
#print(r)
unitname = r[0]
toolname = r[1]
nodenum = r[2]
date = r[3]
time = r[4]
battery = r[5]
temperature = r[6]
query = "SELECT * from RAWDATACOR WHERE UnitName=%s AND ToolNameID=%s AND NodeNum=%s ORDER BY EventDate desc,EventTime desc limit 1"
try:
cursor.execute(query, [unitname, toolname, nodenum])
result = cursor.fetchall()
if(result):
if(result[0][25] is None or result[0][25] == -1.00):
datetimeOld = datetime.strptime(str(result[0][4]) + " " + str(result[0][5]), "%Y-%m-%d %H:%M:%S")
datetimeNew = datetime.strptime(str(date) + " " + str(time), "%Y-%m-%d %H:%M:%S")
dateDiff = datetimeNew - datetimeOld
#print(dateDiff.total_seconds() / 3600)
if(dateDiff.total_seconds() / 3600 >= 5):
query = "INSERT INTO RAWDATACOR(UnitName, ToolNameID, NodeNum, EventDate, EventTime, BatLevel, Temperature, BatLevelModule, TemperatureModule) VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s)"
try:
cursor.execute(query, [unitname, toolname, nodenum, date, time, -1, -273, battery, temperature])
conn.commit()
except Error as e:
print('Error:', e)
else:
query = "UPDATE RAWDATACOR SET BatLevelModule=%s, TemperatureModule=%s WHERE UnitName=%s AND ToolNameID=%s AND NodeNum=%s AND (BatLevelModule is NULL or BatLevelModule = -1.00) ORDER BY EventDate desc,EventTime desc limit 1"
try:
cursor.execute(query, [battery, temperature, unitname, toolname, nodenum])
conn.commit()
except Error as e:
print('Error:', e)
elif(result[0][25] is not None and result[0][25] != -1.00):
query = "INSERT INTO RAWDATACOR(UnitName, ToolNameID, NodeNum, EventDate, EventTime, BatLevel, Temperature, BatLevelModule, TemperatureModule) VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s)"
try:
cursor.execute(query, [unitname, toolname, nodenum, date, time, -1, -273, battery, temperature])
conn.commit()
except Error as e:
print('Error:', e)
else:
query = "INSERT INTO RAWDATACOR(UnitName, ToolNameID, NodeNum, EventDate, EventTime, BatLevel, Temperature, BatLevelModule, TemperatureModule) VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s)"
try:
cursor.execute(query, [unitname, toolname, nodenum, date, time, -1, -273, battery, temperature])
conn.commit()
except Error as e:
print('Error:', e)
except Error as e:
print('Error:', e)
cursor.close()
conn.close()
def getDataFromCsv(pathFile):
with open(pathFile, 'r') as file:
data = file.readlines()
data = [row.rstrip() for row in data]
serial_number = data[0].split(",")[1]
data = data[10:] #rimuove righe header
dati = []
rawDatiReadings = []#tmp
elabDatiReadings = []#tmp
datiReadings = []
i = 0
unit = ""
tool = ""
#row = data[0]#quando non c'era il for solo 1 riga
for row in data:#se ci sono righe multiple
row = row.split(",")
if i == 0:
query = "SELECT unit_name, tool_name FROM sisgeo_tools WHERE serial_number='"+serial_number+"'"
try:
db_config = read_db_config()
conn = MySQLConnection(**db_config)
cursor = conn.cursor()
cursor.execute(query)
result = cursor.fetchall()
except Error as e:
print('Error:', e)
unit = result[0][0]
tool = result[0][1]
#print(result[0][0])
#print(result[0][1])
if("health" in pathFile):
datetime = str(row[0]).replace("\"", "").split(" ")
date = datetime[0]
time = datetime[1]
battery = row[1]
temperature = row[2]
dati.append((unit, tool, 1, date, time, battery, temperature))
dati.append((unit, tool, 2, date, time, battery, temperature))
dati.append((unit, tool, 3, date, time, battery, temperature))
dati.append((unit, tool, 4, date, time, battery, temperature))
dati.append((unit, tool, 5, date, time, battery, temperature))
else:
datetime = str(row[0]).replace("\"", "").split(" ")
date = datetime[0]
time = datetime[1]
atmpressure = row[1]#nodo1
#raw
freqinhzch1 = row[2]#nodo2
freqindigitch1 = row[3]#nodo2
thermResInOhmsch1 = row[4]#nodo2
freqinhzch2 = row[5]#nodo3
freqindigitch2 = row[6]#nodo3
thermResInOhmsch2 = row[7]#nodo3
freqinhzch3 = row[8]#nodo4
freqindigitch3 = row[9]#nodo4
thermResInOhmsch3 = row[10]#nodo4
freqinhzch4 = row[11]#nodo5
freqindigitch4 = row[12]#nodo5
thermResInOhmsch4 = row[13]#nodo5
#elab
pch1 = row[18]#nodo2
tch1 = row[19]#nodo2
pch2 = row[20]#nodo3
tch2 = row[21]#nodo3
pch3 = row[22]#nodo4
tch3 = row[23]#nodo4
pch4 = row[24]#nodo5
tch4 = row[25]#nodo5
rawDatiReadings.append((unit, tool, 1, atmpressure, date, time))
rawDatiReadings.append((unit, tool, 2, freqinhzch1, thermResInOhmsch1, freqindigitch1, date, time))
rawDatiReadings.append((unit, tool, 3, freqinhzch2, thermResInOhmsch2, freqindigitch2, date, time))
rawDatiReadings.append((unit, tool, 4, freqinhzch3, thermResInOhmsch3, freqindigitch3, date, time))
rawDatiReadings.append((unit, tool, 5, freqinhzch4, thermResInOhmsch4, freqindigitch4, date, time))
elabDatiReadings.append((unit, tool, 1, atmpressure, date, time))
elabDatiReadings.append((unit, tool, 2, pch1, tch1, date, time))
elabDatiReadings.append((unit, tool, 3, pch2, tch2, date, time))
elabDatiReadings.append((unit, tool, 4, pch3, tch3, date, time))
elabDatiReadings.append((unit, tool, 5, pch4, tch4, date, time))
#[ram],[elab]#quando c'era solo 1 riga
#dati = [
# [
# (unit, tool, 1, atmpressure, date, time),
# (unit, tool, 2, freqinhzch1, thermResInOhmsch1, freqindigitch1, date, time),
# (unit, tool, 3, freqinhzch2, thermResInOhmsch2, freqindigitch2, date, time),
# (unit, tool, 4, freqinhzch3, thermResInOhmsch3, freqindigitch3, date, time),
# (unit, tool, 5, freqinhzch4, thermResInOhmsch4, freqindigitch4, date, time),
# ], [
# (unit, tool, 1, atmpressure, date, time),
# (unit, tool, 2, pch1, tch1, date, time),
# (unit, tool, 3, pch2, tch2, date, time),
# (unit, tool, 4, pch3, tch3, date, time),
# (unit, tool, 5, pch4, tch4, date, time),
# ]
# ]
i+=1
#print(dati)
if(len(rawDatiReadings) > 0 or len(elabDatiReadings) > 0):
datiReadings = [rawDatiReadings, elabDatiReadings]
if(len(datiReadings) > 0):
return datiReadings
return dati
def main():
insertData(getDataFromCsv(sys.argv[1]))
if __name__ == '__main__':
main()

306
src/old_script/sorotecPini.py Executable file
View File

@@ -0,0 +1,306 @@
#!/usr/bin/env python3
import sys
import os
from mysql.connector import MySQLConnection, Error
from dbconfig import read_db_config
from datetime import datetime
import math
import shutil
def removeDuplicates(lst):
return list(set([i for i in lst]))
def getDataFromCsvAndInsert(pathFile):
try:
print(pathFile)
folder_name = pathFile.split("/")[-2]#cartella
with open(pathFile, 'r') as file:
data = file.readlines()
data = [row.rstrip() for row in data]
if(len(data) > 0 and data is not None):
if(folder_name == "ID0247"):
unit_name = "ID0247"
tool_name = "DT0001"
data.pop(0) #rimuove header
data.pop(0)
data.pop(0)
data.pop(0)
data = [element for element in data if element != ""]
try:
db_config = read_db_config()
conn = MySQLConnection(**db_config)
cursor = conn.cursor()
queryElab = "insert ignore into ELABDATADISP(UnitName,ToolNameID,NodeNum,EventDate,EventTime,load_value) values (%s,%s,%s,%s,%s,%s)"
queryRaw = "insert ignore into RAWDATACOR(UnitName,ToolNameID,NodeNum,EventDate,EventTime,BatLevel,Temperature,Val0) values (%s,%s,%s,%s,%s,%s,%s,%s)"
if("_1_" in pathFile):
print("File tipo 1.\n")
#print(unit_name, tool_name)
dataToInsertElab = []
dataToInsertRaw = []
for row in data:
rowSplitted = row.replace("\"","").split(";")
eventTimestamp = rowSplitted[0].split(" ")
date = eventTimestamp[0].split("-")
date = date[2]+"-"+date[1]+"-"+date[0]
time = eventTimestamp[1]
an3 = rowSplitted[1]
an4 = rowSplitted[2]#V unit battery
OUTREG2 = rowSplitted[3]
E8_181_CH2 = rowSplitted[4]#2
E8_181_CH3 = rowSplitted[5]#3
E8_181_CH4 = rowSplitted[6]#4
E8_181_CH5 = rowSplitted[7]#5
E8_181_CH6 = rowSplitted[8]#6
E8_181_CH7 = rowSplitted[9]#7
E8_181_CH8 = rowSplitted[10]#8
E8_182_CH1 = rowSplitted[11]#9
E8_182_CH2 = rowSplitted[12]#10
E8_182_CH3 = rowSplitted[13]#11
E8_182_CH4 = rowSplitted[14]#12
E8_182_CH5 = rowSplitted[15]#13
E8_182_CH6 = rowSplitted[16]#14
E8_182_CH7 = rowSplitted[17]#15
E8_182_CH8 = rowSplitted[18]#16
E8_183_CH1 = rowSplitted[19]#17
E8_183_CH2 = rowSplitted[20]#18
E8_183_CH3 = rowSplitted[21]#19
E8_183_CH4 = rowSplitted[22]#20
E8_183_CH5 = rowSplitted[23]#21
E8_183_CH6 = rowSplitted[24]#22
E8_183_CH7 = rowSplitted[25]#23
E8_183_CH8 = rowSplitted[26]#24
E8_184_CH1 = rowSplitted[27]#25
E8_184_CH2 = rowSplitted[28]#26
E8_184_CH3 = rowSplitted[29]#27 mv/V
E8_184_CH4 = rowSplitted[30]#28 mv/V
E8_184_CH5 = rowSplitted[31]#29 mv/V
E8_184_CH6 = rowSplitted[32]#30 mv/V
E8_184_CH7 = rowSplitted[33]#31 mv/V
E8_184_CH8 = rowSplitted[34]#32 mv/V
E8_181_CH1 = rowSplitted[35]#1
an1 = rowSplitted[36]
an2 = rowSplitted[37]
#print(unit_name, tool_name, 1, E8_181_CH1)
#print(unit_name, tool_name, 2, E8_181_CH2)
#print(unit_name, tool_name, 3, E8_181_CH3)
#print(unit_name, tool_name, 4, E8_181_CH4)
#print(unit_name, tool_name, 5, E8_181_CH5)
#print(unit_name, tool_name, 6, E8_181_CH6)
#print(unit_name, tool_name, 7, E8_181_CH7)
#print(unit_name, tool_name, 8, E8_181_CH8)
#print(unit_name, tool_name, 9, E8_182_CH1)
#print(unit_name, tool_name, 10, E8_182_CH2)
#print(unit_name, tool_name, 11, E8_182_CH3)
#print(unit_name, tool_name, 12, E8_182_CH4)
#print(unit_name, tool_name, 13, E8_182_CH5)
#print(unit_name, tool_name, 14, E8_182_CH6)
#print(unit_name, tool_name, 15, E8_182_CH7)
#print(unit_name, tool_name, 16, E8_182_CH8)
#print(unit_name, tool_name, 17, E8_183_CH1)
#print(unit_name, tool_name, 18, E8_183_CH2)
#print(unit_name, tool_name, 19, E8_183_CH3)
#print(unit_name, tool_name, 20, E8_183_CH4)
#print(unit_name, tool_name, 21, E8_183_CH5)
#print(unit_name, tool_name, 22, E8_183_CH6)
#print(unit_name, tool_name, 23, E8_183_CH7)
#print(unit_name, tool_name, 24, E8_183_CH8)
#print(unit_name, tool_name, 25, E8_184_CH1)
#print(unit_name, tool_name, 26, E8_184_CH2)
#print(unit_name, tool_name, 27, E8_184_CH3)
#print(unit_name, tool_name, 28, E8_184_CH4)
#print(unit_name, tool_name, 29, E8_184_CH5)
#print(unit_name, tool_name, 30, E8_184_CH6)
#print(unit_name, tool_name, 31, E8_184_CH7)
#print(unit_name, tool_name, 32, E8_184_CH8)
#---------------------------------------------------------------------------------------
dataToInsertRaw.append((unit_name, tool_name, 1, date, time, an4, -273, E8_181_CH1))
dataToInsertRaw.append((unit_name, tool_name, 2, date, time, an4, -273, E8_181_CH2))
dataToInsertRaw.append((unit_name, tool_name, 3, date, time, an4, -273, E8_181_CH3))
dataToInsertRaw.append((unit_name, tool_name, 4, date, time, an4, -273, E8_181_CH4))
dataToInsertRaw.append((unit_name, tool_name, 5, date, time, an4, -273, E8_181_CH5))
dataToInsertRaw.append((unit_name, tool_name, 6, date, time, an4, -273, E8_181_CH6))
dataToInsertRaw.append((unit_name, tool_name, 7, date, time, an4, -273, E8_181_CH7))
dataToInsertRaw.append((unit_name, tool_name, 8, date, time, an4, -273, E8_181_CH8))
dataToInsertRaw.append((unit_name, tool_name, 9, date, time, an4, -273, E8_182_CH1))
dataToInsertRaw.append((unit_name, tool_name, 10, date, time, an4, -273, E8_182_CH2))
dataToInsertRaw.append((unit_name, tool_name, 11, date, time, an4, -273, E8_182_CH3))
dataToInsertRaw.append((unit_name, tool_name, 12, date, time, an4, -273, E8_182_CH4))
dataToInsertRaw.append((unit_name, tool_name, 13, date, time, an4, -273, E8_182_CH5))
dataToInsertRaw.append((unit_name, tool_name, 14, date, time, an4, -273, E8_182_CH6))
dataToInsertRaw.append((unit_name, tool_name, 15, date, time, an4, -273, E8_182_CH7))
dataToInsertRaw.append((unit_name, tool_name, 16, date, time, an4, -273, E8_182_CH8))
dataToInsertRaw.append((unit_name, tool_name, 17, date, time, an4, -273, E8_183_CH1))
dataToInsertRaw.append((unit_name, tool_name, 18, date, time, an4, -273, E8_183_CH2))
dataToInsertRaw.append((unit_name, tool_name, 19, date, time, an4, -273, E8_183_CH3))
dataToInsertRaw.append((unit_name, tool_name, 20, date, time, an4, -273, E8_183_CH4))
dataToInsertRaw.append((unit_name, tool_name, 21, date, time, an4, -273, E8_183_CH5))
dataToInsertRaw.append((unit_name, tool_name, 22, date, time, an4, -273, E8_183_CH6))
dataToInsertRaw.append((unit_name, tool_name, 23, date, time, an4, -273, E8_183_CH7))
dataToInsertRaw.append((unit_name, tool_name, 24, date, time, an4, -273, E8_183_CH8))
dataToInsertRaw.append((unit_name, tool_name, 25, date, time, an4, -273, E8_184_CH1))
dataToInsertRaw.append((unit_name, tool_name, 26, date, time, an4, -273, E8_184_CH2))
#---------------------------------------------------------------------------------------
dataToInsertElab.append((unit_name, tool_name, 1, date, time, E8_181_CH1))
dataToInsertElab.append((unit_name, tool_name, 2, date, time, E8_181_CH2))
dataToInsertElab.append((unit_name, tool_name, 3, date, time, E8_181_CH3))
dataToInsertElab.append((unit_name, tool_name, 4, date, time, E8_181_CH4))
dataToInsertElab.append((unit_name, tool_name, 5, date, time, E8_181_CH5))
dataToInsertElab.append((unit_name, tool_name, 6, date, time, E8_181_CH6))
dataToInsertElab.append((unit_name, tool_name, 7, date, time, E8_181_CH7))
dataToInsertElab.append((unit_name, tool_name, 8, date, time, E8_181_CH8))
dataToInsertElab.append((unit_name, tool_name, 9, date, time, E8_182_CH1))
dataToInsertElab.append((unit_name, tool_name, 10, date, time, E8_182_CH2))
dataToInsertElab.append((unit_name, tool_name, 11, date, time, E8_182_CH3))
dataToInsertElab.append((unit_name, tool_name, 12, date, time, E8_182_CH4))
dataToInsertElab.append((unit_name, tool_name, 13, date, time, E8_182_CH5))
dataToInsertElab.append((unit_name, tool_name, 14, date, time, E8_182_CH6))
dataToInsertElab.append((unit_name, tool_name, 15, date, time, E8_182_CH7))
dataToInsertElab.append((unit_name, tool_name, 16, date, time, E8_182_CH8))
dataToInsertElab.append((unit_name, tool_name, 17, date, time, E8_183_CH1))
dataToInsertElab.append((unit_name, tool_name, 18, date, time, E8_183_CH2))
dataToInsertElab.append((unit_name, tool_name, 19, date, time, E8_183_CH3))
dataToInsertElab.append((unit_name, tool_name, 20, date, time, E8_183_CH4))
dataToInsertElab.append((unit_name, tool_name, 21, date, time, E8_183_CH5))
dataToInsertElab.append((unit_name, tool_name, 22, date, time, E8_183_CH6))
dataToInsertElab.append((unit_name, tool_name, 23, date, time, E8_183_CH7))
dataToInsertElab.append((unit_name, tool_name, 24, date, time, E8_183_CH8))
dataToInsertElab.append((unit_name, tool_name, 25, date, time, E8_184_CH1))
dataToInsertElab.append((unit_name, tool_name, 26, date, time, E8_184_CH2))
#---------------------------------------------------------------------------------------
cursor.executemany(queryElab, dataToInsertElab)
cursor.executemany(queryRaw, dataToInsertRaw)
conn.commit()
#print(dataToInsertElab)
#print(dataToInsertRaw)
elif("_2_" in pathFile):
print("File tipo 2.\n")
#print(unit_name, tool_name)
dataToInsertElab = []
dataToInsertRaw = []
for row in data:
rowSplitted = row.replace("\"","").split(";")
eventTimestamp = rowSplitted[0].split(" ")
date = eventTimestamp[0].split("-")
date = date[2]+"-"+date[1]+"-"+date[0]
time = eventTimestamp[1]
an2 = rowSplitted[1]
an3 = rowSplitted[2]
an1 = rowSplitted[3]
OUTREG2 = rowSplitted[4]
E8_181_CH1 = rowSplitted[5]#33 mv/V
E8_181_CH2 = rowSplitted[6]#34 mv/V
E8_181_CH3 = rowSplitted[7]#35 mv/V
E8_181_CH4 = rowSplitted[8]#36 mv/V
E8_181_CH5 = rowSplitted[9]#37 mv/V
E8_181_CH6 = rowSplitted[10]#38 mv/V
E8_181_CH7 = rowSplitted[11]#39 mv/V
E8_181_CH8 = rowSplitted[12]#40 mv/V
E8_182_CH1 = rowSplitted[13]#41
E8_182_CH2 = rowSplitted[14]#42
E8_182_CH3 = rowSplitted[15]#43
E8_182_CH4 = rowSplitted[16]#44
E8_182_CH5 = rowSplitted[17]#45 mv/V
E8_182_CH6 = rowSplitted[18]#46 mv/V
E8_182_CH7 = rowSplitted[19]#47 mv/V
E8_182_CH8 = rowSplitted[20]#48 mv/V
E8_183_CH1 = rowSplitted[21]#49
E8_183_CH2 = rowSplitted[22]#50
E8_183_CH3 = rowSplitted[23]#51
E8_183_CH4 = rowSplitted[24]#52
E8_183_CH5 = rowSplitted[25]#53 mv/V
E8_183_CH6 = rowSplitted[26]#54 mv/V
E8_183_CH7 = rowSplitted[27]#55 mv/V
E8_183_CH8 = rowSplitted[28]#56
E8_184_CH1 = rowSplitted[29]#57
E8_184_CH2 = rowSplitted[30]#58
E8_184_CH3 = rowSplitted[31]#59
E8_184_CH4 = rowSplitted[32]#60
E8_184_CH5 = rowSplitted[33]#61
E8_184_CH6 = rowSplitted[34]#62
E8_184_CH7 = rowSplitted[35]#63 mv/V
E8_184_CH8 = rowSplitted[36]#64 mv/V
an4 = rowSplitted[37]#V unit battery
#print(unit_name, tool_name, 33, E8_181_CH1)
#print(unit_name, tool_name, 34, E8_181_CH2)
#print(unit_name, tool_name, 35, E8_181_CH3)
#print(unit_name, tool_name, 36, E8_181_CH4)
#print(unit_name, tool_name, 37, E8_181_CH5)
#print(unit_name, tool_name, 38, E8_181_CH6)
#print(unit_name, tool_name, 39, E8_181_CH7)
#print(unit_name, tool_name, 40, E8_181_CH8)
#print(unit_name, tool_name, 41, E8_182_CH1)
#print(unit_name, tool_name, 42, E8_182_CH2)
#print(unit_name, tool_name, 43, E8_182_CH3)
#print(unit_name, tool_name, 44, E8_182_CH4)
#print(unit_name, tool_name, 45, E8_182_CH5)
#print(unit_name, tool_name, 46, E8_182_CH6)
#print(unit_name, tool_name, 47, E8_182_CH7)
#print(unit_name, tool_name, 48, E8_182_CH8)
#print(unit_name, tool_name, 49, E8_183_CH1)
#print(unit_name, tool_name, 50, E8_183_CH2)
#print(unit_name, tool_name, 51, E8_183_CH3)
#print(unit_name, tool_name, 52, E8_183_CH4)
#print(unit_name, tool_name, 53, E8_183_CH5)
#print(unit_name, tool_name, 54, E8_183_CH6)
#print(unit_name, tool_name, 55, E8_183_CH7)
#print(unit_name, tool_name, 56, E8_183_CH8)
#print(unit_name, tool_name, 57, E8_184_CH1)
#print(unit_name, tool_name, 58, E8_184_CH2)
#print(unit_name, tool_name, 59, E8_184_CH3)
#print(unit_name, tool_name, 60, E8_184_CH4)
#print(unit_name, tool_name, 61, E8_184_CH5)
#print(unit_name, tool_name, 62, E8_184_CH6)
#print(unit_name, tool_name, 63, E8_184_CH7)
#print(unit_name, tool_name, 64, E8_184_CH8)
#print(rowSplitted)
#---------------------------------------------------------------------------------------
dataToInsertRaw.append((unit_name, tool_name, 41, date, time, an4, -273, E8_182_CH1))
dataToInsertRaw.append((unit_name, tool_name, 42, date, time, an4, -273, E8_182_CH2))
dataToInsertRaw.append((unit_name, tool_name, 43, date, time, an4, -273, E8_182_CH3))
dataToInsertRaw.append((unit_name, tool_name, 44, date, time, an4, -273, E8_182_CH4))
dataToInsertRaw.append((unit_name, tool_name, 49, date, time, an4, -273, E8_183_CH1))
dataToInsertRaw.append((unit_name, tool_name, 50, date, time, an4, -273, E8_183_CH2))
dataToInsertRaw.append((unit_name, tool_name, 51, date, time, an4, -273, E8_183_CH3))
dataToInsertRaw.append((unit_name, tool_name, 52, date, time, an4, -273, E8_183_CH4))
dataToInsertRaw.append((unit_name, tool_name, 56, date, time, an4, -273, E8_183_CH8))
dataToInsertRaw.append((unit_name, tool_name, 57, date, time, an4, -273, E8_184_CH1))
dataToInsertRaw.append((unit_name, tool_name, 58, date, time, an4, -273, E8_184_CH2))
dataToInsertRaw.append((unit_name, tool_name, 59, date, time, an4, -273, E8_184_CH3))
dataToInsertRaw.append((unit_name, tool_name, 60, date, time, an4, -273, E8_184_CH4))
dataToInsertRaw.append((unit_name, tool_name, 61, date, time, an4, -273, E8_184_CH5))
dataToInsertRaw.append((unit_name, tool_name, 62, date, time, an4, -273, E8_184_CH6))
#---------------------------------------------------------------------------------------
dataToInsertElab.append((unit_name, tool_name, 41, date, time, E8_182_CH1))
dataToInsertElab.append((unit_name, tool_name, 42, date, time, E8_182_CH2))
dataToInsertElab.append((unit_name, tool_name, 43, date, time, E8_182_CH3))
dataToInsertElab.append((unit_name, tool_name, 44, date, time, E8_182_CH4))
dataToInsertElab.append((unit_name, tool_name, 49, date, time, E8_183_CH1))
dataToInsertElab.append((unit_name, tool_name, 50, date, time, E8_183_CH2))
dataToInsertElab.append((unit_name, tool_name, 51, date, time, E8_183_CH3))
dataToInsertElab.append((unit_name, tool_name, 52, date, time, E8_183_CH4))
dataToInsertElab.append((unit_name, tool_name, 56, date, time, E8_183_CH8))
dataToInsertElab.append((unit_name, tool_name, 57, date, time, E8_184_CH1))
dataToInsertElab.append((unit_name, tool_name, 58, date, time, E8_184_CH2))
dataToInsertElab.append((unit_name, tool_name, 59, date, time, E8_184_CH3))
dataToInsertElab.append((unit_name, tool_name, 60, date, time, E8_184_CH4))
dataToInsertElab.append((unit_name, tool_name, 61, date, time, E8_184_CH5))
dataToInsertElab.append((unit_name, tool_name, 62, date, time, E8_184_CH6))
#---------------------------------------------------------------------------------------
cursor.executemany(queryElab, dataToInsertElab)
cursor.executemany(queryRaw, dataToInsertRaw)
conn.commit()
#print(dataToInsertElab)
#print(dataToInsertRaw)
except Error as e:
print('Error:', e)
finally:
cursor.close()
conn.close()
except Exception as e:
print(f"An unexpected error occurred: {str(e)}\n")
def main():
getDataFromCsvAndInsert(sys.argv[1])
if __name__ == '__main__':
main()

View File

@@ -57,7 +57,7 @@ class Config:
self.tools_name = [part for part in c.get("tool", "Names").split('|')] self.tools_name = [part for part in c.get("tool", "Names").split('|')]
self.tools_type = [part for part in c.get("tool", "Types").split('|')] self.tools_type = [part for part in c.get("tool", "Types").split('|')]
self.tools_alias = { self.tools_alias = {
key: value key: key if value == '=' else value
for item in c.get("tool", "Alias").split('|') for item in c.get("tool", "Alias").split('|')
for key, value in [item.split(':', 1)] for key, value in [item.split(':', 1)]
} }

View File

@@ -32,7 +32,15 @@ def on_file_received(self: object, file: str) -> None:
tool_type = extract_value(cfg.tools_type, filename, str(lines[0:10])) tool_type = extract_value(cfg.tools_type, filename, str(lines[0:10]))
tool_info = "{}" tool_info = "{}"
unit_type = cfg.units_alias.get(unit_type.upper(), unit_type) # se esiste l'alias in alias_unit_type, allora prende il valore dell'alias... verifica sia lo unit_type completo che i primi 3 caratteri per CO_xxxxx
upper_unit_type = unit_type.upper()
unit_type = cfg.units_alias.get(upper_unit_type) or \
cfg.units_alias.get(upper_unit_type[:3]) or \
upper_unit_type
upper_tool_type = tool_type.upper()
tool_type = cfg.tools_alias.get(upper_tool_type) or \
cfg.tools_alias.get(upper_tool_type[:3]) or \
upper_tool_type
try: try:
conn = connetti_db(cfg) conn = connetti_db(cfg)

View File

@@ -0,0 +1,45 @@
import asyncio
import tempfile
import os
from utils.database import WorkflowFlags
from utils.database.loader_action import update_status, unlock
from utils.csv.data_preparation import get_data
import logging
logger = logging.getLogger(__name__)
async def main_loader(cfg: object, id: int, pool: object) -> None:
filename, UnitName, ToolNameID, ToolData = await get_data(cfg, id, pool)
# Creare un file temporaneo
with tempfile.NamedTemporaryFile(mode='w', prefix= filename, suffix='.csv', delete=False) as temp_file:
temp_file.write(ToolData)
temp_filename = temp_file.name
try:
# Usa asyncio.subprocess per vero async
process = await asyncio.create_subprocess_exec(
'python3', 'old_script/hirpiniaLoadScript.py', temp_filename,
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE
)
stdout, stderr = await process.communicate()
result_stdout = stdout.decode('utf-8')
result_stderr = stderr.decode('utf-8')
finally:
# Pulire il file temporaneo
os.unlink(temp_filename)
if process.returncode != 0:
logger.error(f"Errore nell'esecuzione del programma hirpiniaLoadScript.py: {result_stderr}")
raise Exception(f"Errore nel programma: {result_stderr}")
else:
logger.info("Programma hirpiniaLoadScript.py eseguito con successo.")
logger.debug(f"Stdout: {result_stdout}")
await update_status(cfg, id, WorkflowFlags.DATA_LOADED, pool)
await update_status(cfg, id, WorkflowFlags.DATA_ELABORATED, pool)
await unlock(cfg, id, pool)

View File

@@ -21,7 +21,7 @@ async def main_loader(cfg: object, id: int, pool: object) -> None:
try: try:
# Usa asyncio.subprocess per vero async # Usa asyncio.subprocess per vero async
process = await asyncio.create_subprocess_exec( process = await asyncio.create_subprocess_exec(
'python3', 'old_script/TS_PiniScript.py', temp_filename, 'python3', 'old_script/sisgeoLoadScript.py', temp_filename,
stdout=asyncio.subprocess.PIPE, stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE stderr=asyncio.subprocess.PIPE
) )
@@ -35,10 +35,10 @@ async def main_loader(cfg: object, id: int, pool: object) -> None:
os.unlink(temp_filename) os.unlink(temp_filename)
if process.returncode != 0: if process.returncode != 0:
logger.error(f"Errore nell'esecuzione del programma TS_PiniScript.py: {result_stderr}") logger.error(f"Errore nell'esecuzione del programma sisgeoLoadScript.py: {result_stderr}")
raise Exception(f"Errore nel programma: {result_stderr}") raise Exception(f"Errore nel programma: {result_stderr}")
else: else:
logger.info("Programma TS_PiniScript.py eseguito con successo.") logger.info("Programma sisgeoLoadScript.py eseguito con successo.")
logger.debug(f"Stdout: {result_stdout}") logger.debug(f"Stdout: {result_stdout}")
await update_status(cfg, id, WorkflowFlags.DATA_LOADED, pool) await update_status(cfg, id, WorkflowFlags.DATA_LOADED, pool)
await update_status(cfg, id, WorkflowFlags.DATA_ELABORATED, pool) await update_status(cfg, id, WorkflowFlags.DATA_ELABORATED, pool)

View File

@@ -21,7 +21,7 @@ async def main_loader(cfg: object, id: int, pool: object) -> None:
try: try:
# Usa asyncio.subprocess per vero async # Usa asyncio.subprocess per vero async
process = await asyncio.create_subprocess_exec( process = await asyncio.create_subprocess_exec(
'python3', 'old_script/TS_PiniScript.py', temp_filename, 'python3', 'old_script/sisgeoLoadScript.py', temp_filename,
stdout=asyncio.subprocess.PIPE, stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE stderr=asyncio.subprocess.PIPE
) )
@@ -35,10 +35,10 @@ async def main_loader(cfg: object, id: int, pool: object) -> None:
os.unlink(temp_filename) os.unlink(temp_filename)
if process.returncode != 0: if process.returncode != 0:
logger.error(f"Errore nell'esecuzione del programma TS_PiniScript.py: {result_stderr}") logger.error(f"Errore nell'esecuzione del programma sisgeoLoadScript.py: {result_stderr}")
raise Exception(f"Errore nel programma: {result_stderr}") raise Exception(f"Errore nel programma: {result_stderr}")
else: else:
logger.info("Programma TS_PiniScript.py eseguito con successo.") logger.info("Programma sisgeoLoadScript.py eseguito con successo.")
logger.debug(f"Stdout: {result_stdout}") logger.debug(f"Stdout: {result_stdout}")
await update_status(cfg, id, WorkflowFlags.DATA_LOADED, pool) await update_status(cfg, id, WorkflowFlags.DATA_LOADED, pool)
await update_status(cfg, id, WorkflowFlags.DATA_ELABORATED, pool) await update_status(cfg, id, WorkflowFlags.DATA_ELABORATED, pool)

View File

@@ -21,7 +21,7 @@ async def main_loader(cfg: object, id: int, pool: object) -> None:
try: try:
# Usa asyncio.subprocess per vero async # Usa asyncio.subprocess per vero async
process = await asyncio.create_subprocess_exec( process = await asyncio.create_subprocess_exec(
'python3', 'old_script/TS_PiniScript.py', temp_filename, 'python3', 'old_script/sorotecPini.py', temp_filename,
stdout=asyncio.subprocess.PIPE, stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE stderr=asyncio.subprocess.PIPE
) )
@@ -35,10 +35,10 @@ async def main_loader(cfg: object, id: int, pool: object) -> None:
os.unlink(temp_filename) os.unlink(temp_filename)
if process.returncode != 0: if process.returncode != 0:
logger.error(f"Errore nell'esecuzione del programma TS_PiniScript.py: {result_stderr}") logger.error(f"Errore nell'esecuzione del programma sorotecPini.py: {result_stderr}")
raise Exception(f"Errore nel programma: {result_stderr}") raise Exception(f"Errore nel programma: {result_stderr}")
else: else:
logger.info("Programma TS_PiniScript.py eseguito con successo.") logger.info("Programma sorotecPini.py eseguito con successo.")
logger.debug(f"Stdout: {result_stdout}") logger.debug(f"Stdout: {result_stdout}")
await update_status(cfg, id, WorkflowFlags.DATA_LOADED, pool) await update_status(cfg, id, WorkflowFlags.DATA_LOADED, pool)
await update_status(cfg, id, WorkflowFlags.DATA_ELABORATED, pool) await update_status(cfg, id, WorkflowFlags.DATA_ELABORATED, pool)