Berhasil & Stabil

This commit is contained in:
2025-12-13 21:08:31 +08:00
parent c8cdcbc772
commit f9dc8b0d57

View File

@@ -21,6 +21,7 @@
#include <tcpip_adapter.h>
#include <ArduinoOTA.h>
#include <limits.h>
#include <esp_task_wdt.h>
#include <ArduinoJson.h>
#include <DFRobotDFPlayerMini.h>
@@ -264,8 +265,20 @@ void broadcastStatus() {
// Web server endpoints
//////////////////////////////////////////////////////////////////////////
void initWebServer() {
// Serve static files from LittleFS
server.serveStatic("/", LittleFS, "/").setDefaultFile("index.html");
// Add a catch-all handler for 404 errors to prevent file system errors
server.onNotFound([](AsyncWebServerRequest *request){
// Check if it's an API request that doesn't exist
if (request->url().startsWith("/api/")) {
request->send(404, "text/plain", "API endpoint not found");
} else {
// For non-API requests, try to serve the file
request->send(LittleFS, request->url(), "text/html");
}
});
// settings page (no longer protected - has login form)
server.on("/setting.html", HTTP_GET, [](AsyncWebServerRequest *req){
req->send(LittleFS, "/setting.html", "text/html");
@@ -488,6 +501,10 @@ void resetAdminToDefault() {
// Setup & Loop
//////////////////////////////////////////////////////////////////////////
void setup(){
// Initialize Task Watchdog Timer (TWDT) to prevent watchdog resets
esp_task_wdt_init(30, true); // 30 seconds timeout, panic on timeout
esp_task_wdt_add(NULL); // Add current task to watchdog
pinMode(STATUS_LED_PIN, OUTPUT);
digitalWrite(STATUS_LED_PIN, LOW);
pinMode(RELAY_PIN, OUTPUT);
@@ -682,5 +699,8 @@ void loop(){
digitalWrite(BUZZER_PIN, LOW);
}
// Reset Task Watchdog Timer to prevent timeout
esp_task_wdt_reset();
delay(10); // tiny yield
}