#include #include const char* ssid = "KOSTR5"; const char* password = "tanyapakjoko"; ESP8266WebServer server(80); const int relayPin = 4; // Pin untuk mengendalikan relay const int buzzerPin = 5; // Pin untuk mengendalikan buzzer const int buttonPin = 0; // Pin untuk tombol fisik const int greenLEDPin = 16; // Pin untuk LED hijau const int redLEDPin = 2; // Pin untuk LED merah bool buttonState = false; // Status tombol fisik unsigned long lastActivationTime = 0; const unsigned long relayDuration = 5 * 1000; // Durasi relay aktif dalam milidetik (5 detik) bool buzzerActivated = false; // Status buzzer void setup() { Serial.begin(115200); WiFi.begin(ssid, password); pinMode(relayPin, OUTPUT); // Mengatur pin relay sebagai output pinMode(buzzerPin, OUTPUT); // Mengatur pin buzzer sebagai output pinMode(buttonPin, INPUT); // Mengatur pin tombol sebagai input pinMode(greenLEDPin, OUTPUT); // Mengatur pin LED hijau sebagai output pinMode(redLEDPin, OUTPUT); // Mengatur pin LED merah sebagai output while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("Connected to WiFi"); Serial.print("IP Address: "); Serial.println(WiFi.localIP()); server.on("/activate_relay", [](){ // Aktifkan relay digitalWrite(relayPin, LOW); // Mengaktifkan relay lastActivationTime = millis(); // Menyimpan waktu aktivasi terakhir Serial.println("Relay telah diaktifkan"); digitalWrite(greenLEDPin, HIGH); // Menyalakan LED hijau server.send(200, "text/plain", "Relay telah diaktifkan"); }); server.begin(); Serial.println("HTTP server started"); } void loop() { server.handleClient(); // Memeriksa apakah sudah waktunya untuk mematikan relay if (millis() - lastActivationTime >= relayDuration && digitalRead(relayPin) == LOW) { digitalWrite(relayPin, HIGH); // Mematikan relay jika sudah melewati waktu aktivasi digitalWrite(greenLEDPin, LOW); // Mematikan LED hijau Serial.println("Relay telah dimatikan"); // Mengatur buzzer dan LED merah untuk menyala 2 detik setelah relay dimatikan digitalWrite(buzzerPin, HIGH); // Mengaktifkan buzzer digitalWrite(redLEDPin, HIGH); // Menyalakan LED merah buzzerActivated = true; Serial.println("Buzzer dan LED merah telah diaktifkan"); // Mematikan buzzer dan LED merah setelah 2 detik delay(1000); digitalWrite(buzzerPin, LOW); // Mematikan buzzer digitalWrite(redLEDPin, LOW); // Mematikan LED merah buzzerActivated = false; Serial.println("Buzzer dan LED merah telah dimatikan"); } // Membaca status tombol fisik buttonState = digitalRead(buttonPin); // Jika tombol ditekan, aktifkan relay if (buttonState == LOW) { digitalWrite(relayPin, LOW); // Mengaktifkan relay digitalWrite(greenLEDPin, HIGH); // Menyalakan LED hijau lastActivationTime = millis(); // Menyimpan waktu aktivasi terakhir Serial.println("Relay telah diaktifkan melalui tombol"); buzzerActivated = false; // Reset status buzzer digitalWrite(buzzerPin, LOW); // Pastikan buzzer dimatikan saat tombol ditekan digitalWrite(redLEDPin, LOW); // Matikan LED merah } // Mengatur LED merah sesuai dengan status buzzer if (buzzerActivated) { digitalWrite(redLEDPin, HIGH); // Menyalakan LED merah jika buzzer aktif } else { digitalWrite(redLEDPin, LOW); // Matikan LED merah jika buzzer tidak aktif } }