feat: füge Unterstützung für Spoolman-Einstellungen hinzu und aktualisiere die Benutzeroberfläche
This commit is contained in:
		
							
								
								
									
										50
									
								
								src/api.cpp
									
									
									
									
									
								
							
							
						
						
									
										50
									
								
								src/api.cpp
									
									
									
									
									
								
							@@ -122,9 +122,9 @@ void sendToApi(void *parameter) {
 | 
			
		||||
    if (httpType == "PATCH") httpCode = http.PATCH(updatePayload);
 | 
			
		||||
 | 
			
		||||
    if (httpCode == HTTP_CODE_OK) {
 | 
			
		||||
        Serial.println("Gewicht der Spule erfolgreich aktualisiert");
 | 
			
		||||
        Serial.println("Spoolman erfolgreich aktualisiert");
 | 
			
		||||
    } else {
 | 
			
		||||
        Serial.println("Fehler beim Aktualisieren des Gewichts der Spule");
 | 
			
		||||
        Serial.println("Fehler beim Senden an Spoolman!");
 | 
			
		||||
        oledShowMessage("Spoolman update failed");
 | 
			
		||||
        vTaskDelay(2000 / portTICK_PERIOD_MS);
 | 
			
		||||
    }
 | 
			
		||||
@@ -223,6 +223,52 @@ uint8_t updateSpoolWeight(String spoolId, uint16_t weight) {
 | 
			
		||||
    return 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool updateSpoolBambuData(String payload) {
 | 
			
		||||
    JsonDocument doc;
 | 
			
		||||
    DeserializationError error = deserializeJson(doc, payload);
 | 
			
		||||
    if (error) {
 | 
			
		||||
        Serial.print("Fehler beim JSON-Parsing: ");
 | 
			
		||||
        Serial.println(error.c_str());
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    String spoolsUrl = spoolmanUrl + apiUrl + "/filament/" + doc["filament_id"].as<String>();
 | 
			
		||||
    Serial.print("Update Spule mit URL: ");
 | 
			
		||||
    Serial.println(spoolsUrl);
 | 
			
		||||
 | 
			
		||||
    JsonDocument updateDoc;
 | 
			
		||||
    updateDoc["extra"]["bambu_setting_id"] = "\"" + doc["setting_id"].as<String>() + "\"";
 | 
			
		||||
    updateDoc["extra"]["bambu_cali_id"] = "\"" + doc["cali_idx"].as<String>() + "\"";
 | 
			
		||||
    updateDoc["extra"]["bambu_idx"] = "\"" + doc["tray_info_idx"].as<String>() + "\"";
 | 
			
		||||
    updateDoc["extra"]["nozzle_temperature"] = "[" + doc["temp_min"].as<String>() + "," + doc["temp_max"].as<String>() + "]";
 | 
			
		||||
 | 
			
		||||
    String updatePayload;
 | 
			
		||||
    serializeJson(updateDoc, updatePayload);
 | 
			
		||||
    Serial.print("Update Payload: ");
 | 
			
		||||
    Serial.println(updatePayload);
 | 
			
		||||
 | 
			
		||||
    SendToApiParams* params = new SendToApiParams();
 | 
			
		||||
    if (params == nullptr) {
 | 
			
		||||
        Serial.println("Fehler: Kann Speicher für Task-Parameter nicht allokieren.");
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
    params->httpType = "PATCH";
 | 
			
		||||
    params->spoolsUrl = spoolsUrl;
 | 
			
		||||
    params->updatePayload = updatePayload;
 | 
			
		||||
 | 
			
		||||
    // Erstelle die Task
 | 
			
		||||
    BaseType_t result = xTaskCreate(
 | 
			
		||||
        sendToApi,                // Task-Funktion
 | 
			
		||||
        "SendToApiTask",          // Task-Name
 | 
			
		||||
        4096,                     // Stackgröße in Bytes
 | 
			
		||||
        (void*)params,            // Parameter
 | 
			
		||||
        0,                        // Priorität
 | 
			
		||||
        NULL                      // Task-Handle (nicht benötigt)
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// #### Spoolman init
 | 
			
		||||
bool checkSpoolmanExtraFields() {
 | 
			
		||||
    HTTPClient http;
 | 
			
		||||
 
 | 
			
		||||
@@ -18,5 +18,6 @@ JsonDocument fetchSingleSpoolInfo(int spoolId); // API-Funktion für die Webseit
 | 
			
		||||
bool updateSpoolTagId(String uidString, const char* payload); // Neue Funktion zum Aktualisieren eines Spools
 | 
			
		||||
uint8_t updateSpoolWeight(String spoolId, uint16_t weight); // Neue Funktion zum Aktualisieren des Gewichts
 | 
			
		||||
bool initSpoolman(); // Neue Funktion zum Initialisieren von Spoolman
 | 
			
		||||
bool updateSpoolBambuData(String payload); // Neue Funktion zum Aktualisieren der Bambu-Daten
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -95,6 +95,15 @@ void onWsEvent(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventTyp
 | 
			
		||||
            setBambuSpool(doc["payload"]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        else if (doc["type"] == "setSpoolmanSettings") {
 | 
			
		||||
            Serial.println(doc["payload"].as<String>());
 | 
			
		||||
            if (updateSpoolBambuData(doc["payload"].as<String>())) {
 | 
			
		||||
                ws.textAll("{\"type\":\"setSpoolmanSettings\",\"payload\":\"success\"}");
 | 
			
		||||
            } else {
 | 
			
		||||
                ws.textAll("{\"type\":\"setSpoolmanSettings\",\"payload\":\"error\"}");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        else {
 | 
			
		||||
            Serial.println("Unbekannter WebSocket-Typ: " + doc["type"].as<String>());
 | 
			
		||||
        }
 | 
			
		||||
@@ -346,6 +355,15 @@ void setupWebserver(AsyncWebServer &server) {
 | 
			
		||||
        Serial.println("spool_in.png gesendet");
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    // Route für set_spoolman.png
 | 
			
		||||
    server.on("/set_spoolman.png", HTTP_GET, [](AsyncWebServerRequest *request){
 | 
			
		||||
        AsyncWebServerResponse *response = request->beginResponse(SPIFFS, "/set_spoolman.png.gz", "image/png");
 | 
			
		||||
        response->addHeader("Content-Encoding", "gzip");
 | 
			
		||||
        response->addHeader("Cache-Control", CACHE_CONTROL);
 | 
			
		||||
        request->send(response);
 | 
			
		||||
        Serial.println("set_spoolman.png gesendet");
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    // Route für JavaScript Dateien
 | 
			
		||||
    server.on("/spoolman.js", HTTP_GET, [](AsyncWebServerRequest *request){
 | 
			
		||||
        Serial.println("Anfrage für /spoolman.js erhalten");
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user