#include <WiFi.h>
#include <HTTPClient.h>
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
#define LED1 26
#define LED2 27
const char* serverAddress = "https://esp32-5d7f8d64c991.herokuapp.com/iot/1"; // Reemplaza con la dirección de tu servidor
#define HTTP_TIMEOUT 10000 // 10 segundos de tiempo de espera
bool led1State = false;
bool led2State = false;
unsigned long previousMillis = 0;
const long interval = 5000; // Intervalo de tiempo en milisegundos (5 segundos)
void sendHttpRequest(const char* path) {
HTTPClient http;
String url = "https://" + String(serverAddress) + path;
http.begin(url);
http.setTimeout(HTTP_TIMEOUT); // Ajusta el tiempo de espera
int httpCode = http.GET();
if (httpCode > 0) {
Serial.printf("[HTTP] GET... code: %d\n", httpCode);
if (httpCode == HTTP_CODE_OK) {
String payload = http.getString();
Serial.println(payload);
int valueIndex = payload.indexOf("\"value\":");
if (valueIndex != -1) {
int endIndex = payload.indexOf(',', valueIndex);
String valueStr = payload.substring(valueIndex + 8, endIndex);
int value = valueStr.toInt();
// Actualizar el estado de los LEDs basándose en el valor obtenido del servidor
led1State = (value == 1);
led2State = !led1State; // LED2 se configura de manera opuesta a LED1
digitalWrite(LED1, led1State);
digitalWrite(LED2, led2State);
}
}
} else {
Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
}
void setup(void) {
Serial.begin(115200);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
}
Serial.println("Connected to WiFi");
}
void loop(void) {
// Realizar una solicitud HTTP para obtener el estado de los LEDs
sendHttpRequest("/toggle");
// Esperar un tiempo antes de realizar la siguiente solicitud (por ejemplo, 5 segundos)
delay(5000);
}