From f5afbbdfac3d1ef8252c5407f2d322d5eac7e21a Mon Sep 17 00:00:00 2001 From: Chrome Legion Date: Sat, 13 Apr 2019 21:18:24 -0700 Subject: [PATCH] Qrome - updated with Repetier configuration and printer selector in the web UI --- printermonitor/OctoPrintClient.cpp | 4 ++ printermonitor/OctoPrintClient.h | 1 + printermonitor/RepetierClient.cpp | 26 +++++++-- printermonitor/RepetierClient.h | 1 + printermonitor/printermonitor.ino | 87 ++++++++++++++++++++++-------- 5 files changed, 91 insertions(+), 28 deletions(-) diff --git a/printermonitor/OctoPrintClient.cpp b/printermonitor/OctoPrintClient.cpp index 162510c..369fe30 100644 --- a/printermonitor/OctoPrintClient.cpp +++ b/printermonitor/OctoPrintClient.cpp @@ -406,3 +406,7 @@ int OctoPrintClient::getPrinterPort() { String OctoPrintClient::getPrinterName() { return printerData.printerName; } + +void OctoPrintClient::setPrinterName(String printer) { + printerData.printerName = printer; +} diff --git a/printermonitor/OctoPrintClient.h b/printermonitor/OctoPrintClient.h index 7a79850..1761ccc 100644 --- a/printermonitor/OctoPrintClient.h +++ b/printermonitor/OctoPrintClient.h @@ -100,4 +100,5 @@ public: String getPrinterType(); int getPrinterPort(); String getPrinterName(); + void setPrinterName(String printer); }; diff --git a/printermonitor/RepetierClient.cpp b/printermonitor/RepetierClient.cpp index c950758..edaedf3 100644 --- a/printermonitor/RepetierClient.cpp +++ b/printermonitor/RepetierClient.cpp @@ -138,8 +138,18 @@ void RepetierClient::getPrinterJobResults() { return; } - //Selecting First printer - JsonObject& pr = root[0]; + int inx = 0; + int count = root.size(); + Serial.println("Size of root: " + String(count)); + for (int i = 0; i < count; i++) { + Serial.println("Printer: " + String((const char*)root[i]["slug"])); + if (String((const char*)root[i]["slug"]) == printerData.printerName) { + inx = i; + break; + } + } + + JsonObject& pr = root[inx]; //printerData.averagePrintTime = (const char*)pr[""]; printerData.estimatedPrintTime = (const char*)pr["printTime"]; @@ -151,7 +161,6 @@ void RepetierClient::getPrinterJobResults() { printerData.progressCompletion = (const char*) pr["done"]; printerData.progressFilepos = (const char*) pr["linesSend"]; printerData.progressPrintTime = (const char*) pr["printedTimeComp"]; - printerData.printerName = (const char*) pr["slug"]; //Figure out Time Left long timeTot=0; @@ -241,7 +250,6 @@ void RepetierClient::resetPrintData() { printerData.isPrinting = false; printerData.isPSUoff = false; printerData.error = ""; - printerData.printerName = ""; } String RepetierClient::getAveragePrintTime(){ @@ -285,7 +293,11 @@ String RepetierClient::getProgressPrintTimeLeft() { } String RepetierClient::getState() { - return printerData.state; + String rtnValue = "Printer is OFF"; + if (printerData.state == "1") { + rtnValue = "Printer is ON"; + } + return rtnValue; } boolean RepetierClient::isPrinting() { @@ -345,3 +357,7 @@ int RepetierClient::getPrinterPort() { String RepetierClient::getPrinterName() { return printerData.printerName; } + +void RepetierClient::setPrinterName(String printer) { + printerData.printerName = printer; +} diff --git a/printermonitor/RepetierClient.h b/printermonitor/RepetierClient.h index c30a465..7c92105 100644 --- a/printermonitor/RepetierClient.h +++ b/printermonitor/RepetierClient.h @@ -100,4 +100,5 @@ public: String getPrinterType(); int getPrinterPort(); String getPrinterName(); + void setPrinterName(String printer); }; diff --git a/printermonitor/printermonitor.ino b/printermonitor/printermonitor.ino index 5e86403..7626c2f 100644 --- a/printermonitor/printermonitor.ino +++ b/printermonitor/printermonitor.ino @@ -110,7 +110,7 @@ String WEB_ACTIONS = " Firmware Update" " About"; -String CHANGE_FORM = ""; // moved to setup to make it dynamic +String CHANGE_FORM = ""; // moved to config to make it dynamic String THEME_FORM = "

Theme Color

" "


" @@ -189,23 +189,7 @@ String COLOR_THEMES = "" ""; -void setup() { - CHANGE_FORM = "

