##// END OF EJS Templates
Optimización JS
Optimización JS

File last commit:

r391:f749b7bc4ba8
r392:70274e275276
Show More
mqtt.py
104 lines | 3.6 KiB | text/x-python | PythonLexer
import paho.mqtt.client as mqtt
from radarsys import settings
from radarsys.socketconfig import sio as sio
import numpy as np
import psycopg2
import os
def insert(time,data):
sql = """INSERT INTO atrad_datas(
datetime,nstx,status,temp_cll,nboards,tempdvr,potincdvr,potretdvr,
temp1,potinc1,potret1,temp2,potinc2,potret2,temp3,potinc3,potret3,
temp4,potinc4,potret4,temp5,potinc5,potret5,temp6,potinc6,potret6)
VALUES(%s,%s,%s,%s,%s,%s,%s,%s,
%s,%s,%s,%s,%s,%s,%s,%s,%s,
%s,%s,%s,%s,%s,%s,%s,%s,%s);"""
try:
# connect to the PostgreSQL database
conn = psycopg2.connect(database="radarsys", user='docker', password='docker', host='radarsys-postgres', port= '5432')
# create a new cursor
cur = conn.cursor()
# execute the INSERT statement
#data_tuple = [tuple(i[:]) for i in a]
values = (time,) + tuple(data[0][:25])
cur.execute(sql, values)
# get the generated id back
#vendor_id = cur.fetchone()[0]
# commit the changes to the database
conn.commit()
# close communication with the database
cur.close()
except (Exception, psycopg2.DatabaseError) as error:
print(error)
finally:
if conn is not None:
conn.close()
def maxTemperature(trs):
temps = GetTemperatures(trs)
maxT_STX = [max(i) for i in temps]
maxT = max(maxT_STX)
STXnum = maxT_STX.index(maxT)
STXloc = temps[STXnum].index(maxT)
maxT_loc = 'Amp ' + str(STXnum+1)
if STXloc == 0:
maxT_loc = maxT_loc + " Controller"
elif STXloc<7:
maxT_loc = maxT_loc + " PA " + str(STXloc+1)
else:
maxT_loc = maxT_loc + " Combiners"
return maxT,maxT_loc,temps
def dataConvert(msg):
msgStr = str(msg.payload)
msgClean = [i for i in msgStr[21:-1].split("*")]
dataSTX = [[],[],[],[]]
for trs,i in zip(msgClean,[0,1,2,3]) :
dataSTX[i]= [int(i) for i in trs[1:-1].split(",")]
# Data to database
insert(msgStr[2:21],dataSTX)
# Data to send by socket
id_STX = dataSTX[0][0] // 4
status = ''.join([msgClean[i][3] for i in [0,1,2,3]])
powers = [dataSTX[0][34],dataSTX[0][36],dataSTX[2][32],dataSTX[2][34]]
tmax,index,tempData = maxTemperature(dataSTX)
#Json to send
data = {'time':msgStr[2:21],'num':id_STX,'pow':powers,'tmax':[str(tmax),index],'status':status}
data_temp = {'time':msgStr[2:21],'temp':tempData}
return data, data_temp
def GetTemperatures(data):
np_data = [np.array(i) for i in data]
temps = [i[i<40] for i in np_data]
return [i[i>15].tolist() for i in temps]
def on_connect(mqtt_client, userdata, flags, rc):
if rc == 0:
print('Connected successfullyasdss')
mqtt_client.subscribe("atrad/test4")
print("Exito")
else:
print('Bad connection. Code:', rc)
def on_message(mqtt_client, userdata, msg):
print('Received message on topic: {} with payload: {}'.format(msg.topic,msg.payload), flush=True)
mainData, tempData = dataConvert(msg)
# print("Recibi : {}".format(msg.payload),flush=True)
#socket fot general data
sio.emit('test',data = mainData)
print(mainData)
#socket for temperature details
sio.emit('temptx'+str(mainData['num'] + 1),data = tempData)
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.username_pw_set( '','')
client.connect(
host=os.environ.get('MQTT_SERVER', '10.10.10.200'),
port=int(settings.os.environ.get('MQTT_PORT', 1883)),
keepalive=int(os.environ.get('MQTT_KEEPALIVE', 60))
)