////////////////////////////////////////////// // RemoteXY include library // ////////////////////////////////////////////// // Debug por serial #define REMOTEXY__DEBUGLOG // RemoteXY select connection mode and include library #define REMOTEXY_MODE__WIFI_CLOUD #include // Librería correcta para ESP32 #include // RemoteXY connection settings #define REMOTEXY_WIFI_SSID "FAMILIA HERNANDEZ" #define REMOTEXY_WIFI_PASSWORD "Aguila337755$" #define REMOTEXY_CLOUD_SERVER "cloud.remotexy.com" #define REMOTEXY_CLOUD_PORT 6376 #define REMOTEXY_CLOUD_TOKEN "c03ba01ea8db52a7141069b0263a049a" // RemoteXY GUI configuration #pragma pack(push, 1) uint8_t RemoteXY_CONF[] = // 42 bytes { 255,1,0,0,0,35,0,19,0,0,0,0,31,1,106,200,1,1,2,0, 1,8,52,90,90,0,2,31,0,129,35,34,34,12,64,24,65,66,82,73, 82,0 }; // Estructura de variables RemoteXY struct { uint8_t button_01; // =1 si botón presionado uint8_t connect_flag; // =1 si conectado } RemoteXY; #pragma pack(pop) ///////////////////////////////////////////// // Configuración // ///////////////////////////////////////////// #define RELAY_PIN 4 // D4 → GPIO4 en ESP32 // Variables para manejo del botón y antirrebote bool relayActive = false; unsigned long relayStartTime = 0; bool firstPressDone = false; // Controla si ya se presionó el botón por primera vez ///////////////////////////////////////////// // SETUP // ///////////////////////////////////////////// void setup() { Serial.begin(115200); RemoteXY_Init(); pinMode(RELAY_PIN, OUTPUT); // Al inicio mantener en 0V (LOW) digitalWrite(RELAY_PIN, LOW); Serial.println("Arranque: D4 en 0V hasta la primera pulsación."); } ///////////////////////////////////////////// // LOOP // ///////////////////////////////////////////// void loop() { RemoteXY_Handler(); // Primera pulsación: activa el relay por 3s y marca el inicio del ciclo normal if (RemoteXY.button_01 == 1 && !firstPressDone) { firstPressDone = true; relayActive = true; relayStartTime = millis(); digitalWrite(RELAY_PIN, HIGH); // Activa relay Serial.println("Primera pulsación: relay activado 3s"); } // Pulsaciones posteriores else if (RemoteXY.button_01 == 1 && !relayActive && firstPressDone) { relayActive = true; relayStartTime = millis(); digitalWrite(RELAY_PIN, HIGH); // Activa relay Serial.println("Relay activado 3s"); } // Desactiva después de 3 segundos if (relayActive && (millis() - relayStartTime >= 1500)) { relayActive = false; digitalWrite(RELAY_PIN, LOW); // Apaga relay Serial.println("Relay desactivado automáticamente"); } }