Station Config:

" - "

"; - if (printerClient.getPrinterType() != "Repetier") { - CHANGE_FORM += "

"; - } - CHANGE_FORM += "

" - "

" - "

" - "


" - "

Display Clock when printer is off

" - "

Use 24 Hour Clock (military time)

" - "

Flip display orientation

" - "

Flash System LED on Service Calls

" - "

Use OctoPrint PSU control plugin for clock/blank

" - "

Clock Sync / Weather Refresh (minutes)

"; - +void setup() { Serial.begin(115200); SPIFFS.begin(); delay(10); @@ -375,7 +359,7 @@ void findMDNS() { } //************************************************************ -// Main Looop +// Main Loop //************************************************************ void loop() { @@ -471,6 +455,9 @@ void handleUpdateConfig() { if (!authentication()) { return server.requestAuthentication(); } + if (server.hasArg("printer")) { + printerClient.setPrinterName(server.arg("printer")); + } PrinterApiKey = server.arg("PrinterApiKey"); PrinterHostName = server.arg("PrinterHostName"); PrinterServer = server.arg("PrinterAddress"); @@ -573,6 +560,46 @@ void handleConfigure() { html = getHeader(); server.sendContent(html); + + CHANGE_FORM = "

Station Config:

" + "

" + "

"; + if (printerClient.getPrinterType() == "OctoPrint") { + CHANGE_FORM += "

"; + } + CHANGE_FORM += "

" + "

" + "

" + "

"; + if (printerClient.getPrinterType() == "Repetier") { + CHANGE_FORM += "" + "

" + ""; + } + CHANGE_FORM += "

" + "


"; + + String Clock_Form = "

Display Clock when printer is off

" + "

Use 24 Hour Clock (military time)

" + "

Flip display orientation

" + "

Flash System LED on Service Calls

" + "

Use OctoPrint PSU control plugin for clock/blank

" + "

Clock Sync / Weather Refresh (minutes)

"; + + if (printerClient.getPrinterType() == "Repetier") { + html = ""; + + server.sendContent(html); + } String form = CHANGE_FORM; @@ -582,6 +609,11 @@ void handleConfigure() { form.replace("%OCTOPORT%", String(PrinterPort)); form.replace("%OCTOUSER%", PrinterAuthUser); form.replace("%OCTOPASS%", PrinterAuthPass); + + server.sendContent(form); + + form = Clock_Form; + String isClockChecked = ""; if (DISPLAYCLOCK) { isClockChecked = "checked='checked'"; @@ -734,12 +766,12 @@ void displayPrinterStatus() { displayTime = timeClient.getHours() + ":" + timeClient.getMinutes() + ":" + timeClient.getSeconds(); } - html += "

Time: " + displayTime + "

"; + html += "

" + printerClient.getPrinterType() + " Printer Monitor

"; html += "

"; if (printerClient.getPrinterType() == "Repetier") { - html += printerClient.getPrinterType() + " Printer Name: " + printerClient.getPrinterName() + "
"; + html += "Printer Name: " + printerClient.getPrinterName() + "
"; } else { - html += printerClient.getPrinterType() + " Host Name: " + PrinterHostName + "
"; + html += "Host Name: " + PrinterHostName + "
"; } if (printerClient.getError() != "") { @@ -790,9 +822,11 @@ void displayPrinterStatus() { html += "

"; + html += "

Time: " + displayTime + "

"; + server.sendContent(html); // spit out what we got html = ""; - + if (DISPLAYWEATHER) { if (weatherClient.getCity(0) == "") { html += "

Please Configure Weather API

"; @@ -1077,6 +1111,7 @@ void writeSettings() { f.println("printerHostName=" + PrinterHostName); f.println("printerServer=" + PrinterServer); f.println("printerPort=" + String(PrinterPort)); + f.println("printerName=" + printerClient.getPrinterName()); f.println("printerAuthUser=" + PrinterAuthUser); f.println("printerAuthPass=" + PrinterAuthPass); f.println("refreshRate=" + String(minutesBetweenDataRefresh)); @@ -1134,6 +1169,12 @@ void readSettings() { PrinterPort = line.substring(line.lastIndexOf("printerPort=") + 12).toInt(); Serial.println("PrinterPort=" + String(PrinterPort)); } + if (line.indexOf("printerName=") >= 0) { + String printer = line.substring(line.lastIndexOf("printerName=") + 12); + printer.trim(); + printerClient.setPrinterName(printer); + Serial.println("PrinterName=" + printerClient.getPrinterName()); + } if (line.indexOf("printerAuthUser=") >= 0) { PrinterAuthUser = line.substring(line.lastIndexOf("printerAuthUser=") + 16); PrinterAuthUser.trim();