#include "wifi.h"
#include "peticion.h"
#include "mqtt.h"
#include "servidor.h"
#include "led.h"
MQTT miMqtt;
WifiManager wifiManager;
led_control ledc;
int opcion = 0;
void setup() {
Serial.begin(115200);
Serial.println("Hello, ESP32!");
mostrarMenu();
}
void loop() {
if (Serial.available() > 0) {
opcion = Serial.parseInt();
Serial.readStringUntil('\n'); // limpia el buffer
ejecutarOpcion(opcion);
mostrarMenu();
}
}
void mostrarMenu() {
Serial.println("\n==== MENU ====");
Serial.println("1. Escanear redes WiFi");
Serial.println("2. Conectar a red WiFi");
Serial.println("3. Servidor WEB");
Serial.println("4. Peticion GET a API");
Serial.println("5. Control LED");
Serial.println("6. MQTT");
Serial.println("Seleccione una opcion (1-6):");
}
void ejecutarOpcion(int op) {
switch (op) {
case 1:
wifiManager.scanNetworks();
break;
case 2: {
Serial.println("Ingrese el SSID:");
String ssid = leerCadena();
Serial.println("Ingrese la contraseña:");
String password = leerCadena();
wifiManager.connectWiFi(ssid.c_str(), password.c_str());
if (WiFi.status() == WL_CONNECTED){
iniciarServidor(); // Servidor web
miMqtt.setup_WiFi();
miMqtt.set_MQTT_server();
miMqtt.set_MQTT_callback(); // MQTT
ledc.iniciarServidor(); // LED
}
break;
}
case 3:
Serial.println("Servidor web activo. Visita la IP del ESP32.");
break;
case 4:
obtenerClima();
break;
case 5:
ledc.atenderClientes();
break;
case 6:
miMqtt.reconnect_MQTT();
miMqtt.publish_MQTT();
break;
default:
Serial.println("Opcion no valida");
break;
}
}
String leerCadena() {
while (!Serial.available()) {
delay(10);
}
return Serial.readStringUntil('\n');
}