diff --git a/html/spoolman.html b/html/spoolman.html
index 3faf19a..d5c19b6 100644
--- a/html/spoolman.html
+++ b/html/spoolman.html
@@ -32,12 +32,6 @@
.then(data => {
if (data.healthy) {
document.getElementById('bambuStatusMessage').innerText = 'Bambu Credentials saved!';
- // Erstelle und zeige den Reboot-Button
- const rebootBtn = document.createElement('button');
- rebootBtn.innerText = 'Reboot now';
- rebootBtn.className = 'reboot-button';
- rebootBtn.onclick = () => window.location.href = '/reboot';
- document.getElementById('bambuStatusMessage').appendChild(rebootBtn);
} else {
document.getElementById('bambuStatusMessage').innerText = 'Error while saving Bambu Credentials.';
}
diff --git a/src/bambu.cpp b/src/bambu.cpp
index 06b4612..cc5461c 100644
--- a/src/bambu.cpp
+++ b/src/bambu.cpp
@@ -30,17 +30,26 @@ int ams_count = 0;
String amsJsonData; // Speichert das fertige JSON für WebSocket-Clients
AMSData ams_data[MAX_AMS]; // Definition des Arrays
-bool saveBambuCredentials(const String& bambu_ip, const String& bambu_serialnr, const String& bambu_accesscode) {
+bool saveBambuCredentials(const String& ip, const String& serialnr, const String& accesscode) {
+ if (BambuMqttTask) {
+ vTaskDelete(BambuMqttTask);
+ }
+
JsonDocument doc;
- doc["bambu_ip"] = bambu_ip;
- doc["bambu_accesscode"] = bambu_accesscode;
- doc["bambu_serialnr"] = bambu_serialnr;
+ doc["bambu_ip"] = ip;
+ doc["bambu_accesscode"] = accesscode;
+ doc["bambu_serialnr"] = serialnr;
if (!saveJsonValue("/bambu_credentials.json", doc)) {
Serial.println("Fehler beim Speichern der Bambu-Credentials.");
return false;
}
+ // Dynamische Speicherallokation für die globalen Pointer
+ bambu_ip = ip.c_str();
+ bambu_accesscode = accesscode.c_str();
+ bambu_serialnr = serialnr.c_str();
+
vTaskDelay(100 / portTICK_PERIOD_MS);
if (!setupMqtt()) return false;
diff --git a/src/commonFS.cpp b/src/commonFS.cpp
index 368f614..1e5fcdd 100644
--- a/src/commonFS.cpp
+++ b/src/commonFS.cpp
@@ -7,12 +7,13 @@ bool saveJsonValue(const char* filename, const JsonDocument& doc) {
Serial.println(filename);
return false;
}
- return true;
+
if (serializeJson(doc, file) == 0) {
Serial.println("Fehler beim Serialisieren von JSON.");
file.close();
return false;
}
+
file.close();
return true;
}
diff --git a/src/website.cpp b/src/website.cpp
index fedbb9a..3a79a12 100644
--- a/src/website.cpp
+++ b/src/website.cpp
@@ -213,9 +213,16 @@ void setupWebserver(AsyncWebServer &server) {
JsonDocument doc;
if (loadJsonValue("/bambu_credentials.json", doc) && doc.containsKey("bambu_ip")) {
- html.replace("{{bambuIp}}", doc["bambu_ip"].as() ? doc["bambu_ip"].as() : "");
- html.replace("{{bambuSerial}}", doc["bambu_serialnr"].as() ? doc["bambu_serialnr"].as() : "");
- html.replace("{{bambuCode}}", doc["bambu_accesscode"].as() ? doc["bambu_accesscode"].as() : "");
+ String bambuIp = doc["bambu_ip"].as();
+ String bambuSerial = doc["bambu_serialnr"].as();
+ String bambuCode = doc["bambu_accesscode"].as();
+ bambuIp.trim();
+ bambuSerial.trim();
+ bambuCode.trim();
+
+ html.replace("{{bambuIp}}", bambuIp ? bambuIp : "");
+ html.replace("{{bambuSerial}}", bambuSerial ? bambuSerial : "");
+ html.replace("{{bambuCode}}", bambuCode ? bambuCode : "");
}
request->send(200, "text/html", html);
@@ -251,6 +258,11 @@ void setupWebserver(AsyncWebServer &server) {
bambu_serialnr.trim();
bambu_accesscode.trim();
+ if (bambu_ip.length() == 0 || bambu_serialnr.length() == 0 || bambu_accesscode.length() == 0) {
+ request->send(400, "application/json", "{\"success\": false, \"error\": \"Empty parameter\"}");
+ return;
+ }
+
bool success = saveBambuCredentials(bambu_ip, bambu_serialnr, bambu_accesscode);
request->send(200, "application/json", "{\"healthy\": " + String(success ? "true" : "false") + "}");