Added Layer & End time Info

Added in Current Layer & Estimated End time (Clock) for print.
pull/136/head
victor7376 2021-03-13 12:31:06 +00:00
parent a9a0348efb
commit 045605b9f2
3 changed files with 70 additions and 1 deletions

View File

@ -244,6 +244,30 @@ void OctoPrintClient::getPrinterJobResults() {
printerData.bedTemp = (const char*)root2["temperature"]["bed"]["actual"]; printerData.bedTemp = (const char*)root2["temperature"]["bed"]["actual"];
printerData.bedTargetTemp = (const char*)root2["temperature"]["bed"]["target"]; printerData.bedTargetTemp = (const char*)root2["temperature"]["bed"]["target"];
// 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.isPrinting = false;
printerData.estimatedEndTime = "";
printerData.currentLayer = "";
// printerData.bedTemp = "";
// printerData.bedTargetTemp = (const char*)root2["temperature"]["bed"]["target"];
return;
}
printerData.estimatedEndTime = (const char*)root3["print"]["estimatedEndTime"];
printerData.currentLayer = (const char*)root3["layer"]["current"];
if (isPrinting()) { if (isPrinting()) {
Serial.println("Status: " + printerData.state + " " + printerData.fileName + "(" + printerData.progressCompletion + "%)"); Serial.println("Status: " + printerData.state + " " + printerData.fileName + "(" + printerData.progressCompletion + "%)");
} }
@ -305,6 +329,16 @@ void OctoPrintClient::resetPrintData() {
printerData.isPrinting = false; printerData.isPrinting = false;
printerData.isPSUoff = false; printerData.isPSUoff = false;
printerData.error = ""; printerData.error = "";
printerData.currentLayer = "";
printerData.estimatedEndTime = "";
}
String OctoPrintClient::getCurrentLayer(){
return printerData.currentLayer;
}
String OctoPrintClient::getEstimatedEndTime(){
return printerData.estimatedEndTime;
} }
String OctoPrintClient::getAveragePrintTime(){ String OctoPrintClient::getAveragePrintTime(){

View File

@ -59,6 +59,8 @@ private:
String state; String state;
String toolTemp; String toolTemp;
String toolTargetTemp; String toolTargetTemp;
String currentLayer;
String estimatedEndTime;
String filamentLength; String filamentLength;
String bedTemp; String bedTemp;
String bedTargetTemp; String bedTargetTemp;
@ -95,6 +97,8 @@ public:
String getTempToolActual(); String getTempToolActual();
String getTempToolTarget(); String getTempToolTarget();
String getFilamentLength(); String getFilamentLength();
String getEstimatedEndTime();
String getCurrentLayer();
String getValueRounded(String value); String getValueRounded(String value);
String getError(); String getError();
String getPrinterType(); String getPrinterType();

View File

@ -59,13 +59,15 @@ void drawOtaProgress(unsigned int, unsigned int);
void drawScreen1(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y); void drawScreen1(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y);
void drawScreen2(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y); void drawScreen2(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y);
void drawScreen3(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y); void drawScreen3(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y);
void drawScreen4(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y);
void drawScreen5(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y);
void drawHeaderOverlay(OLEDDisplay *display, OLEDDisplayUiState* state); void drawHeaderOverlay(OLEDDisplay *display, OLEDDisplayUiState* state);
void drawClock(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y); void drawClock(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y);
void drawWeather(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y); void drawWeather(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y);
void drawClockHeaderOverlay(OLEDDisplay *display, OLEDDisplayUiState* state); void drawClockHeaderOverlay(OLEDDisplay *display, OLEDDisplayUiState* state);
// Set the number of Frames supported // Set the number of Frames supported
const int numberOfFrames = 3; const int numberOfFrames = 5;
FrameCallback frames[numberOfFrames]; FrameCallback frames[numberOfFrames];
FrameCallback clockFrame[2]; FrameCallback clockFrame[2];
boolean isClockOn = false; boolean isClockOn = false;
@ -259,6 +261,8 @@ void setup() {
frames[0] = drawScreen1; frames[0] = drawScreen1;
frames[1] = drawScreen2; frames[1] = drawScreen2;
frames[2] = drawScreen3; frames[2] = drawScreen3;
frames[3] = drawScreen4;
frames[4] = drawScreen5;
clockFrame[0] = drawClock; clockFrame[0] = drawClock;
clockFrame[1] = drawWeather; clockFrame[1] = drawWeather;
ui.setOverlays(overlays, numberOfOverlays); ui.setOverlays(overlays, numberOfOverlays);
@ -963,6 +967,33 @@ void drawScreen3(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int
display->drawString(64 + x, 14 + y, time); display->drawString(64 + x, 14 + y, time);
} }
void drawScreen4(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) {
String layer = printerClient.getCurrentLayer();
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_24);
display->drawString(64 + x, 14 + y, layer);
}
void drawScreen5(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) {
String EstimatedEnd = printerClient.getEstimatedEndTime();
display->setTextAlignment(TEXT_ALIGN_CENTER);
display->setFont(ArialMT_Plain_16);
display->drawString(64 + x, 0 + y, "End Time");
//display->setTextAlignment(TEXT_ALIGN_LEFT);
display->setFont(ArialMT_Plain_24);
display->drawString(64 + x, 14 + y, EstimatedEnd);
}
void drawClock(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) { void drawClock(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) {
display->setTextAlignment(TEXT_ALIGN_CENTER); display->setTextAlignment(TEXT_ALIGN_CENTER);