WEB SERVER CONTROL LAMPU VIA LAN ESP32

 #include <WiFi.h>

#include <WebServer.h>

#include <ESPmDNS.h> // <-- Tambahkan Library ini


// Ganti dengan kredensial Wi-Fi Anda

const char* ssid = "RobotikID";

const char* password = "123456789";


WebServer server(80);


bool isLive = false;

String header;


// Definisikan hostname untuk mDNS Anda

const char* mdnsHostname = "esp32server"; // Anda bisa mengaksesnya dengan http://esp32server.local


void handleRoot() {

  String html = "<html><body>";

  html += "<h1>ESP32 Web Server</h1>";

  if (isLive) {

    html += "<p>LED Status: ON</p>";

    html += "<p><a href=\"/27/L\"><button style=\"background-color: #555555; color: white; padding: 16px 40px; text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;\">Matikan LED</button></a></p>";

  } else {

    html += "<p>LED Status: OFF</p>";

    html += "<p><a href=\"/26/H\"><button style=\"background-color: #4CAF50; color: white; padding: 16px 40px; text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;\">Hidupkan LED</button></a></p>";

  }

  html += "</body></html>";

  server.send(200, "text/html", html);

}


void setup() {

  pinMode(LED_BUILTIN, OUTPUT);

  Serial.begin(115200);


  Serial.println();

  Serial.println("Mulai Konfigurasi");

  Serial.print("Connecting to ");

  Serial.println(ssid);

  WiFi.begin(ssid, password);


  while (WiFi.status() != WL_CONNECTED) {

    delay(500);

    Serial.print(".");

  }


  Serial.println("");

  Serial.println("WiFi connected.");

  Serial.print("IP address: ");

  Serial.println(WiFi.localIP());


  // --- Bagian mDNS yang ditambahkan ---

  if (!MDNS.begin(mdnsHostname)) {

    Serial.println("Error setting up MDNS responder!");

  } else {

    Serial.print("mDNS responder started with hostname: ");

    Serial.print(mdnsHostname);

    Serial.println(".local");

    // Tambahkan service HTTP ke mDNS

    MDNS.addService("http", "tcp", 80);

  }

  // --- Akhir Bagian mDNS yang ditambahkan ---


  server.on("/", handleRoot);

  server.on("/26/H", [](){ // Ubah sedikit untuk langsung kontrol LED dan redirect

    isLive = true;

    digitalWrite(LED_BUILTIN, HIGH);

    server.sendHeader("Location", "/", true); // Redirect kembali ke halaman utama

    server.send(302, "text/plain", "");

  });

  server.on("/27/L", [](){ // Ubah sedikit untuk langsung kontrol LED dan redirect

    isLive = false;

    digitalWrite(LED_BUILTIN, LOW);

    server.sendHeader("Location", "/", true); // Redirect kembali ke halaman utama

    server.send(302, "text/plain", "");

  });


  server.begin();

  Serial.println("Memulai Server");

}


void loop() {

  server.handleClient();

  // Tidak perlu lagi memproses header secara manual di loop, library WebServer sudah mengurusnya.

  // Anda bisa menghapus bagian client.available() dan logic parsing header

  // dari loop jika Anda menggunakan server.on() secara eksplisit seperti di atas.

}

Comments