Add files via upload

Updated Printermonitor.ino and settings.h with correct version from master.
pull/168/head
abacon118 2023-05-29 20:36:48 -04:00 committed by GitHub
parent 43ed65865d
commit 235cbd814a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 1380 additions and 1322 deletions

View File

@ -92,7 +92,7 @@ boolean DISPLAYCLOCK = true; // true = Show Clock when not printing / false =
// Display Settings // Display Settings
const int I2C_DISPLAY_ADDRESS = 0x3c; // I2C Address of your Display (usually 0x3c or 0x3d) const int I2C_DISPLAY_ADDRESS = 0x3c; // I2C Address of your Display (usually 0x3c or 0x3d)
const int SDA_PIN = D2; const int SDA_PIN = D2;
const int SCL_PIN = D5; // original code D5 -- Monitor Easy Board use D1 const int SCL_PIN = D3; // original code D5 -- Monitor Easy Board use D1
boolean INVERT_DISPLAY = false; // true = pins at top | false = pins at the bottom boolean INVERT_DISPLAY = false; // true = pins at top | false = pins at the bottom
//#define DISPLAY_SH1106 // Uncomment this line to use the SH1106 display -- SSD1306 is used by default and is most common //#define DISPLAY_SH1106 // Uncomment this line to use the SH1106 display -- SSD1306 is used by default and is most common

View File

