From 131c86444edba8f5572730f7d3c8a1f34a12a4e3 2023-11-23 19:34:12 From: JesusTapia-dev Date: 2023-11-23 19:34:12 Subject: [PATCH] Publish con Python Se usa maho.mqtt para suscribirse al tópico de potencia y sacar el valor medio en grupos de 20 --- diff --git a/ADC_ZX47/ADC_ZX47.ino b/ADC_ZX47/ADC_ZX47.ino index 0a068a6..3bc2867 100644 --- a/ADC_ZX47/ADC_ZX47.ino +++ b/ADC_ZX47/ADC_ZX47.ino @@ -5,7 +5,7 @@ int analogValue=0; float Vout=0; float Plinea=62.5,Vpk=0;// Valor entre 1 y 500 kW, las unidades son kW float Plcal=0,dif=0,difPlow=0; -bool serialData=1;//Un valor de 1 indica que se debe ingresar por monitor serial +bool serialData=0;//Un valor de 1 indica que se debe ingresar por monitor serial float VoutRef=1,Pmax; int numSamples=20; int total=0; @@ -30,13 +30,18 @@ void loop() { int averageValue=analogRead(pinADC); Vout = 0.8291*averageValue+90.27;//Ajuste realizado para el ADC Plcal=5*pow((Vout+101),2)/(2*175.19*175.19);//Calculamos la potencia en la línea + + Serial.println(Plcal); + delay(10); //dif=abs(Plinea-Plcal)*100/Plinea;//Hallamos la diferencia porcentual + /* if (Plcal>4){//valores por debajo de este umbral serán leidos como tierra Parray[contador]=Plcal; contador =contador+1; } //cuando llenamos los valores hacemos la - if (contador>(SIZE-1)){ + int x=SIZE-1; + if (contador>x){ p=&Parray[0]; Pmax=find_maximun(p); contador=0; @@ -44,10 +49,9 @@ void loop() { difPlow=abs(Plinea-Pmax); Serial.print("Valor normal: "); Serial.println(Pmax); if(dif>10 && difPlow>9) { - Serial.print("Nivel anómalo: "); Serial.println(Pmax); } - } + }*/ } float ecuacionLineal(float Vpk){ float m=175.19,b=-101; diff --git a/python_mqtt/publish_script.py b/python_mqtt/publish_script.py new file mode 100644 index 0000000..553b332 --- /dev/null +++ b/python_mqtt/publish_script.py @@ -0,0 +1,13 @@ +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!" + +# Publicar el mensaje en el tópico +publish.single(topico, mensaje, hostname=broker_address) diff --git a/python_mqtt/subscribe_script.py b/python_mqtt/subscribe_script.py new file mode 100644 index 0000000..dd575b9 --- /dev/null +++ b/python_mqtt/subscribe_script.py @@ -0,0 +1,34 @@ +import paho.mqtt.client as mqtt + +subscribe_topic="tesis/potencia" +broker_address = "192.168.43.149" +potenciaReal=[] +contador = 0 +# 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 potenciaReal + global contador + mensaje = float(msg.payload.decode()) + potenciaReal.append(mensaje) + contador=contador+1 + if contador==20: + contador=0 + valor_promedio = sum(potenciaReal) / len(potenciaReal) + potenciaReal=[] + 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) +# Mantener la ejecución del programa para recibir mensajes +client.loop_forever()