Skip to main content
The ESP32-C6 runs an Arduino WebServer on port 80 and exposes four HTTP endpoints. All endpoints use GET and are available in both Station mode (where the ESP32 joins an existing Wi-Fi network) and AP mode (where the ESP32 creates its own hotspot). You can reach the server from any device on the same network using a browser, curl, or the Python requests library.
In Station mode the ESP32 uses the static IP 192.168.1.253 (configurable in the sketch via local_IP). In AP mode the IP is always 192.168.4.1 — this is assigned automatically by the ESP32 soft-AP stack and cannot be changed without modifying the firmware.

Endpoint Summary

EndpointMethodContent-TypeDescription
/GETtext/htmlHTML control panel with trigger and reset buttons
/durumGETtext/plainPoll current state — returns BEKLE or SIL
/tetikleGETtext/htmlSet state to SIL, turn LED red, return confirmation page
/sifirlaGETtext/htmlReset state to BEKLE, turn LED green, return confirmation page

GET /

Returns the full HTML control panel page rendered by handleRoot(). The page displays the current system state and provides two clickable buttons that link to /tetikle and /sifirla. You can open this URL in any browser on the same network to operate the demo without using the command line.
FieldValue
MethodGET
Path/
Response typetext/html
Response bodyFull HTML page with control buttons
Example:
curl http://192.168.4.1/
# → Full HTML control panel

GET /durum

Returns the current internal state of the ESP32 as plain text. The value is either BEKLE (waiting — no command issued) or SIL (delete — destruction triggered). This is the endpoint the Python listener scripts poll every 1 second to decide whether to execute the destructive payload.
FieldValue
MethodGET
Path/durum
Response typetext/plain
Response bodyBEKLE or SIL
Example:
# Station mode
curl http://192.168.1.253/durum
# → BEKLE

# AP mode
curl http://192.168.4.1/durum
# → BEKLE

GET /tetikle

Sets the internal durum variable to "SIL" and switches the RGB LED to red (255, 0, 0). Returns an HTML confirmation page styled as a “system breach” alert. After you visit this endpoint, any polling client that calls /durum will receive SIL and begin its payload execution.
FieldValue
MethodGET
Path/tetikle
Response typetext/html
Side effectSets durum = "SIL", LED turns red
Serial output[!] SIL komutu gönderildi!
curl example:
curl http://192.168.4.1/tetikle
# → HTML "SİSTEM İHLALİ" confirmation page
Python example:
import requests

# Poll status (Station mode)
response = requests.get("http://192.168.1.253/durum")
print(response.text)  # BEKLE or SIL

# AP mode trigger
requests.get("http://192.168.4.1/tetikle")

GET /sifirla

Resets the internal durum variable back to "BEKLE" and switches the RGB LED to green (0, 255, 0). Returns an HTML confirmation page confirming the reset. Use this endpoint to re-arm the demo for another run without reflashing the ESP32 or power-cycling it.
FieldValue
MethodGET
Path/sifirla
Response typetext/html
Side effectSets durum = "BEKLE", LED turns green
Serial output[*] Durum sıfırlandı: BEKLE
Example:
# Station mode
curl http://192.168.1.253/sifirla
# → HTML "SİSTEM SIFIRLANDI" confirmation page

# AP mode
curl http://192.168.4.1/sifirla

Build docs developers (and LLMs) love