import matplotlib.pyplot as plt import matplotlib.animation as animation import paho.mqtt.client as mqtt import numpy as np subscribe_topic="tesis/AnalogRaw" broker_address = "192.168.43.149" analogRawMatriz=[] contador = 0 data=[] def init(): ax.set_ylim(0, 500) # Ajusta los límites de la gráfica según tus necesidades ax.set_xlim(0,30) line.set_data([], []) return line, def update(frame): y_data = np.array(data) x_data = np.arange(len(y_data)) line.set_data(x_data, y_data) return line, # Callback cuando se establece la conexión con el broker MQTT def on_connect(client, userdata, flags, rc): if rc == 0: print("Conexión exitosa con el broker") # Suscribirse a un tópico después de la conexión exitosa client.subscribe(subscribe_topic) else: print("Error de conexión. Código de retorno =", rc) # Callback cuando se recibe un mensaje en el tópico suscrito def on_message(client, userdata, msg): global analogRawMatriz global contador global data mensaje = float(msg.payload.decode()) analogRawMatriz.append(mensaje) contador=contador+1 if contador==500: contador=0 valor_promedio = sum(analogRawMatriz) / len(analogRawMatriz) potencia=0.6233*valor_promedio+62.891 data.append(potencia) data[:] = data[-30:] analogRawMatriz=[] print(potencia) # Configurar el cliente MQTT client = mqtt.Client() # Configurar los callbacks client.on_connect = on_connect client.on_message = on_message client.connect(broker_address, port=1883, keepalive=60) # Configuración de la gráfica fig, ax = plt.subplots() line, = ax.plot([], [], lw=2) ax.set_xlabel('Tiempo') ax.set_ylabel('Analog Raw') ax.grid(True) # Configuración de la animación ani = animation.FuncAnimation(fig, update, frames=None, init_func=init, blit=True) # Mantener la ejecución del programa para recibir mensajes #client.loop_forever() client.loop_start() plt.show() client.loop_stop() """" PARA UN IPP DE 10MS Y 10 US DE ANCHO, la ecuación sera:PotLinea= 0.6233*AnalogRaw+62.891 """