diff --git a/python_mqtt/subscribe_script.py b/python_mqtt/subscribe_script.py index dd575b9..39dada7 100644 --- a/python_mqtt/subscribe_script.py +++ b/python_mqtt/subscribe_script.py @@ -1,9 +1,22 @@ +import matplotlib.pyplot as plt +import matplotlib.animation as animation import paho.mqtt.client as mqtt - -subscribe_topic="tesis/potencia" +import numpy as np +subscribe_topic="tesis/AnalogRaw" broker_address = "192.168.43.149" -potenciaReal=[] +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: @@ -14,21 +27,39 @@ def on_connect(client, userdata, flags, rc): 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 potenciaReal + global analogRawMatriz global contador + global data mensaje = float(msg.payload.decode()) - potenciaReal.append(mensaje) + analogRawMatriz.append(mensaje) contador=contador+1 - if contador==20: + if contador==500: contador=0 - valor_promedio = sum(potenciaReal) / len(potenciaReal) - potenciaReal=[] - print(valor_promedio) + 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_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 +""" \ No newline at end of file