diff --git a/usermods/GPU_Fan_Controller/GPU_Fan_Controller.cpp b/usermods/GPU_Fan_Controller/GPU_Fan_Controller.cpp
index 106bd0d1..1b6227a1 100644
--- a/usermods/GPU_Fan_Controller/GPU_Fan_Controller.cpp
+++ b/usermods/GPU_Fan_Controller/GPU_Fan_Controller.cpp
@@ -41,6 +41,7 @@ class GPUFanControllerUsermod : public Usermod {
// Configuration
bool enabled = true;
bool initDone = false;
+ bool webHandlerRegistered = false;
int8_t pwmPin = PWM_FAN_PIN;
#ifdef ARDUINO_ARCH_ESP32
@@ -219,9 +220,16 @@ class GPUFanControllerUsermod : public Usermod {
}
}
- // Serve the curve editor page
- static void serveGpuFanPage(AsyncWebServerRequest *request) {
- request->send_P(200, "text/html", GPU_FAN_HTML);
+ // Register web handler - call this once
+ void registerWebHandler() {
+ if (webHandlerRegistered) return;
+
+ server.on("/gpu-fan", HTTP_GET, [](AsyncWebServerRequest *request) {
+ request->send_P(200, "text/html", GPU_FAN_HTML);
+ });
+
+ webHandlerRegistered = true;
+ DEBUG_PRINTLN(F("GPU Fan: Web handler registered at /gpu-fan"));
}
public:
@@ -231,11 +239,16 @@ class GPUFanControllerUsermod : public Usermod {
setFanPWM((fixedSpeedPct * 255) / 100); // Initial speed
lastTempUpdate = millis();
initDone = true;
+
+ // Register web handler immediately during setup
+ registerWebHandler();
+
DEBUG_PRINTLN(F("GPU Fan Controller initialized"));
}
void connected() override {
- // Nothing special needed on WiFi connect
+ // Also try to register here in case setup was too early
+ registerWebHandler();
}
void loop() override {
@@ -265,16 +278,6 @@ class GPUFanControllerUsermod : public Usermod {
return false;
}
- // Register the /gpu-fan endpoint
- void addToJsonState(JsonObject& root) override {
- // This is called during setup, we can use it to register our endpoint
- }
-
- // Called when web server is ready - register our custom page
- void onStateChange(uint8_t callMode) override {
- // Not the best place, but works
- }
-
// Add info to the WLED info panel
void addToJsonInfo(JsonObject& root) override {
JsonObject user = root["u"];
@@ -291,7 +294,7 @@ class GPUFanControllerUsermod : public Usermod {
uiDomString += F("}});\">");
- uiDomString += F(" [Curve Editor]");
+ uiDomString += F(" [Editor]");
infoArr.add(uiDomString);
if (enabled) {
@@ -450,11 +453,6 @@ class GPUFanControllerUsermod : public Usermod {
return !top["curve-t1"].isNull();
}
- // Register web handler
- void addToWebHandlers(AsyncWebServer& server) {
- server.on("/gpu-fan", HTTP_GET, serveGpuFanPage);
- }
-
uint16_t getId() override {
return USERMOD_ID_UNSPECIFIED; // Change this if you add to const.h
}