#include <WiFi.h>
#include <WiFiAP.h>
#include <DNSServer.h>
DNSServer dnsServer;
WiFiServer server(80);
#define LED_BUILTIN 2
const char *ssid = "ESP wifi";
// const char webpage[] = R"rawliteral(
const char webpage[] = R"(
HTTP/1.1 200 OK\r\n
Content-type:text/html\r\n \r\n\r\n
<html>
<meta charset="UTF-8">
<meta content="width=device-width,initial-scale=1.5" name="viewport">
<body>
<h1>ESP32 Simple Server!</h1>
<h3>LED 2
<a href="/on"> on</a> /
<a href="/off">off</a>
</h3>
<h4 id="ledState">Завантаження</h4>
<form method="GET" action="/submit">
<label for="message">Enter your message:</label><br>
<input type="text" id="message" name="message"/><br><br>
<input type="submit" value="Submit"/>
</form>
<script>
setInterval(() => {
fetch('/ledState').then(response => response.text()).then(state => {
document.getElementById('ledState').textContent = state
}).catch(console.error);
}, 500);
</script>
</body>
</html>
)";
void handler(String currentLine, WiFiClient &client) {
if (currentLine.indexOf("GET /on") >= 0) {
digitalWrite(LED_BUILTIN, HIGH);
}
else if (currentLine.indexOf("GET /off") >= 0) {
digitalWrite(LED_BUILTIN, LOW);
}
else if (currentLine.indexOf("GET /submit?message=") >= 0) {
int startIdx = currentLine.indexOf("message=") + 8;
int endIdx = currentLine.indexOf(" ", startIdx);
String message = currentLine.substring(startIdx, endIdx);
message.replace("+", " "); // Заміна "+" на пробіли
Serial.println("\n\n\n" + message + "\n\n\n");
}
}
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(115200);
Serial.println("\nConfiguring access point...");
if (!WiFi.softAP(ssid)) Serial.println("Soft AP creation failed.");
IPAddress apIP = WiFi.softAPIP();
dnsServer.start(53, "*", apIP);
Serial.print("AP IP address: "); Serial.println(apIP);
server.begin();
}
void loop() {
dnsServer.processNextRequest();
clientChecker();
}
void clientChecker() {
WiFiClient client = server.available();
if (client) {
Serial.println("New Client connected.");
String currentLine = "";
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
if (c == '\n') {
if (currentLine.length() == 0) {
client.print(webpage);
break;
} else {
handler(currentLine, client);
currentLine = "";
}
} else if (c != '\r') {
currentLine += c;
}
}
}
client.stop();
Serial.println("Client disconnected.");
}
}