From 46660b9a93ae477e7d41253caac066d95c9f2ee7 Mon Sep 17 00:00:00 2001 From: victor7376 <74020611+victor7376@users.noreply.github.com> Date: Sat, 20 Mar 2021 12:10:56 +0000 Subject: [PATCH] Updated Layer screen & RepetierClient Updated Layer screen to change between font sizes depending on how many layers are printing. Also added the features to RepetierClient --- printermonitor/OctoPrintClient.cpp | 3 --- printermonitor/RepetierClient.cpp | 36 ++++++++++++++++++++++++++++++ printermonitor/RepetierClient.h | 6 +++++ printermonitor/printermonitor.ino | 15 +++++++++++-- 4 files changed, 55 insertions(+), 5 deletions(-) diff --git a/printermonitor/OctoPrintClient.cpp b/printermonitor/OctoPrintClient.cpp index 71121f3..012de4a 100644 --- a/printermonitor/OctoPrintClient.cpp +++ b/printermonitor/OctoPrintClient.cpp @@ -256,11 +256,8 @@ void OctoPrintClient::getPrinterJobResults() { // Parse JSON object JsonObject& root3 = jsonBuffer3.parseObject(printClient); if (!root3.success()) { - // printerData.isPrinting = false; printerData.estimatedEndTime = ""; printerData.currentLayer = ""; - // printerData.bedTemp = ""; - // printerData.bedTargetTemp = (const char*)root2["temperature"]["bed"]["target"]; return; } diff --git a/printermonitor/RepetierClient.cpp b/printermonitor/RepetierClient.cpp index e547916..3b961b2 100644 --- a/printermonitor/RepetierClient.cpp +++ b/printermonitor/RepetierClient.cpp @@ -220,6 +220,27 @@ void RepetierClient::getPrinterJobResults() { printerData.bedTemp = (const char*) pr2["heatedBeds"][0]["tempRead"]; printerData.bedTargetTemp = (const char*) pr2["heatedBeds"][0]["tempSet"]; + // Layer & Endtime + apiGetData = "GET /plugin/DisplayLayerProgress/values HTTP/1.1"; + printClient = getSubmitRequest(apiGetData); + if (printerData.error != "") { + return; + } + const size_t bufferSize3 = JSON_OBJECT_SIZE(4) + JSON_OBJECT_SIZE(6) + JSON_OBJECT_SIZE(7) + JSON_OBJECT_SIZE(10) + 550; + DynamicJsonBuffer jsonBuffer3(bufferSize3); + + // Parse JSON object + JsonObject& root3 = jsonBuffer3.parseObject(printClient); + if (!root3.success()) { + printerData.estimatedEndTime = ""; + printerData.currentLayer = ""; + return; + } + + printerData.estimatedEndTime = (const char*)root3["print"]["estimatedEndTime"]; + printerData.currentLayer = (const char*)root3["layer"]["current"]; + printerData.totalLayers = (const char*)root3["layer"]["total"]; + if (printerData.isPrinting) { Serial.println("Status: " + printerData.state + " " + printerData.fileName + "(" + printerData.progressCompletion + "%)"); } @@ -249,9 +270,24 @@ void RepetierClient::resetPrintData() { printerData.bedTargetTemp = ""; printerData.isPrinting = false; printerData.isPSUoff = false; + printerData.currentLayer = ""; + printerData.totalLayers = ""; + printerData.estimatedEndTime = ""; printerData.error = ""; } +String RepetierClient::getCurrentLayer(){ + return printerData.currentLayer; +} + +String RepetierClient::getTotalLayers(){ + return printerData.totalLayers; +} + +String RepetierClient::getEstimatedEndTime(){ + return printerData.estimatedEndTime; +} + String RepetierClient::getAveragePrintTime(){ return printerData.averagePrintTime; } diff --git a/printermonitor/RepetierClient.h b/printermonitor/RepetierClient.h index 7c92105..6a64ace 100644 --- a/printermonitor/RepetierClient.h +++ b/printermonitor/RepetierClient.h @@ -59,6 +59,9 @@ private: String state; String toolTemp; String toolTargetTemp; + String currentLayer; + String totalLayers; + String estimatedEndTime; String filamentLength; String bedTemp; String bedTargetTemp; @@ -92,6 +95,9 @@ public: boolean isPSUoff(); String getTempBedActual(); String getTempBedTarget(); + String getEstimatedEndTime(); + String getCurrentLayer(); + String getTotalLayers(); String getTempToolActual(); String getTempToolTarget(); String getFilamentLength(); diff --git a/printermonitor/printermonitor.ino b/printermonitor/printermonitor.ino index 50fd98d..486034f 100644 --- a/printermonitor/printermonitor.ino +++ b/printermonitor/printermonitor.ino @@ -979,17 +979,28 @@ void drawScreen4(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int String layer = printerClient.getCurrentLayer(); String totalLayers = printerClient.getTotalLayers(); + if (printerClient.getTotalLayers().toInt() >= 1000) { + display->setTextAlignment(TEXT_ALIGN_CENTER); + display->setFont(ArialMT_Plain_16); + + display->drawString(64 + x, 0 + y, "Layer"); + //display->setTextAlignment(TEXT_ALIGN_LEFT); + display->setFont(ArialMT_Plain_16); + + display->drawString(64 + x, 14 + y, layer + " / " + totalLayers); + } else display->setTextAlignment(TEXT_ALIGN_CENTER); display->setFont(ArialMT_Plain_16); display->drawString(64 + x, 0 + y, "Layer"); //display->setTextAlignment(TEXT_ALIGN_LEFT); - display->setFont(ArialMT_Plain_16); + display->setFont(ArialMT_Plain_24); - display->drawString(64 + x, 14 + y, layer+ " / " + totalLayers); + display->drawString(64 + x, 14 + y, layer + " / " + totalLayers); } + void drawScreen5(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) { String EstimatedEnd = printerClient.getEstimatedEndTime();