##// END OF EJS Templates
Grafica Tiempo Real...
JesusTapia-dev -
r14:c7a0c9b6ab57
parent child
Show More
@@ -1,9 +1,22
1 import matplotlib.pyplot as plt
2 import matplotlib.animation as animation
1 3 import paho.mqtt.client as mqtt
2
3 subscribe_topic="tesis/potencia"
4 import numpy as np
5 subscribe_topic="tesis/AnalogRaw"
4 6 broker_address = "192.168.43.149"
5 potenciaReal=[]
7 analogRawMatriz=[]
6 8 contador = 0
9 data=[]
10 def init():
11 ax.set_ylim(0, 500) # Ajusta los límites de la gráfica según tus necesidades
12 ax.set_xlim(0,30)
13 line.set_data([], [])
14 return line,
15 def update(frame):
16 y_data = np.array(data)
17 x_data = np.arange(len(y_data))
18 line.set_data(x_data, y_data)
19 return line,
7 20 # Callback cuando se establece la conexión con el broker MQTT
8 21 def on_connect(client, userdata, flags, rc):
9 22 if rc == 0:
@@ -14,21 +27,39 def on_connect(client, userdata, flags, rc):
14 27 print("Error de conexión. Código de retorno =", rc)
15 28 # Callback cuando se recibe un mensaje en el tópico suscrito
16 29 def on_message(client, userdata, msg):
17 global potenciaReal
30 global analogRawMatriz
18 31 global contador
32 global data
19 33 mensaje = float(msg.payload.decode())
20 potenciaReal.append(mensaje)
34 analogRawMatriz.append(mensaje)
21 35 contador=contador+1
22 if contador==20:
36 if contador==500:
23 37 contador=0
24 valor_promedio = sum(potenciaReal) / len(potenciaReal)
25 potenciaReal=[]
26 print(valor_promedio)
38 valor_promedio = sum(analogRawMatriz) / len(analogRawMatriz)
39 potencia=0.6233*valor_promedio+62.891
40 data.append(potencia)
41 data[:] = data[-30:]
42 analogRawMatriz=[]
43 print(potencia)
27 44 # Configurar el cliente MQTT
28 45 client = mqtt.Client()
29 46 # Configurar los callbacks
30 47 client.on_connect = on_connect
31 48 client.on_message = on_message
32 49 client.connect(broker_address, port=1883, keepalive=60)
50 # Configuración de la gráfica
51 fig, ax = plt.subplots()
52 line, = ax.plot([], [], lw=2)
53 ax.set_xlabel('Tiempo')
54 ax.set_ylabel('Analog Raw')
55 ax.grid(True)
56 # Configuración de la animación
57 ani = animation.FuncAnimation(fig, update, frames=None, init_func=init, blit=True)
33 58 # Mantener la ejecución del programa para recibir mensajes
34 client.loop_forever()
59 #client.loop_forever()
60 client.loop_start()
61 plt.show()
62 client.loop_stop()
63 """"
64 PARA UN IPP DE 10MS Y 10 US DE ANCHO, la ecuación sera:PotLinea= 0.6233*AnalogRaw+62.891
65 """ No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now