docs: update JSON handling in API and Bambu modules for improved object management
This commit is contained in:
parent
5cbbe1d231
commit
4992f5f433
22
src/api.cpp
22
src/api.cpp
@ -60,10 +60,10 @@ JsonDocument fetchSpoolsForWebsite() {
|
|||||||
JsonArray filteredSpools = filteredDoc.to<JsonArray>();
|
JsonArray filteredSpools = filteredDoc.to<JsonArray>();
|
||||||
|
|
||||||
for (JsonObject spool : spools) {
|
for (JsonObject spool : spools) {
|
||||||
JsonObject filteredSpool = filteredSpools.createNestedObject();
|
JsonObject filteredSpool = filteredSpools.add<JsonObject>();
|
||||||
filteredSpool["extra"]["nfc_id"] = spool["extra"]["nfc_id"];
|
filteredSpool["extra"]["nfc_id"] = spool["extra"]["nfc_id"];
|
||||||
|
|
||||||
JsonObject filament = filteredSpool.createNestedObject("filament");
|
JsonObject filament = filteredSpool["filament"].to<JsonObject>();
|
||||||
filament["sm_id"] = spool["id"];
|
filament["sm_id"] = spool["id"];
|
||||||
filament["id"] = spool["filament"]["id"];
|
filament["id"] = spool["filament"]["id"];
|
||||||
filament["name"] = spool["filament"]["name"];
|
filament["name"] = spool["filament"]["name"];
|
||||||
@ -73,7 +73,7 @@ JsonDocument fetchSpoolsForWebsite() {
|
|||||||
filament["price_meter"] = spool["filament"]["extra"]["price_meter"];
|
filament["price_meter"] = spool["filament"]["extra"]["price_meter"];
|
||||||
filament["price_gramm"] = spool["filament"]["extra"]["price_gramm"];
|
filament["price_gramm"] = spool["filament"]["extra"]["price_gramm"];
|
||||||
|
|
||||||
JsonObject vendor = filament.createNestedObject("vendor");
|
JsonObject vendor = filament["vendor"].to<JsonObject>();
|
||||||
vendor["id"] = spool["filament"]["vendor"]["id"];
|
vendor["id"] = spool["filament"]["vendor"]["id"];
|
||||||
vendor["name"] = spool["filament"]["vendor"]["name"];
|
vendor["name"] = spool["filament"]["vendor"]["name"];
|
||||||
}
|
}
|
||||||
@ -110,13 +110,13 @@ JsonDocument fetchAllSpoolsInfo() {
|
|||||||
JsonArray filteredSpools = filteredDoc.to<JsonArray>();
|
JsonArray filteredSpools = filteredDoc.to<JsonArray>();
|
||||||
|
|
||||||
for (JsonObject spool : spools) {
|
for (JsonObject spool : spools) {
|
||||||
JsonObject filteredSpool = filteredSpools.createNestedObject();
|
JsonObject filteredSpool = filteredSpools.add<JsonObject>();
|
||||||
filteredSpool["price"] = spool["price"];
|
filteredSpool["price"] = spool["price"];
|
||||||
filteredSpool["remaining_weight"] = spool["remaining_weight"];
|
filteredSpool["remaining_weight"] = spool["remaining_weight"];
|
||||||
filteredSpool["used_weight"] = spool["used_weight"];
|
filteredSpool["used_weight"] = spool["used_weight"];
|
||||||
filteredSpool["extra"]["nfc_id"] = spool["extra"]["nfc_id"];
|
filteredSpool["extra"]["nfc_id"] = spool["extra"]["nfc_id"];
|
||||||
|
|
||||||
JsonObject filament = filteredSpool.createNestedObject("filament");
|
JsonObject filament = filteredSpool["filament"].to<JsonObject>();
|
||||||
filament["id"] = spool["filament"]["id"];
|
filament["id"] = spool["filament"]["id"];
|
||||||
filament["name"] = spool["filament"]["name"];
|
filament["name"] = spool["filament"]["name"];
|
||||||
filament["material"] = spool["filament"]["material"];
|
filament["material"] = spool["filament"]["material"];
|
||||||
@ -125,11 +125,11 @@ JsonDocument fetchAllSpoolsInfo() {
|
|||||||
filament["spool_weight"] = spool["filament"]["spool_weight"];
|
filament["spool_weight"] = spool["filament"]["spool_weight"];
|
||||||
filament["color_hex"] = spool["filament"]["color_hex"];
|
filament["color_hex"] = spool["filament"]["color_hex"];
|
||||||
|
|
||||||
JsonObject vendor = filament.createNestedObject("vendor");
|
JsonObject vendor = filament["vendor"].to<JsonObject>();
|
||||||
vendor["id"] = spool["filament"]["vendor"]["id"];
|
vendor["id"] = spool["filament"]["vendor"]["id"];
|
||||||
vendor["name"] = spool["filament"]["vendor"]["name"];
|
vendor["name"] = spool["filament"]["vendor"]["name"];
|
||||||
|
|
||||||
JsonObject extra = filament.createNestedObject("extra");
|
JsonObject extra = filament["extra"].to<JsonObject>();
|
||||||
extra["nozzle_temperature"] = spool["filament"]["extra"]["nozzle_temperature"];
|
extra["nozzle_temperature"] = spool["filament"]["extra"]["nozzle_temperature"];
|
||||||
extra["price_gramm"] = spool["filament"]["extra"]["price_gramm"];
|
extra["price_gramm"] = spool["filament"]["extra"]["price_gramm"];
|
||||||
extra["price_meter"] = spool["filament"]["extra"]["price_meter"];
|
extra["price_meter"] = spool["filament"]["extra"]["price_meter"];
|
||||||
@ -186,7 +186,7 @@ bool updateSpoolTagId(String uidString, const char* payload) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Überprüfe, ob die erforderlichen Felder vorhanden sind
|
// Überprüfe, ob die erforderlichen Felder vorhanden sind
|
||||||
if (!doc.containsKey("sm_id") || doc["sm_id"] == "") {
|
if (!doc["sm_id"].is<JsonObject>() || doc["sm_id"].as<String>() == "") {
|
||||||
Serial.println("Keine Spoolman-ID gefunden.");
|
Serial.println("Keine Spoolman-ID gefunden.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -368,7 +368,7 @@ bool checkSpoolmanExtraFields() {
|
|||||||
for (uint8_t s = 0; s < extraLength; s++) {
|
for (uint8_t s = 0; s < extraLength; s++) {
|
||||||
bool found = false;
|
bool found = false;
|
||||||
for (JsonObject field : doc.as<JsonArray>()) {
|
for (JsonObject field : doc.as<JsonArray>()) {
|
||||||
if (field.containsKey("key") && field["key"] == extraFields[s]) {
|
if (field["key"].is<JsonObject>() && field["key"] == extraFields[s]) {
|
||||||
Serial.println("Feld gefunden: " + extraFields[s]);
|
Serial.println("Feld gefunden: " + extraFields[s]);
|
||||||
found = true;
|
found = true;
|
||||||
break;
|
break;
|
||||||
@ -430,7 +430,7 @@ bool checkSpoolmanInstance(const String& url) {
|
|||||||
String payload = http.getString();
|
String payload = http.getString();
|
||||||
JsonDocument doc;
|
JsonDocument doc;
|
||||||
DeserializationError error = deserializeJson(doc, payload);
|
DeserializationError error = deserializeJson(doc, payload);
|
||||||
if (!error && doc.containsKey("status")) {
|
if (!error && doc["status"].is<JsonObject>()) {
|
||||||
const char* status = doc["status"];
|
const char* status = doc["status"];
|
||||||
http.end();
|
http.end();
|
||||||
|
|
||||||
@ -469,7 +469,7 @@ bool saveSpoolmanUrl(const String& url) {
|
|||||||
|
|
||||||
String loadSpoolmanUrl() {
|
String loadSpoolmanUrl() {
|
||||||
JsonDocument doc;
|
JsonDocument doc;
|
||||||
if (loadJsonValue("/spoolman_url.json", doc) && doc.containsKey("url")) {
|
if (loadJsonValue("/spoolman_url.json", doc) && doc["url"].is<JsonObject>()) {
|
||||||
return doc["url"].as<String>();
|
return doc["url"].as<String>();
|
||||||
}
|
}
|
||||||
Serial.println("Keine gültige Spoolman-URL gefunden.");
|
Serial.println("Keine gültige Spoolman-URL gefunden.");
|
||||||
|
@ -58,7 +58,7 @@ bool saveBambuCredentials(const String& ip, const String& serialnr, const String
|
|||||||
|
|
||||||
bool loadBambuCredentials() {
|
bool loadBambuCredentials() {
|
||||||
JsonDocument doc;
|
JsonDocument doc;
|
||||||
if (loadJsonValue("/bambu_credentials.json", doc) && doc.containsKey("bambu_ip")) {
|
if (loadJsonValue("/bambu_credentials.json", doc) && doc["bambu_ip"].is<JsonObject>()) {
|
||||||
// Temporäre Strings für die Werte
|
// Temporäre Strings für die Werte
|
||||||
String ip = doc["bambu_ip"].as<String>();
|
String ip = doc["bambu_ip"].as<String>();
|
||||||
String code = doc["bambu_accesscode"].as<String>();
|
String code = doc["bambu_accesscode"].as<String>();
|
||||||
@ -270,9 +270,9 @@ void mqtt_callback(char* topic, byte* payload, unsigned int length) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Prüfen, ob "print->upgrade_state" und "print.ams.ams" existieren
|
// Prüfen, ob "print->upgrade_state" und "print.ams.ams" existieren
|
||||||
if (doc["print"].containsKey("upgrade_state")) {
|
if (doc["print"]["upgrade_state"].is<JsonObject>()) {
|
||||||
// Prüfen ob AMS-Daten vorhanden sind
|
// Prüfen ob AMS-Daten vorhanden sind
|
||||||
if (!doc["print"].containsKey("ams") || !doc["print"]["ams"].containsKey("ams")) {
|
if (!doc["print"]["ams"].is<JsonObject>() || !doc["print"]["ams"]["ams"].is<JsonObject>()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -315,7 +315,7 @@ void mqtt_callback(char* topic, byte* payload, unsigned int length) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Prüfe die externe Spule
|
// Prüfe die externe Spule
|
||||||
if (!hasChanges && doc["print"].containsKey("vt_tray")) {
|
if (!hasChanges && doc["print"]["vt_tray"].is<JsonObject>()) {
|
||||||
JsonObject vtTray = doc["print"]["vt_tray"];
|
JsonObject vtTray = doc["print"]["vt_tray"];
|
||||||
bool foundExternal = false;
|
bool foundExternal = false;
|
||||||
|
|
||||||
@ -363,7 +363,7 @@ void mqtt_callback(char* topic, byte* payload, unsigned int length) {
|
|||||||
ams_count = amsArray.size();
|
ams_count = amsArray.size();
|
||||||
|
|
||||||
// Wenn externe Spule vorhanden, füge sie hinzu
|
// Wenn externe Spule vorhanden, füge sie hinzu
|
||||||
if (doc["print"].containsKey("vt_tray")) {
|
if (doc["print"]["vt_tray"].is<JsonObject>()) {
|
||||||
JsonObject vtTray = doc["print"]["vt_tray"];
|
JsonObject vtTray = doc["print"]["vt_tray"];
|
||||||
int extIdx = ams_count; // Index für externe Spule
|
int extIdx = ams_count; // Index für externe Spule
|
||||||
ams_data[extIdx].ams_id = 255; // Spezielle ID für externe Spule
|
ams_data[extIdx].ams_id = 255; // Spezielle ID für externe Spule
|
||||||
@ -387,14 +387,14 @@ void mqtt_callback(char* topic, byte* payload, unsigned int length) {
|
|||||||
JsonArray wsArray = wsDoc.to<JsonArray>();
|
JsonArray wsArray = wsDoc.to<JsonArray>();
|
||||||
|
|
||||||
for (int i = 0; i < ams_count; i++) {
|
for (int i = 0; i < ams_count; i++) {
|
||||||
JsonObject amsObj = wsArray.createNestedObject();
|
JsonObject amsObj = wsArray.add<JsonObject>();
|
||||||
amsObj["ams_id"] = ams_data[i].ams_id;
|
amsObj["ams_id"] = ams_data[i].ams_id;
|
||||||
|
|
||||||
JsonArray trays = amsObj.createNestedArray("tray");
|
JsonArray trays = amsObj["tray"].to<JsonArray>();
|
||||||
int maxTrays = (ams_data[i].ams_id == 255) ? 1 : 4;
|
int maxTrays = (ams_data[i].ams_id == 255) ? 1 : 4;
|
||||||
|
|
||||||
for (int j = 0; j < maxTrays; j++) {
|
for (int j = 0; j < maxTrays; j++) {
|
||||||
JsonObject trayObj = trays.createNestedObject();
|
JsonObject trayObj = trays.add<JsonObject>();
|
||||||
trayObj["id"] = ams_data[i].trays[j].id;
|
trayObj["id"] = ams_data[i].trays[j].id;
|
||||||
trayObj["tray_info_idx"] = ams_data[i].trays[j].tray_info_idx;
|
trayObj["tray_info_idx"] = ams_data[i].trays[j].tray_info_idx;
|
||||||
trayObj["tray_type"] = ams_data[i].trays[j].tray_type;
|
trayObj["tray_type"] = ams_data[i].trays[j].tray_type;
|
||||||
@ -427,14 +427,14 @@ void mqtt_callback(char* topic, byte* payload, unsigned int length) {
|
|||||||
JsonArray wsArray = wsDoc.to<JsonArray>();
|
JsonArray wsArray = wsDoc.to<JsonArray>();
|
||||||
|
|
||||||
for (int j = 0; j < ams_count; j++) {
|
for (int j = 0; j < ams_count; j++) {
|
||||||
JsonObject amsObj = wsArray.createNestedObject();
|
JsonObject amsObj = wsArray.add<JsonObject>();
|
||||||
amsObj["ams_id"] = ams_data[j].ams_id;
|
amsObj["ams_id"] = ams_data[j].ams_id;
|
||||||
|
|
||||||
JsonArray trays = amsObj.createNestedArray("tray");
|
JsonArray trays = amsObj["tray"].to<JsonArray>();
|
||||||
int maxTrays = (ams_data[j].ams_id == 255) ? 1 : 4;
|
int maxTrays = (ams_data[j].ams_id == 255) ? 1 : 4;
|
||||||
|
|
||||||
for (int k = 0; k < maxTrays; k++) {
|
for (int k = 0; k < maxTrays; k++) {
|
||||||
JsonObject trayObj = trays.createNestedObject();
|
JsonObject trayObj = trays.add<JsonObject>();
|
||||||
trayObj["id"] = ams_data[j].trays[k].id;
|
trayObj["id"] = ams_data[j].trays[k].id;
|
||||||
trayObj["tray_info_idx"] = ams_data[j].trays[k].tray_info_idx;
|
trayObj["tray_info_idx"] = ams_data[j].trays[k].tray_info_idx;
|
||||||
trayObj["tray_type"] = ams_data[j].trays[k].tray_type;
|
trayObj["tray_type"] = ams_data[j].trays[k].tray_type;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user