diff --git a/MQTT_start/MQTT_start.ino b/MQTT_start/MQTT_start.ino index 95c2b6e..96ebb2f 100644 --- a/MQTT_start/MQTT_start.ino +++ b/MQTT_start/MQTT_start.ino @@ -1,9 +1,80 @@ -void setup() { - // put your setup code here, to run once: +#include +#include + +const char *ssid = "maracumango"; +const char *password = "12345678"; +const char *mqtt_server = "192.168.199.158"; +const int mqtt_port = 1883; +const char *mqtt_client_id = "ESP32_Client"; +const char *subscribe_topic = "tesis/potenciaNominal"; +const char *publish_topic = "tesis/potencia"; + +WiFiClient espClient; +PubSubClient client(espClient); +void setup_wifi() { + delay(10); + Serial.println(); + Serial.print("Conectando a "); + Serial.println(ssid); + WiFi.begin(ssid, password); + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.println("Conectado a la red WiFi"); + Serial.println("Dirección IP: "); + Serial.println(WiFi.localIP()); } -void loop() { - // put your main code here, to run repeatedly: +void callback(char *topic, byte *payload, unsigned int length) { + Serial.print("Mensaje recibido en el tópico: "); + Serial.println(topic); + // Convierte el payload a una cadena de caracteres + char receivedValue[length + 1]; + strncpy(receivedValue, (char *)payload, length); + receivedValue[length] = '\0'; + // Convierte la cadena a un número (en este caso, asume que es un float) + float potenciaNominal = atof(receivedValue); + // Realiza cálculos basados en la potencia nominal recibida (sustituye con tu lógica) + float voltajeCalculado = potenciaNominal * 1.2; + // Publica el resultado en el tópico de voltaje + char result[10]; + snprintf(result, sizeof(result), "%.2f", voltajeCalculado); + client.publish(publish_topic, result); +} + +void reconnect() { + while (!client.connected()) { + Serial.print("Intentando conexión MQTT..."); + if (client.connect(mqtt_client_id)) { + Serial.println("Conectado al servidor MQTT"); + client.subscribe(subscribe_topic); + } else { + Serial.print("Falló, rc="); + Serial.print(client.state()); + Serial.println(" Intentando de nuevo en 5 segundos"); + delay(5000); + } + } +} + +void setup() { + Serial.begin(115200); + setup_wifi(); + client.setServer(mqtt_server, mqtt_port); + client.setCallback(callback); +} + +void loop() { + if (!client.connected()) { + reconnect(); + } + client.loop(); + char str[16]; + sprintf(str, "%u", random(100)); + client.publish(publish_topic, str); + delay(500); }