#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
Post a Comment