##// 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 import paho.mqtt.client as mqtt
3 import paho.mqtt.client as mqtt
2
4 import numpy as np
3 subscribe_topic="tesis/potencia"
5 subscribe_topic="tesis/AnalogRaw"
4 broker_address = "192.168.43.149"
6 broker_address = "192.168.43.149"
5 potenciaReal=[]
7 analogRawMatriz=[]
6 contador = 0
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 # Callback cuando se establece la conexión con el broker MQTT
20 # Callback cuando se establece la conexión con el broker MQTT
8 def on_connect(client, userdata, flags, rc):
21 def on_connect(client, userdata, flags, rc):
9 if rc == 0:
22 if rc == 0:
@@ -14,21 +27,39 def on_connect(client, userdata, flags, rc):
14 print("Error de conexión. Código de retorno =", rc)
27 print("Error de conexión. Código de retorno =", rc)
15 # Callback cuando se recibe un mensaje en el tópico suscrito
28 # Callback cuando se recibe un mensaje en el tópico suscrito
16 def on_message(client, userdata, msg):
29 def on_message(client, userdata, msg):
17 global potenciaReal
30 global analogRawMatriz
18 global contador
31 global contador
32 global data
19 mensaje = float(msg.payload.decode())
33 mensaje = float(msg.payload.decode())
20 potenciaReal.append(mensaje)
34 analogRawMatriz.append(mensaje)
21 contador=contador+1
35 contador=contador+1
22 if contador==20:
36 if contador==500:
23 contador=0
37 contador=0
24 valor_promedio = sum(potenciaReal) / len(potenciaReal)
38 valor_promedio = sum(analogRawMatriz) / len(analogRawMatriz)
25 potenciaReal=[]
39 potencia=0.6233*valor_promedio+62.891
26 print(valor_promedio)
40 data.append(potencia)
41 data[:] = data[-30:]
42 analogRawMatriz=[]
43 print(potencia)
27 # Configurar el cliente MQTT
44 # Configurar el cliente MQTT
28 client = mqtt.Client()
45 client = mqtt.Client()
29 # Configurar los callbacks
46 # Configurar los callbacks
30 client.on_connect = on_connect
47 client.on_connect = on_connect
31 client.on_message = on_message
48 client.on_message = on_message
32 client.connect(broker_address, port=1883, keepalive=60)
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 # Mantener la ejecución del programa para recibir mensajes
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