#include <WiFi.h>
// --- Konfigurasi Jaringan WiFi ---
const char* ssid = "Wifi Sekolah B";
const char* password = ""; // Ganti dengan password WiFi Anda
// --- Konfigurasi IP Statis ---
// Sesuaikan nilai-nilai di bawah ini dengan konfigurasi jaringan Anda
IPAddress ip(172, 16, 93, 87); // IP statis untuk ESP32
IPAddress gateway(172, 16, 93, 1); // Alamat Gateway (router)
IPAddress subnet(255, 255, 255, 0); // Subnet Mask
// --- Konfigurasi Perangkat ---
// Atur pin yang digunakan untuk mengontrol LED.
// GPIO2 adalah pin yang umum digunakan untuk LED internal pada banyak modul ESP32.
const int ledPin = 2;
// Inisialisasi server pada port 80 (HTTP)
WiFiServer server(80);
void setup() {
Serial.begin(115200);
delay(10);
// Mengatur pin LED sebagai OUTPUT
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW); // Pastikan LED mati saat dimulai
// --- Koneksi ke WiFi dengan IP statis ---
Serial.println();
Serial.println("Connecting to WiFi...");
WiFi.begin(ssid, password);
WiFi.config(ip, gateway, subnet);
// Menunggu hingga terhubung ke WiFi
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi connected");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
// --- Memulai server ---
server.begin();
Serial.println("Server started");
}
void loop() {
// Cek apakah ada klien yang terhubung ke server
WiFiClient client = server.available();
if (!client) {
return;
}
Serial.println("\nNew client connected.");
// Tunggu hingga klien mengirim data
while(!client.available()){
delay(1);
}
// Baca baris pertama dari permintaan HTTP
String request = client.readStringUntil('\r');
Serial.println("Request: " + request);
client.flush();
// --- Memproses permintaan HTTP ---
int value = digitalRead(ledPin); // Baca status LED saat ini
if (request.indexOf("/LED=ON") != -1) {
digitalWrite(ledPin, HIGH);
value = HIGH;
}
if (request.indexOf("/LED=OFF") != -1) {
digitalWrite(ledPin, LOW);
value = LOW;
}
// --- Mengirim respons HTML ke klien ---
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // Baris kosong wajib setelah header
client.println("<!DOCTYPE HTML>");
client.println("<html><head><title>ESP32 Web Control</title>");
client.println("<style>");
client.println("body { font-family: Arial, sans-serif; text-align: center; }");
client.println("button { background-color: #008CBA; color: white; padding: 10px 20px; text-decoration: none; display: inline-block; font-size: 16px; margin: 4px 2px; cursor: pointer; border: none; border-radius: 5px; }");
client.println("</style></head>");
client.println("<body>");
client.println("<h1>Kontrol LED</h1>");
client.print("<p>Status LED: ");
if (value == HIGH) {
client.print("On");
} else {
client.print("Off");
}
client.println("</p>");
client.println("<a href=\"/LED=ON\"><button>Turn On</button></a>");
client.println("<a href=\"/LED=OFF\"><button>Turn Off</button></a>");
client.println("</body></html>");
delay(1);
Serial.println("Client disconnected.");
}