#include #include #include #include #include #define HOSTNAME_DEFAULT "m1730" static char hostname[32] = HOSTNAME_DEFAULT; static WiFiManagerParameter hostnameParam("hostname", "Device hostname", hostname, 32); static WebServer server(80); static void saveParams() { strlcpy(hostname, hostnameParam.getValue(), sizeof(hostname)); File f = LittleFS.open("/hostname.txt", "w"); if (f) { f.print(hostname); f.close(); } } static void loadParams() { if (!LittleFS.exists("/hostname.txt")) return; File f = LittleFS.open("/hostname.txt", "r"); if (!f) return; String val = f.readString(); val.trim(); if (val.length() > 0) { val.toCharArray(hostname, sizeof(hostname)); } f.close(); } static void startMDNS() { if (MDNS.begin(hostname)) { Serial.printf("mDNS: %s.local\n", hostname); MDNS.addService("http", "tcp", 80); } else { Serial.println("mDNS start failed"); } } static void handleRoot() { String html = R"( M1730

M1730

Device Configuration
Hostname)" + String(hostname) + R"(
IP Address)" + WiFi.localIP().toString() + R"(
)" + WiFi.macAddress() + R"(
)"; server.send(200, "text/html", html); } static void handleUpdate() { if (server.hasArg("hostname")) { String val = server.arg("hostname"); val.trim(); if (val.length() > 0 && val.length() < sizeof(hostname)) { val.toCharArray(hostname, sizeof(hostname)); saveParams(); String html = R"( M1730

Saved!

Rebooting with new hostname: )" + String(hostname) + R"(

)"; server.send(200, "text/html", html); delay(1000); ESP.restart(); return; } } server.send(400, "text/html", "

Bad Request

"); } static void startServer() { server.on("/", handleRoot); server.on("/update", HTTP_POST, handleUpdate); server.begin(); Serial.println("HTTP server started"); } void setup() { Serial.begin(115200); LittleFS.begin(true); loadParams(); WiFiManager wm; wm.setTitle("M1730"); wm.addParameter(&hostnameParam); wm.setSaveParamsCallback(saveParams); if (!wm.autoConnect("M1730")) { Serial.println("WiFi failed, restarting"); ESP.restart(); } saveParams(); startServer(); startMDNS(); Serial.printf("Board address: http://%s.local or http://%s\n", hostname, WiFi.localIP().toString().c_str()); } void loop() { server.handleClient(); }