@ -1,5 +1,3 @@
#include <ArduinoOTA.h>
/** The MIT License (MIT) /** The MIT License (MIT)
Copyright (c) 2018 David Payne Copyright (c) 2018 David Payne
@ -25,15 +23,16 @@
// Additional Contributions: // Additional Contributions:
/* 15 Jan 2019 : Owen Carter : Add psucontrol option and processing */ /* 15 Jan 2019 : Owen Carter : Add psucontrol option and processing */
/********************************************** /**********************************************
Edit Settings.h for personalization * Edit Settings.h for personalization
***********************************************/ ***********************************************/
#include "Settings.h" #include "Settings.h"
#define VERSION "2.5" #define VERSION "3.0"
#define HOSTNAME "OctMon-" #define HOSTNAME "PrintMon-"
#define CONFIG "/conf.txt" #define CONFIG "/conf.txt"
/* Useful Constants */ /* Useful Constants */
@ -53,12 +52,6 @@ SH1106Wire display(I2C_DISPLAY_ADDRESS, SDA_PIN, SCL_PIN);
SSD1306Wire display(I2C_DISPLAY_ADDRESS, SDA_PIN, SCL_PIN); // this is the default SSD1306Wire display(I2C_DISPLAY_ADDRESS, SDA_PIN, SCL_PIN); // this is the default
#endif #endif
#include <WiFiUdp.h> //for UDP
int ledstat;
unsigned int localPort = 2000; // local port to listen for UDP packets
IPAddress SendIP(192, 168, 0, 255); //UDP Broadcast IP data sent to all devicess on same network
WiFiUDP udp;
char packetBuffer[9]; //Where we get the UDP data
OLEDDisplayUi ui( &display ); OLEDDisplayUi ui( &display );
void drawProgress(OLEDDisplay *display, int percentage, String label); void drawProgress(OLEDDisplay *display, int percentage, String label);
@ -91,11 +84,15 @@ String lastSecond = "xx";
String lastReportStatus = ""; String lastReportStatus = "";
boolean displayOn = true; boolean displayOn = true;
//LDR //LDR Status
int ldrStatus =0; int ldrStatus =0;
// OctoPrint Client // Printer Client
OctoPrintClient printerClient(OctoPrintApiKey, OctoPrintServer, OctoPrintPort, OctoAuthUser, OctoAuthPass, HAS_PSU); #if defined(USE_REPETIER_CLIENT)
RepetierClient printerClient(PrinterApiKey, PrinterServer, PrinterPort, PrinterAuthUser, PrinterAuthPass, HAS_PSU);
#else
OctoPrintClient printerClient(PrinterApiKey, PrinterServer, PrinterPort, PrinterAuthUser, PrinterAuthPass, HAS_PSU);
#endif
int printerCount = 0; int printerCount = 0;
// Weather Client // Weather Client
@ -108,7 +105,7 @@ int8_t getWifiQuality();
ESP8266WebServer server(WEBSERVER_PORT); ESP8266WebServer server(WEBSERVER_PORT);
ESP8266HTTPUpdateServer serverUpdater; ESP8266HTTPUpdateServer serverUpdater;
String WEB_ACTIONS = "<a class='w3-bar-item w3-button' href='/'><i class='fa fa-home'></i> Home</a>" static const char WEB_ACTIONS[] PROGMEM = "<a class='w3-bar-item w3-button' href='/'><i class='fa fa-home'></i> Home</a>"
"<a class='w3-bar-item w3-button' href='/configure'><i class='fa fa-cog'></i> Configure</a>" "<a class='w3-bar-item w3-button' href='/configure'><i class='fa fa-cog'></i> Configure</a>"
"<a class='w3-bar-item w3-button' href='/configureweather'><i class='fa fa-cloud'></i> Weather</a>" "<a class='w3-bar-item w3-button' href='/configureweather'><i class='fa fa-cloud'></i> Weather</a>"
"<a class='w3-bar-item w3-button' href='/systemreset' onclick='return confirm(\"Do you want to reset to default settings?\")'><i class='fa fa-undo'></i> Reset Settings</a>" "<a class='w3-bar-item w3-button' href='/systemreset' onclick='return confirm(\"Do you want to reset to default settings?\")'><i class='fa fa-undo'></i> Reset Settings</a>"
@ -116,39 +113,34 @@ String WEB_ACTIONS = "<a class='w3-bar-item w3-button' href='/'><i class='fa fa
"<a class='w3-bar-item w3-button' href='/update'><i class='fa fa-wrench'></i> Firmware Update</a>" "<a class='w3-bar-item w3-button' href='/update'><i class='fa fa-wrench'></i> Firmware Update</a>"
"<a class='w3-bar-item w3-button' href='https://github.com/Qrome' target='_blank'><i class='fa fa-question-circle'></i> About</a>"; "<a class='w3-bar-item w3-button' href='https://github.com/Qrome' target='_blank'><i class='fa fa-question-circle'></i> About</a>";
String CHANGE_FORM = "<form class='w3-container' action='/updateconfig' method='get'><h2>Station Config:</h2>" String CHANGE_FORM = ""; // moved to config to make it dynamic
"<p><label>OctoPrint API Key (get from your server)</label><input class='w3-input w3-border w3-margin-bottom' type='text' name='octoPrintApiKey' value='%OCTOKEY%' maxlength='60'></p>"
"<p><label>OctoPrint Host Name (usually octopi)</label><input class='w3-input w3-border w3-margin-bottom' type='text' name='octoPrintHostName' value='%OCTOHOST%' maxlength='60'></p>" static const char CLOCK_FORM[] PROGMEM = "<hr><p><input name='isClockEnabled' class='w3-check w3-margin-top' type='checkbox' %IS_CLOCK_CHECKED%> Display Clock when printer is off</p>"
"<p><label>OctoPrint Address (do not include http://)</label><input class='w3-input w3-border w3-margin-bottom' type='text' name='octoPrintAddress' value='%OCTOADDRESS%' maxlength='60'></p>"
"<p><label>OctoPrint Port</label><input class='w3-input w3-border w3-margin-bottom' type='text' name='octoPrintPort' value='%OCTOPORT%' maxlength='5' onkeypress='return isNumberKey(event)'></p>"
"<p><label>OctoPrint User (only needed if you have haproxy or basic auth turned on)</label><input class='w3-input w3-border w3-margin-bottom' type='text' name='octoUser' value='%OCTOUSER%' maxlength='30'></p>"
"<p><label>OctoPrint Password </label><input class='w3-input w3-border w3-margin-bottom' type='password' name='octoPass' value='%OCTOPASS%'></p><hr>"
"<p><input name='isClockEnabled' class='w3-check w3-margin-top' type='checkbox' %IS_CLOCK_CHECKED%> Display Clock when printer is off</p>"
"<p><input name='is24hour' class='w3-check w3-margin-top' type='checkbox' %IS_24HOUR_CHECKED%> Use 24 Hour Clock (military time)</p>" "<p><input name='is24hour' class='w3-check w3-margin-top' type='checkbox' %IS_24HOUR_CHECKED%> Use 24 Hour Clock (military time)</p>"
"<p><input name='invDisp' class='w3-check w3-margin-top' type='checkbox' %IS_INVDISP_CHECKED%> Flip display orientation</p>" "<p><input name='invDisp' class='w3-check w3-margin-top' type='checkbox' %IS_INVDISP_CHECKED%> Flip display orientation</p>"
"<p><input name='useFlash' class='w3-check w3-margin-top' type='checkbox' %USEFLASH%> Flash System LED on Service Calls</p>"
"<p><input name='hasPSU' class='w3-check w3-margin-top' type='checkbox' %HAS_PSU_CHECKED%> Use OctoPrint PSU control plugin for clock/blank</p>" "<p><input name='hasPSU' class='w3-check w3-margin-top' type='checkbox' %HAS_PSU_CHECKED%> Use OctoPrint PSU control plugin for clock/blank</p>"
"<p>Clock Sync / Weather Refresh (minutes) <select class='w3-option w3-padding' name='refresh'>%OPTIONS%</select></p>"; "<p>Clock Sync / Weather Refresh (minutes) <select class='w3-option w3-padding' name='refresh'>%OPTIONS%</select></p>";
String THEME_FORM = "<p>Theme Color <select class='w3-option w3-padding' name='theme'>%THEME_OPTIONS%</select></p>" static const char THEME_FORM[] PROGMEM = "<p>Theme Color <select class='w3-option w3-padding' name='theme'>%THEME_OPTIONS%</select></p>"
"<p><label>UTC Time Offset</label><input class='w3-input w3-border w3-margin-bottom' type='text' name='utcoffset' value='%UTCOFFSET%' maxlength='12'></p><hr>" "<p><label>UTC Time Offset</label><input class='w3-input w3-border w3-margin-bottom' type='text' name='utcoffset' value='%UTCOFFSET%' maxlength='12'></p><hr>"
"<p><input name='isBasicAuth' class='w3-check w3-margin-top' type='checkbox' %IS_BASICAUTH_CHECKED%> Use Security Credentials for Configuration Changes</p>" "<p><input name='isBasicAuth' class='w3-check w3-margin-top' type='checkbox' %IS_BASICAUTH_CHECKED%> Use Security Credentials for Configuration Changes</p>"
"<p><label>User ID (for this interface)</label><input class='w3-input w3-border w3-margin-bottom' type='text' name='userid' value='%USERID%' maxlength='20'></p>" "<p><label>User ID (for this interface)</label><input class='w3-input w3-border w3-margin-bottom' type='text' name='userid' value='%USERID%' maxlength='20'></p>"
"<p><label>Password </label><input class='w3-input w3-border w3-margin-bottom' type='password' name='stationpassword' value='%STATIONPASSWORD%'></p>" "<p><label>Password </label><input class='w3-input w3-border w3-margin-bottom' type='password' name='stationpassword' value='%STATIONPASSWORD%'></p>"
"<button class='w3-button w3-block w3-grey w3-section w3-padding' type='submit'>Save</button></form>"; "<button class='w3-button w3-block w3-grey w3-section w3-padding' type='submit'>Save</button></form>";
String WEATHER_FORM = "<form class='w3-container' action='/updateweatherconfig' method='get'><h2>Weather Config:</h2>" static const char WEATHER_FORM[] PROGMEM = "<form class='w3-container' action='/updateweatherconfig' method='get'><h2>Weather Config:</h2>"
"<p><input name='isWeatherEnabled' class='w3-check w3-margin-top' type='checkbox' %IS_WEATHER_CHECKED%> Display Weather when printer is off</p>" "<p><input name='isWeatherEnabled' class='w3-check w3-margin-top' type='checkbox' %IS_WEATHER_CHECKED%> Display Weather when printer is off</p>"
"<label>OpenWeatherMap API Key (get from <a href='https://openweathermap.org/' target='_BLANK'>here</a>)</label>" "<label>OpenWeatherMap API Key (get from <a href='https://openweathermap.org/' target='_BLANK'>here</a>)</label>"
"<input class='w3-input w3-border w3-margin-bottom' type='text' name='openWeatherMapApiKey' value='%WEATHERKEY%' maxlength='60'>" "<input class='w3-input w3-border w3-margin-bottom' type='text' name='openWeatherMapApiKey' value='%WEATHERKEY%' maxlength='60'>"
"<p><label>%CITYNAME1% (<a href='http://openweathermap.org/find' target='_BLANK'><i class='fa fa-search'></i> Search for City ID</a>) " "<p><label>%CITYNAME1% (<a href='http://openweathermap.org/find' target='_BLANK'><i class='fa fa-search'></i> Search for City ID</a>) "
"or full <a href='http://openweathermap.org/help/city_list.txt' target='_BLANK'>city list</a></label>"
"<input class='w3-input w3-border w3-margin-bottom' type='text' name='city1' value='%CITY1%' onkeypress='return isNumberKey(event)'></p>" "<input class='w3-input w3-border w3-margin-bottom' type='text' name='city1' value='%CITY1%' onkeypress='return isNumberKey(event)'></p>"
"<p><input name='metric' class='w3-check w3-margin-top' type='checkbox' %METRIC%> Use Metric (Celsius)</p>" "<p><input name='metric' class='w3-check w3-margin-top' type='checkbox' %METRIC%> Use Metric (Celsius)</p>"
"<p>Weather Language <select class='w3-option w3-padding' name='language'>%LANGUAGEOPTIONS%</select></p>" "<p>Weather Language <select class='w3-option w3-padding' name='language'>%LANGUAGEOPTIONS%</select></p>"
"<button class='w3-button w3-block w3-grey w3-section w3-padding' type='submit'>Save</button></form>" "<button class='w3-button w3-block w3-grey w3-section w3-padding' type='submit'>Save</button></form>"
"<script>function isNumberKey(e){var h=e.which?e.which:event.keyCode;return!(h>31&&(h<48||h>57))}</script>"; "<script>function isNumberKey(e){var h=e.which?e.which:event.keyCode;return!(h>31&&(h<48||h>57))}</script>";
String LANG_OPTIONS = "<option>ar</option>" static const char LANG_OPTIONS[] PROGMEM = "<option>ar</option>"
"<option>bg</option>" "<option>bg</option>"
"<option>ca</option>" "<option>ca</option>"
"<option>cz</option>" "<option>cz</option>"
@ -182,7 +174,7 @@ String LANG_OPTIONS = "<option>ar</option>"
"<option>zh_cn</option>" "<option>zh_cn</option>"
"<option>zh_tw</option>"; "<option>zh_tw</option>";
String COLOR_THEMES = "<option>red</option>" static const char COLOR_THEMES[] PROGMEM = "<option>red</option>"
"<option>pink</option>" "<option>pink</option>"
"<option>purple</option>" "<option>purple</option>"
"<option>deep-purple</option>" "<option>deep-purple</option>"
@ -218,6 +210,9 @@ void setup() {
// Initialize digital pin for LED (little blue light on the Wemos D1 Mini) // Initialize digital pin for LED (little blue light on the Wemos D1 Mini)
pinMode(externalLight, OUTPUT); pinMode(externalLight, OUTPUT);
//Some Defaults before loading from Config.txt
PrinterPort = printerClient.getPrinterPort();
readSettings(); readSettings();
// initialize display // initialize display
@ -229,10 +224,16 @@ void setup() {
display.display(); display.display();
//display.flipScreenVertically(); //display.flipScreenVertically();
display.setFont(ArialMT_Plain_16);
display.setTextAlignment(TEXT_ALIGN_CENTER); display.setTextAlignment(TEXT_ALIGN_CENTER);
display.setContrast(255); // default is 255 display.setContrast(255); // default is 255
display.drawString(64, 5, "Printer Monitor\nBy Qrome\nV" + String(VERSION)); display.setFont(ArialMT_Plain_16);
display.drawString(64, 1, "Printer Monitor");
display.setFont(ArialMT_Plain_10);
display.drawString(64, 18, "for " + printerClient.getPrinterType());
display.setFont(ArialMT_Plain_16);
display.drawString(64, 30, "By Qrome");
display.drawString(64, 46, "V" + String(VERSION));
display.display(); display.display();
//WiFiManager //WiFiManager
@ -335,54 +336,40 @@ void setup() {
display.drawString(64, 20, "Enable in Settings.h"); display.drawString(64, 20, "Enable in Settings.h");
display.display(); display.display();
} }
flashLED(5, 500); flashLED(5, 100);
findMDNS(); //go find Octoprint Server by the hostname findMDNS(); //go find Printer Server by the hostname
Serial.println("*** Leaving setup()"); Serial.println("*** Leaving setup()");
{
pinMode(D8, OUTPUT);
digitalWrite(D8, LOW);
Serial.println("");
Serial.print("Connected to ");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
Serial.println("Starting UDP");
udp.begin(localPort);
Serial.print("Local port: ");
Serial.println(udp.localPort());
}
} }
void findMDNS() { void findMDNS() {
if (OctoPrintHostName == "" || ENABLE_OTA == false) { if (PrinterHostName == "" || ENABLE_OTA == false) {
return; // nothing to do here return; // nothing to do here
} }
// We now query our network for 'web servers' service // We now query our network for 'web servers' service
// over tcp, and get the number of available devices // over tcp, and get the number of available devices
int n = MDNS.queryService("http", "tcp"); int n = MDNS.queryService("http", "tcp");
if (n == 0) { if (n == 0) {
Serial.println("no services found - make sure OctoPrint server is turned on"); Serial.println("no services found - make sure Printer server is turned on");
return; return;
} }
Serial.println("*** Looking for " + OctoPrintHostName + " over mDNS"); Serial.println("*** Looking for " + PrinterHostName + " over mDNS");
for (int i = 0; i < n; ++i) { for (int i = 0; i < n; ++i) {
// Going through every available service, // Going through every available service,
// we're searching for the one whose hostname // we're searching for the one whose hostname
// matches what we want, and then get its IP // matches what we want, and then get its IP
Serial.println("Found: " + MDNS.hostname(i)); Serial.println("Found: " + MDNS.hostname(i));
if (MDNS.hostname(i) == OctoPrintHostName) { if (MDNS.hostname(i) == PrinterHostName) {
IPAddress serverIp = MDNS.IP(i); IPAddress serverIp = MDNS.IP(i);
OctoPrintServer = serverIp.toString(); PrinterServer = serverIp.toString();
OctoPrintPort = MDNS.port(i); // save the port PrinterPort = MDNS.port(i); // save the port
Serial.println("*** Found OctoPrint Server " + OctoPrintHostName + " http://" + OctoPrintServer + ":" + OctoPrintPort); Serial.println("*** Found Printer Server " + PrinterHostName + " http://" + PrinterServer + ":" + PrinterPort);
writeSettings(); // update the settings writeSettings(); // update the settings
} }
} }
} }
//************************************************************ //************************************************************
// Main Looop // Main Loop
//************************************************************ //************************************************************
void loop() { void loop() {
@ -393,24 +380,24 @@ void loop() {
if (lastMinute != timeClient.getMinutes() && !printerClient.isPrinting()) { if (lastMinute != timeClient.getMinutes() && !printerClient.isPrinting()) {
// Check status every 60 seconds // Check status every 60 seconds
digitalWrite(externalLight, LOW); ledOnOff(true);
lastMinute = timeClient.getMinutes(); // reset the check value lastMinute = timeClient.getMinutes(); // reset the check value
printerClient.getPrinterJobResults(); printerClient.getPrinterJobResults();
printerClient.getPrinterPsuState(); printerClient.getPrinterPsuState();
digitalWrite(externalLight, HIGH); ledOnOff(false);
} else if (printerClient.isPrinting()) { } else if (printerClient.isPrinting()) {
if (lastSecond != timeClient.getSeconds() && timeClient.getSeconds().endsWith("0")) { if (lastSecond != timeClient.getSeconds() && timeClient.getSeconds().endsWith("0")) {
lastSecond = timeClient.getSeconds(); lastSecond = timeClient.getSeconds();
// every 10 seconds while printing get an update // every 10 seconds while printing get an update
digitalWrite(externalLight, LOW); ledOnOff(true);
printerClient.getPrinterJobResults(); printerClient.getPrinterJobResults();
printerClient.getPrinterPsuState(); printerClient.getPrinterPsuState();
digitalWrite(externalLight, HIGH); ledOnOff(false);
} }
} }
checkDisplay(); // Check to see if the printer is on or offline and change display. checkDisplay(); // Check to see if the printer is on or offline and change display.
lightOn(); lightOn(); //Check if the lights are on
ui.update(); ui.update();
if (WEBSERVER_ENABLED) { if (WEBSERVER_ENABLED) {
@ -419,47 +406,24 @@ void loop() {
if (ENABLE_OTA) { if (ENABLE_OTA) {
ArduinoOTA.handle(); ArduinoOTA.handle();
} }
{ //Loop for motion LED
int cb = udp.parsePacket();//start of UDP
if (!cb)
{
//If serial data is recived send it to UDP
if (Serial.available() > 0)
{
udp.beginPacket(SendIP, 2000); //Send Data to Master unit
//Send UDP requests are to port
char a[1];
a[0] = char(Serial.read()); //Serial Byte Read
udp.write(a, 1); //Send one byte to ESP8266
udp.endPacket();
}
}
else {
digitalWrite(D8, HIGH);
delay(5000);
digitalWrite(D8, LOW);
delay(20);
}
}//end of UDP
} }
void lightOn() { void lightOn() { //Check LDR status
ldrStatus = analogRead(ldrPin); ldrStatus = analogRead(ldrPin);
if(ldrStatus>=250){ if(ldrStatus>=250){ //Change this value to change the sensitivity of the LDR
Serial.print("LDR true"); Serial.print("LDR value will turn on screen");
DISPLAYCLOCK = true; DISPLAYCLOCK = true;
//enableDisplay(true); //enableDisplay(true);
} }
else{ else{
Serial.print("LDR false"); Serial.print("LDR will NOT turn on screen");
DISPLAYCLOCK = false; DISPLAYCLOCK = false;
// enableDisplay(false); // enableDisplay(false);
} }
} }
void getUpdateTime() { void getUpdateTime() {
digitalWrite(externalLight, LOW); // turn on the LED ledOnOff(true); // turn on the LED
Serial.println(); Serial.println();
if (displayOn && DISPLAYWEATHER) { if (displayOn && DISPLAYWEATHER) {
@ -473,7 +437,7 @@ void getUpdateTime() {
lastEpoch = timeClient.getCurrentEpoch(); lastEpoch = timeClient.getCurrentEpoch();
Serial.println("Local time: " + timeClient.getAmPmFormattedTime()); Serial.println("Local time: " + timeClient.getAmPmFormattedTime());
digitalWrite(externalLight, HIGH); // turn off the LED ledOnOff(false); // turn off the LED
} }
boolean authentication() { boolean authentication() {
@ -515,15 +479,19 @@ void handleUpdateConfig() {
if (!authentication()) { if (!authentication()) {
return server.requestAuthentication(); return server.requestAuthentication();
} }
OctoPrintApiKey = server.arg("octoPrintApiKey"); if (server.hasArg("printer")) {
OctoPrintHostName = server.arg("octoPrintHostName"); printerClient.setPrinterName(server.arg("printer"));
OctoPrintServer = server.arg("octoPrintAddress"); }
OctoPrintPort = server.arg("octoPrintPort").toInt(); PrinterApiKey = server.arg("PrinterApiKey");
OctoAuthUser = server.arg("octoUser"); PrinterHostName = server.arg("PrinterHostName");
OctoAuthPass = server.arg("octoPass"); PrinterServer = server.arg("PrinterAddress");
PrinterPort = server.arg("PrinterPort").toInt();
PrinterAuthUser = server.arg("octoUser");
PrinterAuthPass = server.arg("octoPass");
DISPLAYCLOCK = server.hasArg("isClockEnabled"); DISPLAYCLOCK = server.hasArg("isClockEnabled");
IS_24HOUR = server.hasArg("is24hour"); IS_24HOUR = server.hasArg("is24hour");
INVERT_DISPLAY = server.hasArg("invDisp"); INVERT_DISPLAY = server.hasArg("invDisp");
USE_FLASH = server.hasArg("useFlash");
HAS_PSU = server.hasArg("hasPSU"); HAS_PSU = server.hasArg("hasPSU");
minutesBetweenDataRefresh = server.arg("refresh").toInt(); minutesBetweenDataRefresh = server.arg("refresh").toInt();
themeColor = server.arg("theme"); themeColor = server.arg("theme");
@ -563,7 +531,7 @@ void handleWeatherConfigure() {
if (!authentication()) { if (!authentication()) {
return server.requestAuthentication(); return server.requestAuthentication();
} }
digitalWrite(externalLight, LOW); ledOnOff(true);
String html = ""; String html = "";
server.sendHeader("Cache-Control", "no-cache, no-store"); server.sendHeader("Cache-Control", "no-cache, no-store");
@ -575,7 +543,7 @@ void handleWeatherConfigure() {
html = getHeader(); html = getHeader();
server.sendContent(html); server.sendContent(html);
String form = WEATHER_FORM; String form = FPSTR(WEATHER_FORM);
String isWeatherChecked = ""; String isWeatherChecked = "";
if (DISPLAYWEATHER) { if (DISPLAYWEATHER) {
isWeatherChecked = "checked='checked'"; isWeatherChecked = "checked='checked'";
@ -589,7 +557,7 @@ void handleWeatherConfigure() {
checked = "checked='checked'"; checked = "checked='checked'";
} }
form.replace("%METRIC%", checked); form.replace("%METRIC%", checked);
String options = LANG_OPTIONS; String options = FPSTR(LANG_OPTIONS);
options.replace(">"+String(WeatherLanguage)+"<", " selected>"+String(WeatherLanguage)+"<"); options.replace(">"+String(WeatherLanguage)+"<", " selected>"+String(WeatherLanguage)+"<");
form.replace("%LANGUAGEOPTIONS%", options); form.replace("%LANGUAGEOPTIONS%", options);
server.sendContent(form); server.sendContent(form);
@ -598,14 +566,14 @@ void handleWeatherConfigure() {
server.sendContent(html); server.sendContent(html);
server.sendContent(""); server.sendContent("");
server.client().stop(); server.client().stop();
digitalWrite(externalLight, HIGH); ledOnOff(false);
} }
void handleConfigure() { void handleConfigure() {
if (!authentication()) { if (!authentication()) {
return server.requestAuthentication(); return server.requestAuthentication();
} }
digitalWrite(externalLight, LOW); ledOnOff(true);
String html = ""; String html = "";
server.sendHeader("Cache-Control", "no-cache, no-store"); server.sendHeader("Cache-Control", "no-cache, no-store");
@ -617,14 +585,61 @@ void handleConfigure() {
html = getHeader(); html = getHeader();
server.sendContent(html); server.sendContent(html);
CHANGE_FORM = "<form class='w3-container' action='/updateconfig' method='get'><h2>Station Config:</h2>"
"<p><label>" + printerClient.getPrinterType() + " API Key (get from your server)</label>"
"<input class='w3-input w3-border w3-margin-bottom' type='text' name='PrinterApiKey' id='PrinterApiKey' value='%OCTOKEY%' maxlength='60'></p>";
if (printerClient.getPrinterType() == "OctoPrint") {
CHANGE_FORM += "<p><label>" + printerClient.getPrinterType() + " Host Name (usually octopi)</label><input class='w3-input w3-border w3-margin-bottom' type='text' name='PrinterHostName' value='%OCTOHOST%' maxlength='60'></p>";
}
CHANGE_FORM += "<p><label>" + printerClient.getPrinterType() + " Address (do not include http://)</label>"
"<input class='w3-input w3-border w3-margin-bottom' type='text' name='PrinterAddress' id='PrinterAddress' value='%OCTOADDRESS%' maxlength='60'></p>"
"<p><label>" + printerClient.getPrinterType() + " Port</label>"
"<input class='w3-input w3-border w3-margin-bottom' type='text' name='PrinterPort' id='PrinterPort' value='%OCTOPORT%' maxlength='5' onkeypress='return isNumberKey(event)'></p>";
if (printerClient.getPrinterType() == "Repetier") {
CHANGE_FORM += "<input type='button' value='Test Connection' onclick='testRepetier()'>"
"<input type='hidden' id='selectedPrinter' value='" + printerClient.getPrinterName() + "'><p id='RepetierTest'></p>"
"<script>testRepetier();</script>";
} else {
CHANGE_FORM += "<input type='button' value='Test Connection and API JSON Response' onclick='testOctoPrint()'><p id='OctoPrintTest'></p>";
}
CHANGE_FORM += "<p><label>" + printerClient.getPrinterType() + " User (only needed if you have haproxy or basic auth turned on)</label><input class='w3-input w3-border w3-margin-bottom' type='text' name='octoUser' value='%OCTOUSER%' maxlength='30'></p>"
"<p><label>" + printerClient.getPrinterType() + " Password </label><input class='w3-input w3-border w3-margin-bottom' type='password' name='octoPass' value='%OCTOPASS%'></p>";
if (printerClient.getPrinterType() == "Repetier") {
html = "<script>function testRepetier(){var e=document.getElementById(\"RepetierTest\"),r=document.getElementById(\"PrinterAddress\").value,"
"t=document.getElementById(\"PrinterPort\").value;if(\"\"==r||\"\"==t)return e.innerHTML=\"* Address and Port are required\","
"void(e.style.background=\"\");var n=\"http://\"+r+\":\"+t;n+=\"/printer/api/?a=listPrinter&apikey=\"+document.getElementById(\"PrinterApiKey\").value,"
"console.log(n);var o=new XMLHttpRequest;o.open(\"GET\",n,!0),o.onload=function(){if(200===o.status){var r=JSON.parse(o.responseText);"
"if(!r.error&&r.length>0){var t=\"<label>Connected -- Select Printer</label> \";t+=\"<select class='w3-option w3-padding' name='printer'>\";"
"var n=document.getElementById(\"selectedPrinter\").value,i=\"\";for(printer in r)i=r[printer].slug==n?\"selected\":\"\","
"t+=\"<option value='\"+r[printer].slug+\"' \"+i+\">\"+r[printer].name+\"</option>\";t+=\"</select>\","
"e.innerHTML=t,e.style.background=\"lime\"}else e.innerHTML=\"Error invalid API Key: \"+r.error,"
"e.style.background=\"red\"}else e.innerHTML=\"Error: \"+o.statusText,e.style.background=\"red\"},"
"o.onerror=function(){e.innerHTML=\"Error connecting to server -- check IP and Port\",e.style.background=\"red\"},o.send(null)}</script>";
server.sendContent(html);
} else {
html = "<script>function testOctoPrint(){var e=document.getElementById(\"OctoPrintTest\"),t=document.getElementById(\"PrinterAddress\").value,"
"n=document.getElementById(\"PrinterPort\").value;if(e.innerHTML=\"\",\"\"==t||\"\"==n)return e.innerHTML=\"* Address and Port are required\","
"void(e.style.background=\"\");var r=\"http://\"+t+\":\"+n;r+=\"/api/job?apikey=\"+document.getElementById(\"PrinterApiKey\").value,window.open(r,\"_blank\").focus()}</script>";
server.sendContent(html);
}
String form = CHANGE_FORM; String form = CHANGE_FORM;
form.replace("%OCTOKEY%", OctoPrintApiKey); form.replace("%OCTOKEY%", PrinterApiKey);
form.replace("%OCTOHOST%", OctoPrintHostName); form.replace("%OCTOHOST%", PrinterHostName);
form.replace("%OCTOADDRESS%", OctoPrintServer); form.replace("%OCTOADDRESS%", PrinterServer);
form.replace("%OCTOPORT%", String(OctoPrintPort)); form.replace("%OCTOPORT%", String(PrinterPort));
form.replace("%OCTOUSER%", OctoAuthUser); form.replace("%OCTOUSER%", PrinterAuthUser);
form.replace("%OCTOPASS%", OctoAuthPass); form.replace("%OCTOPASS%", PrinterAuthPass);
server.sendContent(form);
form = FPSTR(CLOCK_FORM);
String isClockChecked = ""; String isClockChecked = "";
if (DISPLAYCLOCK) { if (DISPLAYCLOCK) {
isClockChecked = "checked='checked'"; isClockChecked = "checked='checked'";
@ -640,6 +655,11 @@ void handleConfigure() {
isInvDisp = "checked='checked'"; isInvDisp = "checked='checked'";
} }
form.replace("%IS_INVDISP_CHECKED%", isInvDisp); form.replace("%IS_INVDISP_CHECKED%", isInvDisp);
String isFlashLED = "";
if (USE_FLASH) {
isFlashLED = "checked='checked'";
}
form.replace("%USEFLASH%", isFlashLED);
String hasPSUchecked = ""; String hasPSUchecked = "";
if (HAS_PSU) { if (HAS_PSU) {
hasPSUchecked = "checked='checked'"; hasPSUchecked = "checked='checked'";
@ -652,9 +672,9 @@ void handleConfigure() {
server.sendContent(form); server.sendContent(form);
form = THEME_FORM; form = FPSTR(THEME_FORM);
String themeOptions = COLOR_THEMES; String themeOptions = FPSTR(COLOR_THEMES);
themeOptions.replace(">"+String(themeColor)+"<", " selected>"+String(themeColor)+"<"); themeOptions.replace(">"+String(themeColor)+"<", " selected>"+String(themeColor)+"<");
form.replace("%THEME_OPTIONS%", themeOptions); form.replace("%THEME_OPTIONS%", themeOptions);
form.replace("%UTCOFFSET%", String(UtcOffset)); form.replace("%UTCOFFSET%", String(UtcOffset));
@ -672,11 +692,11 @@ void handleConfigure() {
server.sendContent(html); server.sendContent(html);
server.sendContent(""); server.sendContent("");
server.client().stop(); server.client().stop();
digitalWrite(externalLight, HIGH); ledOnOff(false);
} }
void displayMessage(String message) { void displayMessage(String message) {
digitalWrite(externalLight, LOW); ledOnOff(true);
server.sendHeader("Cache-Control", "no-cache, no-store"); server.sendHeader("Cache-Control", "no-cache, no-store");
server.sendHeader("Pragma", "no-cache"); server.sendHeader("Pragma", "no-cache");
@ -691,7 +711,7 @@ void displayMessage(String message) {
server.sendContent(""); server.sendContent("");
server.client().stop(); server.client().stop();
digitalWrite(externalLight, HIGH); ledOnOff(false);
} }
void redirectHome() { void redirectHome() {
@ -709,7 +729,7 @@ String getHeader() {
} }
String getHeader(boolean refresh) { String getHeader(boolean refresh) {
String menu = WEB_ACTIONS; String menu = FPSTR(WEB_ACTIONS);
String html = "<!DOCTYPE HTML>"; String html = "<!DOCTYPE HTML>";
html += "<html><head><title>Printer Monitor</title><link rel='icon' href='data:;base64,='>"; html += "<html><head><title>Printer Monitor</title><link rel='icon' href='data:;base64,='>";
@ -757,7 +777,7 @@ String getFooter() {
} }
void displayPrinterStatus() { void displayPrinterStatus() {
digitalWrite(externalLight, LOW); ledOnOff(true);
String html = ""; String html = "";
server.sendHeader("Cache-Control", "no-cache, no-store"); server.sendHeader("Cache-Control", "no-cache, no-store");
@ -772,9 +792,14 @@ void displayPrinterStatus() {
displayTime = timeClient.getHours() + ":" + timeClient.getMinutes() + ":" + timeClient.getSeconds(); displayTime = timeClient.getHours() + ":" + timeClient.getMinutes() + ":" + timeClient.getSeconds();
} }
html += "<div class='w3-cell-row' style='width:100%'><h2>Time: " + displayTime + "</h2></div><div class='w3-cell-row'>"; html += "<div class='w3-cell-row' style='width:100%'><h2>" + printerClient.getPrinterType() + " Monitor</h2></div><div class='w3-cell-row'>";
html += "<div class='w3-cell w3-container' style='width:100%'><p>"; html += "<div class='w3-cell w3-container' style='width:100%'><p>";
html += "Host Name: " + OctoPrintHostName + "<br>"; if (printerClient.getPrinterType() == "Repetier") {
html += "Printer Name: " + printerClient.getPrinterName() + " <a href='/configure' title='Configure'><i class='fa fa-cog'></i></a><br>";
} else {
html += "Host Name: " + PrinterHostName + " <a href='/configure' title='Configure'><i class='fa fa-cog'></i></a><br>";
}
if (printerClient.getError() != "") { if (printerClient.getError() != "") {
html += "Status: Offline<br>"; html += "Status: Offline<br>";
html += "Reason: " + printerClient.getError() + "<br>"; html += "Reason: " + printerClient.getError() + "<br>";
@ -823,6 +848,8 @@ void displayPrinterStatus() {
html += "</p></div></div>"; html += "</p></div></div>";
html += "<div class='w3-cell-row' style='width:100%'><h2>Time: " + displayTime + "</h2></div>";
server.sendContent(html); // spit out what we got server.sendContent(html); // spit out what we got
html = ""; html = "";
@ -853,7 +880,7 @@ void displayPrinterStatus() {
server.sendContent(String(getFooter())); server.sendContent(String(getFooter()));
server.sendContent(""); server.sendContent("");
server.client().stop(); server.client().stop();
digitalWrite(externalLight, HIGH); ledOnOff(false);
} }
void configModeCallback (WiFiManager *myWiFiManager) { void configModeCallback (WiFiManager *myWiFiManager) {
@ -866,9 +893,9 @@ void configModeCallback (WiFiManager *myWiFiManager) {
display.drawString(64, 0, "Wifi Manager"); display.drawString(64, 0, "Wifi Manager");
display.drawString(64, 10, "Please connect to AP"); display.drawString(64, 10, "Please connect to AP");
display.setFont(ArialMT_Plain_16); display.setFont(ArialMT_Plain_16);
display.drawString(64, 23, myWiFiManager->getConfigPortalSSID()); display.drawString(64, 26, myWiFiManager->getConfigPortalSSID());
display.setFont(ArialMT_Plain_10); display.setFont(ArialMT_Plain_10);
display.drawString(64, 42, "To setup Wifi connection"); display.drawString(64, 46, "To setup Wifi connection");
display.display(); display.display();
Serial.println("Wifi Manager"); Serial.println("Wifi Manager");
@ -878,12 +905,22 @@ void configModeCallback (WiFiManager *myWiFiManager) {
flashLED(20, 50); flashLED(20, 50);
} }
void ledOnOff(boolean value) {
if (USE_FLASH) {
if (value) {
digitalWrite(externalLight, LOW); // LED ON
} else {
digitalWrite(externalLight, HIGH); // LED OFF
}
}
}
void flashLED(int number, int delayTime) { void flashLED(int number, int delayTime) {
for (int inx = 0; inx < number; inx++) { for (int inx = 0; inx <= number; inx++) {
delay(delayTime); delay(delayTime);
digitalWrite(externalLight, LOW); digitalWrite(externalLight, LOW); // ON
delay(delayTime); delay(delayTime);
digitalWrite(externalLight, HIGH); digitalWrite(externalLight, HIGH); // OFF
delay(delayTime); delay(delayTime);
} }
} }
@ -894,7 +931,8 @@ void drawScreen1(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int
display->setTextAlignment(TEXT_ALIGN_CENTER); display->setTextAlignment(TEXT_ALIGN_CENTER);
display->setFont(ArialMT_Plain_16); display->setFont(ArialMT_Plain_16);
if (bed != "0") { if (bed != "0") {
display->drawString(64 + x, 0 + y, "Bed / Tool Temp"); display->drawString(29 + x, 0 + y, "Tool");
display->drawString(89 + x, 0 + y, "Bed");
} else { } else {
display->drawString(64 + x, 0 + y, "Tool Temp"); display->drawString(64 + x, 0 + y, "Tool Temp");
} }
@ -902,8 +940,8 @@ void drawScreen1(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int
display->setFont(ArialMT_Plain_24); display->setFont(ArialMT_Plain_24);
if (bed != "0") { if (bed != "0") {
display->setTextAlignment(TEXT_ALIGN_LEFT); display->setTextAlignment(TEXT_ALIGN_LEFT);
display->drawString(2 + x, 14 + y, bed + "°"); display->drawString(12 + x, 14 + y, tool + "°");
display->drawString(64 + x, 14 + y, tool + "°"); display->drawString(74 + x, 14 + y, bed + "°");
} else { } else {
display->setTextAlignment(TEXT_ALIGN_CENTER); display->setTextAlignment(TEXT_ALIGN_CENTER);
display->drawString(64 + x, 14 + y, tool + "°"); display->drawString(64 + x, 14 + y, tool + "°");
@ -949,8 +987,12 @@ void drawClock(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16
if (IS_24HOUR) { if (IS_24HOUR) {
displayTime = timeClient.getHours() + ":" + timeClient.getMinutes() + ":" + timeClient.getSeconds(); displayTime = timeClient.getHours() + ":" + timeClient.getMinutes() + ":" + timeClient.getSeconds();
} }
String displayName = PrinterHostName;
if (printerClient.getPrinterType() == "Repetier") {
displayName = printerClient.getPrinterName();
}
display->setFont(ArialMT_Plain_16); display->setFont(ArialMT_Plain_16);
display->drawString(64 + x, 0 + y, OctoPrintHostName); display->drawString(64 + x, 0 + y, displayName);
display->setFont(ArialMT_Plain_24); display->setFont(ArialMT_Plain_24);
display->drawString(64 + x, 17 + y, displayTime); display->drawString(64 + x, 17 + y, displayTime);
} }
@ -1042,12 +1084,16 @@ void drawClockHeaderOverlay(OLEDDisplay *display, OLEDDisplayUiState* state) {
display->setTextAlignment(TEXT_ALIGN_CENTER); display->setTextAlignment(TEXT_ALIGN_CENTER);
if (printerClient.isPSUoff()) { if (printerClient.isPSUoff()) {
display->drawString(64, 47, "psu off"); display->drawString(64, 47, "psu off");
} else if (printerClient.getState() == "Operational") {
display->drawString(64, 47, "online");
} else { } else {
display->drawString(64, 47, "offline"); display->drawString(64, 47, "offline");
} }
} else { } else {
if (printerClient.isPSUoff()) { if (printerClient.isPSUoff()) {
display->drawString(0, 47, "psu off"); display->drawString(0, 47, "psu off");
} else if (printerClient.getState() == "Operational") {
display->drawString(0, 47, "online");
} else { } else {
display->drawString(0, 47, "offline"); display->drawString(0, 47, "offline");
} }
@ -1092,12 +1138,13 @@ void writeSettings() {
} else { } else {
Serial.println("Saving settings now..."); Serial.println("Saving settings now...");
f.println("UtcOffset=" + String(UtcOffset)); f.println("UtcOffset=" + String(UtcOffset));
f.println("octoKey=" + OctoPrintApiKey); f.println("printerApiKey=" + PrinterApiKey);
f.println("octoHost=" + OctoPrintHostName); f.println("printerHostName=" + PrinterHostName);
f.println("octoServer=" + OctoPrintServer); f.println("printerServer=" + PrinterServer);
f.println("octoPort=" + String(OctoPrintPort)); f.println("printerPort=" + String(PrinterPort));
f.println("octoUser=" + OctoAuthUser); f.println("printerName=" + printerClient.getPrinterName());
f.println("octoPass=" + OctoAuthPass); f.println("printerAuthUser=" + PrinterAuthUser);
f.println("printerAuthPass=" + PrinterAuthPass);
f.println("refreshRate=" + String(minutesBetweenDataRefresh)); f.println("refreshRate=" + String(minutesBetweenDataRefresh));
f.println("themeColor=" + themeColor); f.println("themeColor=" + themeColor);
f.println("IS_BASIC_AUTH=" + String(IS_BASIC_AUTH)); f.println("IS_BASIC_AUTH=" + String(IS_BASIC_AUTH));
@ -1106,6 +1153,7 @@ void writeSettings() {
f.println("DISPLAYCLOCK=" + String(DISPLAYCLOCK)); f.println("DISPLAYCLOCK=" + String(DISPLAYCLOCK));
f.println("is24hour=" + String(IS_24HOUR)); f.println("is24hour=" + String(IS_24HOUR));
f.println("invertDisp=" + String(INVERT_DISPLAY)); f.println("invertDisp=" + String(INVERT_DISPLAY));
f.println("USE_FLASH=" + String(USE_FLASH));
f.println("isWeather=" + String(DISPLAYWEATHER)); f.println("isWeather=" + String(DISPLAYWEATHER));
f.println("weatherKey=" + WeatherApiKey); f.println("weatherKey=" + WeatherApiKey);
f.println("CityID=" + String(CityIDs[0])); f.println("CityID=" + String(CityIDs[0]));
@ -1114,7 +1162,7 @@ void writeSettings() {
f.println("hasPSU=" + String(HAS_PSU)); f.println("hasPSU=" + String(HAS_PSU));
} }
f.close(); f.close();
//readSettings(); readSettings();
timeClient.setUtcOffset(UtcOffset); timeClient.setUtcOffset(UtcOffset);
} }
@ -1133,34 +1181,40 @@ void readSettings() {
UtcOffset = line.substring(line.lastIndexOf("UtcOffset=") + 10).toFloat(); UtcOffset = line.substring(line.lastIndexOf("UtcOffset=") + 10).toFloat();
Serial.println("UtcOffset=" + String(UtcOffset)); Serial.println("UtcOffset=" + String(UtcOffset));
} }
if (line.indexOf("octoKey=") >= 0) { if (line.indexOf("printerApiKey=") >= 0) {
OctoPrintApiKey = line.substring(line.lastIndexOf("octoKey=") + 8); PrinterApiKey = line.substring(line.lastIndexOf("printerApiKey=") + 14);
OctoPrintApiKey.trim(); PrinterApiKey.trim();
Serial.println("OctoPrintApiKey=" + OctoPrintApiKey); Serial.println("PrinterApiKey=" + PrinterApiKey);
} }
if (line.indexOf("octoHost=") >= 0) { if (line.indexOf("printerHostName=") >= 0) {
OctoPrintHostName = line.substring(line.lastIndexOf("octoHost=") + 9); PrinterHostName = line.substring(line.lastIndexOf("printerHostName=") + 16);
OctoPrintHostName.trim(); PrinterHostName.trim();
Serial.println("OctoPrintHostName=" + OctoPrintHostName); Serial.println("PrinterHostName=" + PrinterHostName);
} }
if (line.indexOf("octoServer=") >= 0) { if (line.indexOf("printerServer=") >= 0) {
OctoPrintServer = line.substring(line.lastIndexOf("octoServer=") + 11); PrinterServer = line.substring(line.lastIndexOf("printerServer=") + 14);
OctoPrintServer.trim(); PrinterServer.trim();
Serial.println("OctoPrintServer=" + OctoPrintServer); Serial.println("PrinterServer=" + PrinterServer);
} }
if (line.indexOf("octoPort=") >= 0) { if (line.indexOf("printerPort=") >= 0) {
OctoPrintPort = line.substring(line.lastIndexOf("octoPort=") + 9).toInt(); PrinterPort = line.substring(line.lastIndexOf("printerPort=") + 12).toInt();
Serial.println("OctoPrintPort=" + String(OctoPrintPort)); Serial.println("PrinterPort=" + String(PrinterPort));
} }
if (line.indexOf("octoUser=") >= 0) { if (line.indexOf("printerName=") >= 0) {
OctoAuthUser = line.substring(line.lastIndexOf("octoUser=") + 9); String printer = line.substring(line.lastIndexOf("printerName=") + 12);
OctoAuthUser.trim(); printer.trim();
Serial.println("OctoAuthUser=" + OctoAuthUser); printerClient.setPrinterName(printer);
Serial.println("PrinterName=" + printerClient.getPrinterName());
} }
if (line.indexOf("octoPass=") >= 0) { if (line.indexOf("printerAuthUser=") >= 0) {
OctoAuthPass = line.substring(line.lastIndexOf("octoPass=") + 9); PrinterAuthUser = line.substring(line.lastIndexOf("printerAuthUser=") + 16);
OctoAuthPass.trim(); PrinterAuthUser.trim();
Serial.println("OctoAuthPass=" + OctoAuthPass); Serial.println("PrinterAuthUser=" + PrinterAuthUser);
}
if (line.indexOf("printerAuthPass=") >= 0) {
PrinterAuthPass = line.substring(line.lastIndexOf("printerAuthPass=") + 16);
PrinterAuthPass.trim();
Serial.println("PrinterAuthPass=" + PrinterAuthPass);
} }
if (line.indexOf("refreshRate=") >= 0) { if (line.indexOf("refreshRate=") >= 0) {
minutesBetweenDataRefresh = line.substring(line.lastIndexOf("refreshRate=") + 12).toInt(); minutesBetweenDataRefresh = line.substring(line.lastIndexOf("refreshRate=") + 12).toInt();
@ -1199,6 +1253,10 @@ void readSettings() {
INVERT_DISPLAY = line.substring(line.lastIndexOf("invertDisp=") + 11).toInt(); INVERT_DISPLAY = line.substring(line.lastIndexOf("invertDisp=") + 11).toInt();
Serial.println("INVERT_DISPLAY=" + String(INVERT_DISPLAY)); Serial.println("INVERT_DISPLAY=" + String(INVERT_DISPLAY));
} }
if(line.indexOf("USE_FLASH=") >= 0) {
USE_FLASH = line.substring(line.lastIndexOf("USE_FLASH=") + 10).toInt();
Serial.println("USE_FLASH=" + String(USE_FLASH));
}
if (line.indexOf("hasPSU=") >= 0) { if (line.indexOf("hasPSU=") >= 0) {
HAS_PSU = line.substring(line.lastIndexOf("hasPSU=") + 7).toInt(); HAS_PSU = line.substring(line.lastIndexOf("hasPSU=") + 7).toInt();
Serial.println("HAS_PSU=" + String(HAS_PSU)); Serial.println("HAS_PSU=" + String(HAS_PSU));
@ -1227,7 +1285,7 @@ void readSettings() {
} }
} }
fr.close(); fr.close();
printerClient.updateOctoPrintClient(OctoPrintApiKey, OctoPrintServer, OctoPrintPort, OctoAuthUser, OctoAuthPass, HAS_PSU); printerClient.updatePrintClient(PrinterApiKey, PrinterServer, PrinterPort, PrinterAuthUser, PrinterAuthPass, HAS_PSU);
weatherClient.updateWeatherApiKey(WeatherApiKey); weatherClient.updateWeatherApiKey(WeatherApiKey);
weatherClient.updateLanguage(WeatherLanguage); weatherClient.updateLanguage(WeatherLanguage);
weatherClient.setMetric(IS_METRIC); weatherClient.setMetric(IS_METRIC);
@ -1250,16 +1308,16 @@ void checkDisplay() {
if (!displayOn && DISPLAYCLOCK) { if (!displayOn && DISPLAYCLOCK) {
enableDisplay(true); enableDisplay(true);
} }
if (displayOn && !(printerClient.isOperational() || printerClient.isPrinting()) && !DISPLAYCLOCK) { if (displayOn && !printerClient.isPrinting() && !DISPLAYCLOCK) {
// Put Display to sleep // Put Display to sleep
display.clear(); display.clear();
display.display(); display.display();
display.setFont(ArialMT_Plain_16); display.setFont(ArialMT_Plain_16);
display.setTextAlignment(TEXT_ALIGN_CENTER); display.setTextAlignment(TEXT_ALIGN_CENTER);
display.setContrast(255); // default is 255 display.setContrast(255); // default is 255
//display.drawString(64, 5, "Printer Offline\nSleep Mode..."); display.drawString(64, 5, "Printer Offline\nSleep Mode...");
// display.display(); display.display();
//delay(5000); delay(5000);
enableDisplay(false); enableDisplay(false);
Serial.println("Printer is offline going down to sleep..."); Serial.println("Printer is offline going down to sleep...");
return; return;
@ -1279,7 +1337,7 @@ void checkDisplay() {
return; return;
} }
} else if (DISPLAYCLOCK) { } else if (DISPLAYCLOCK) {
if ((!printerClient.isOperational() || printerClient.isPSUoff()) && !isClockOn) { if ((!printerClient.isPrinting() || printerClient.isPSUoff()) && !isClockOn) {
Serial.println("Clock Mode is turned on."); Serial.println("Clock Mode is turned on.");
if (!DISPLAYWEATHER) { if (!DISPLAYWEATHER) {
ui.disableAutoTransition(); ui.disableAutoTransition();
@ -1293,7 +1351,7 @@ void checkDisplay() {
} }
ui.setOverlays(clockOverlay, numberOfOverlays); ui.setOverlays(clockOverlay, numberOfOverlays);
isClockOn = true; isClockOn = true;
} else if (printerClient.isOperational() && !printerClient.isPSUoff() && isClockOn) { } else if (printerClient.isPrinting() && !printerClient.isPSUoff() && isClockOn) {
Serial.println("Printer Monitor is active."); Serial.println("Printer Monitor is active.");
ui.setFrames(frames, numberOfFrames); ui.setFrames(frames, numberOfFrames);
ui.setOverlays(overlays, numberOfOverlays); ui.setOverlays(overlays, numberOfOverlays);