Some JSON

pull/125/head
Matthias Grimm 2020-12-13 17:45:05 -06:00
parent 07c278faca
commit e882e9a07e
1 changed files with 16 additions and 16 deletions

View File

@ -157,12 +157,12 @@ void DuetClient::getPrinterJobResults() {
return; return;
} }
//**** get the Printer Job status //**** get the Printer Job status
String apiGetData = "GET /printer/objects/query?heater_bed&extruder&webhooks&virtual_sdcard&print_stats&toolhead&display_status"; String apiGetData = "GET /rr_status?type=3";
WiFiClient printClient = getSubmitRequest(apiGetData); WiFiClient printClient = getSubmitRequest(apiGetData);
if (printerData.error != "") { if (printerData.error != "") {
return; return;
} }
const size_t bufferSize = JSON_ARRAY_SIZE(4) + JSON_OBJECT_SIZE(1) + 3*JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(4) + JSON_OBJECT_SIZE(5) + JSON_OBJECT_SIZE(6) + JSON_OBJECT_SIZE(9) + 426; const size_t bufferSize = 6*JSON_ARRAY_SIZE(1) + 3*JSON_ARRAY_SIZE(2) + 5*JSON_ARRAY_SIZE(3) + 5*JSON_OBJECT_SIZE(2) + 4*JSON_OBJECT_SIZE(5) + JSON_OBJECT_SIZE(9) + 257
DynamicJsonDocument jsonBuffer(bufferSize); DynamicJsonDocument jsonBuffer(bufferSize);
// Parse JSON object // Parse JSON object
@ -190,7 +190,7 @@ void DuetClient::getPrinterJobResults() {
printerData.progressPrintTime = (const char*)jsonBuffer["result"]["status"]["print_stats"]["print_duration"]; printerData.progressPrintTime = (const char*)jsonBuffer["result"]["status"]["print_stats"]["print_duration"];
printerData.progressPrintTimeLeft = (const char*)jsonBuffer["progress"]["printTimeLeft"]; printerData.progressPrintTimeLeft = (const char*)jsonBuffer["progress"]["printTimeLeft"];
printerData.filamentLength = (const char*)jsonBuffer["result"]["status"]["job"]["print_stats"]["filament_used"]; printerData.filamentLength = (const char*)jsonBuffer["result"]["status"]["job"]["print_stats"]["filament_used"];
printerData.state = (const char*)jsonBuffer["result"]["status"]["print_stats"]["state"]; printerData.state = (const char*)jsonBuffer["status"];
/** /**
printerData.progressPrintTimeLeft : printerData.progressPrintTimeLeft :
If no metadata is available, print duration and progress can be used to calculate the ETA: If no metadata is available, print duration and progress can be used to calculate the ETA:
@ -208,28 +208,28 @@ let eta = total_time - pstats.print_duration; */
this->debugController->printLn("Printer Not Operational"); this->debugController->printLn("Printer Not Operational");
} }
//**** get the fileseize // //**** get the fileseize
apiGetData = "GET /server/files/metadata?filename=" + printerData.fileName; // apiGetData = "GET /server/files/metadata?filename=" + printerData.fileName;
printClient = getSubmitRequest(apiGetData); // printClient = getSubmitRequest(apiGetData);
if (printerData.error != "") { // if (printerData.error != "") {
return; // return;
} // }
const size_t bufferSize2 = JSON_OBJECT_SIZE(1) + JSON_OBJECT_SIZE(8) + 128; // const size_t bufferSize2 = JSON_OBJECT_SIZE(1) + JSON_OBJECT_SIZE(8) + 128;
DynamicJsonDocument jsonBuffer2(bufferSize2); // DynamicJsonDocument jsonBuffer2(bufferSize2);
// Parse JSON object // Parse JSON object
DeserializationError error2 = deserializeJson(jsonBuffer2, printClient); DeserializationError error2 = deserializeJson(jsonBuffer, printClient);
if (error2) { if (error2) {
printerData.isPrinting = false; printerData.isPrinting = false;
printerData.toolTemp = ""; printerData.toolTemp = "";
printerData.toolTargetTemp = ""; printerData.toolTargetTemp = "";
printerData.bedTemp = ""; printerData.bedTemp = "";
printerData.bedTargetTemp = (int)jsonBuffer["result"]["status"]["heater_bed"]["target"]; printerData.bedTargetTemp = (int)jsonBuffer["temps"]["bed"]["active"];
return; return;
} }
String printing = (const char*)jsonBuffer["result"]["status"]["print_stats"]["state"]; String printing = (const char*)jsonBuffer["status"];
if (printing == "printing") { if (printing == "P") {
printerData.isPrinting = true; printerData.isPrinting = true;
} else { } else {
printerData.isPrinting = false; printerData.isPrinting = false;
@ -357,7 +357,7 @@ boolean DuetClient::isPSUoff() {
boolean DuetClient::isOperational() { boolean DuetClient::isOperational() {
boolean operational = false; boolean operational = false;
if (printerData.state == "standby" || isPrinting()) { if (printerData.state == "I" || isPrinting()) {
operational = true; operational = true;
} }
return operational; return operational;