diff --git a/python_mqtt/commandPotencia.txt b/python_mqtt/commandPotencia.txt new file mode 100644 index 0000000..ca42604 --- /dev/null +++ b/python_mqtt/commandPotencia.txt @@ -0,0 +1,2 @@ +IPP(km) DutyCicle(%) Wu Wd Nd Nu Eu Ed Sd Su +1500 0.1 250 0 0 0 0 0 200 200 \ No newline at end of file diff --git a/python_mqtt/mainScriptPython_v1.py b/python_mqtt/mainScriptPython_v1.py new file mode 100644 index 0000000..63238ff --- /dev/null +++ b/python_mqtt/mainScriptPython_v1.py @@ -0,0 +1,113 @@ +import paho.mqtt.client as mqtt +from datetime import datetime +import numpy as np +import json +import time +subscribe_topic="tesis/test" +publish_topic="tesis/potencia" +broker_address = "localhost"#"192.168.43.149" +analogRawMatriz=[[],[],[],[],[],[],[],[]] +numMaxdatos=1000 +contador = 0 +data=[] +interval_start_time = time.time() +interval_duration=15 #duracion del intervalo en segundos para el envio de datos +def potenciaAncho10us(AnalogRaw): + potencia=[0,0,0,0,0,0,0,0] + m=1.5476 + b=-91.898 + for i in range(8): + potencia[i]=m*AnalogRaw[i]+b + return potencia + +def potenciaAncho20us(AnalogRaw): + potencia=[0,0,0,0,0,0,0,0] + m=1.5476 + b=-91.898 + for i in range(8): + potencia[i]=m*AnalogRaw[i]+b + return potencia + +def leer_datos_desde_txt(archivo): + try: + with open(archivo, 'r') as file: + lineas = file.readlines() + # Obtiene la segunda línea (índice 1) + segunda_linea = lineas[1] + datos = segunda_linea.strip().split() + datos_numericos = [float(dato) for dato in datos] + return datos_numericos + except FileNotFoundError: + print(f"El archivo '{archivo}' no fue encontrado.") + except Exception as e: + print(f"Error al leer el archivo: {e}") + +def procesamiento_data(analogRawMatriz): + if analogRawMatriz[0]: + average_raw=[0,0,0,0,0,0,0,0,0] + for i in range(8): + average_raw[i] = sum(analogRawMatriz[i]) / len(analogRawMatriz[i]) + if(ancho<15): + potencia=potenciaAncho10us(average_raw) + if ancho>15 and ancho<25: + potencia=potenciaAncho20us(average_raw) + processed_data = {"Ancho_us":IPP,"average_potencia": potencia, "timestamp": datetime.now()} + #client.publish(publish_topic, json.dumps(processed_data)) + print("---------------------------------------") + print(average_raw) + print(processed_data) + +def on_connect(client, userdata, flags, rc): + if rc == 0: + print("Conexión exitosa con el broker") + 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 + mensaje = msg.payload.decode() + lista=json.loads(mensaje) + if contador= interval_duration: + procesamiento_data(analogRawMatriz) # Calcula la potencia y envía los datos al nuevo tópico + interval_start_time = current_time # Reinicia el temporizador del intervalo + analogRawMatriz=[[],[],[],[],[],[],[],[]] + # Puedes ajustar el tiempo de espera según tus necesidades + time.sleep(1) + +except KeyboardInterrupt: + print("Programa detenido por el usuario.") + #procesamiento_data() # Asegúrate de enviar los datos acumulados antes de salir + client.disconnect() + client.loop_stop() diff --git a/python_mqtt/publish_script.py b/python_mqtt/publish_script.py index 553b332..e76c28a 100644 --- a/python_mqtt/publish_script.py +++ b/python_mqtt/publish_script.py @@ -1,13 +1,11 @@ +import paho.mqtt.client as mqtt import paho.mqtt.publish as publish -# Especificar la dirección del broker MQTT como localhost -broker_address = "localhost" - -# Especificar el tópico al que deseas publicar -topico = "tu_topico_aqui" - -# Mensaje que deseas publicar -mensaje = "Hola, mundo MQTT!" +MQTT_SERVER="10.10.10.102" +MQTT_PORT = 1883 +publishTopic="tesis/test" +broker_address = "localhost" +mensaje = "[10,20,30,40,50,60,70,80]" # Publicar el mensaje en el tópico -publish.single(topico, mensaje, hostname=broker_address) +publish.single(publishTopic, mensaje, hostname=MQTT_SERVER) \ No newline at end of file diff --git a/python_mqtt/subscribe_script.py b/python_mqtt/subscribe_script.py index 39dada7..a4668a4 100644 --- a/python_mqtt/subscribe_script.py +++ b/python_mqtt/subscribe_script.py @@ -8,7 +8,7 @@ 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_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, @@ -36,11 +36,11 @@ def on_message(client, userdata, msg): if contador==500: contador=0 valor_promedio = sum(analogRawMatriz) / len(analogRawMatriz) - potencia=0.6233*valor_promedio+62.891 - data.append(potencia) + # potencia=1.5476*valor_promedio-91.898 + data.append(valor_promedio) data[:] = data[-30:] analogRawMatriz=[] - print(potencia) + print(valor_promedio) # Configurar el cliente MQTT client = mqtt.Client() # Configurar los callbacks @@ -61,5 +61,5 @@ 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 +PARA UN IPP DE 10MS Y 10 US DE ANCHO, la ecuación sera:PotLinea= 1.5476*AnalogRaw-91.898 """ \ No newline at end of file