##// END OF EJS Templates
Se agrego el threshold...
Se agrego el threshold Se modifico el programa principal para que la alarma se active según el porcentaje definido por el operador

File last commit:

r17:bd1aca73f3ce
r20:96b1842fbedf schottkyExp
Show More
subscribe_script.py
64 lines | 2.1 KiB | text/x-python | PythonLexer
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(900, 1800) # 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=1.5476*valor_promedio-91.898
data.append(valor_promedio)
data[:] = data[-30:]
analogRawMatriz=[]
print(valor_promedio)
# 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= 1.5476*AnalogRaw-91.898
"""