diff --git a/src/bambu.cpp b/src/bambu.cpp index dd5c7a4..05a9c44 100644 --- a/src/bambu.cpp +++ b/src/bambu.cpp @@ -341,7 +341,7 @@ void updateAmsWsData(JsonDocument& doc, JsonArray& amsArray, int& ams_count, Jso ams_data[i].trays[j].tray_color = trayObj["tray_color"].as(); ams_data[i].trays[j].nozzle_temp_min = trayObj["nozzle_temp_min"].as(); ams_data[i].trays[j].nozzle_temp_max = trayObj["nozzle_temp_max"].as(); - //ams_data[i].trays[j].setting_id = trayObj["setting_id"].as(); + if (trayObj["tray_type"].as() == "") ams_data[i].trays[j].setting_id = ""; ams_data[i].trays[j].cali_idx = trayObj["cali_idx"].as(); } } @@ -425,16 +425,8 @@ void mqtt_callback(char* topic, byte* payload, unsigned int length) { return; } - // Wenn bambu auto set spool aktiv und eine spule erkannt und mqtt meldung das neue spule im ams - if (autoSendToBambu && autoSetToBambuSpoolId > 0 && - doc["print"]["command"].as() == "push_status" && doc["print"]["ams"]["tray_pre"].as() - && !doc["print"]["ams"]["ams"].as()) - { - autoSetSpool(autoSetToBambuSpoolId, doc["print"]["ams"]["tray_pre"].as()); - } - // Prüfen, ob "print->upgrade_state" und "print.ams.ams" existieren - if (doc["print"]["upgrade_state"].is()) + if (doc["print"]["upgrade_state"].is() || (doc["print"]["command"].is() && doc["print"]["command"] == "push_status")) { // Prüfen ob AMS-Daten vorhanden sind if (!doc["print"]["ams"].is() || !doc["print"]["ams"]["ams"].is()) @@ -443,7 +435,7 @@ void mqtt_callback(char* topic, byte* payload, unsigned int length) { } JsonArray amsArray = doc["print"]["ams"]["ams"].as(); - + // Prüfe ob sich die AMS-Daten geändert haben bool hasChanges = false; @@ -479,6 +471,12 @@ void mqtt_callback(char* topic, byte* payload, unsigned int length) { (trayObj["setting_id"].as() != "" && trayObj["setting_id"].as() != ams_data[storedIndex].trays[j].setting_id) || trayObj["cali_idx"].as() != ams_data[storedIndex].trays[j].cali_idx) { hasChanges = true; + + if (autoSendToBambu && autoSetToBambuSpoolId > 0 && hasChanges) + { + autoSetSpool(autoSetToBambuSpoolId, ams_data[storedIndex].trays[j].id); + } + break; } } @@ -497,6 +495,11 @@ void mqtt_callback(char* topic, byte* payload, unsigned int length) { (vtTray["setting_id"].as() != "" && vtTray["setting_id"].as() != ams_data[i].trays[0].setting_id) || (vtTray["tray_type"].as() != "" && vtTray["cali_idx"].as() != ams_data[i].trays[0].cali_idx)) { hasChanges = true; + + if (autoSendToBambu && autoSetToBambuSpoolId > 0 && hasChanges) + { + autoSetSpool(autoSetToBambuSpoolId, 254); + } } break; }