diff --git a/src/Configuration.h b/src/Configuration.h index 73cf9ab..1f9cd79 100644 --- a/src/Configuration.h +++ b/src/Configuration.h @@ -10,8 +10,8 @@ /** * Basic software settings */ -#define VERSION "4.0" -#define HOSTNAME "PrintMon-" +#define VERSION "1.0" +#define HOSTNAME "PrintBuddy-" #define CONFIG "/conf.txt" // true = Enables debug message on terminal | false = disable all debug messages #define DEBUG_MODE_ENABLE true diff --git a/src/Display/OledDisplay.cpp b/src/Display/OledDisplay.cpp index 3210010..ca82eb5 100644 --- a/src/Display/OledDisplay.cpp +++ b/src/Display/OledDisplay.cpp @@ -58,11 +58,11 @@ void OledDisplay::showBootScreen() { this->oledDisplay->setTextAlignment(TEXT_ALIGN_CENTER); this->oledDisplay->setContrast(255); // default is 255 this->oledDisplay->setFont(ArialMT_Plain_16); - this->oledDisplay->drawString(64, 1, "Printer Monitor"); + this->oledDisplay->drawString(64, 1, "PrintBuddy"); this->oledDisplay->setFont(ArialMT_Plain_10); this->oledDisplay->drawString(64, 18, "for " + this->globalDataController->getPrinterClient()->getPrinterType()); this->oledDisplay->setFont(ArialMT_Plain_16); - this->oledDisplay->drawString(64, 30, "By Qrome"); + this->oledDisplay->drawString(64, 30, "By XXXXXX"); this->oledDisplay->drawString(64, 46, "V" + this->globalDataController->getVersion()); this->oledDisplay->display(); } @@ -158,7 +158,7 @@ void OledDisplay::checkDisplay() { this->ui->setOverlays(clockOverlay, 1); this->isClockOn = true; } else if (printerClient->isPrinting() && !printerClient->isPSUoff() && this->isClockOn) { - this->debugController->printLn("Printer Monitor is active."); + this->debugController->printLn("PrintBuddy is active."); this->ui->setFrames(frames, 3); this->ui->setOverlays(overlays, 1); this->ui->enableAutoTransition(); diff --git a/src/Network/WebServer.cpp b/src/Network/WebServer.cpp index 29c330b..9223594 100644 --- a/src/Network/WebServer.cpp +++ b/src/Network/WebServer.cpp @@ -1,12 +1,6 @@ #include "WebServer.h" -static const char WEB_ACTIONS[] PROGMEM = " Home" - " Configure" - " Weather" - " Reset Settings" - " Forget WiFi" - " Firmware Update" - " About"; + String CHANGE_FORM = ""; // moved to config to make it dynamic @@ -111,8 +105,10 @@ void WebServer::setup() { this->server->on("/updateweatherconfig", []() { obj->handleUpdateWeather(); }); this->server->on("/configure", []() { obj->handleConfigure(); }); this->server->on("/configureweather", []() { obj->handleWeatherConfigure(); }); + this->server->on("/update", HTTP_GET, []() { obj->handleUpdatePage(); }); this->server->onNotFound([]() { obj->redirectHome(); }); this->serverUpdater->setup(this->server, "/update", this->globalDataController->getWebserverUsername(), this->globalDataController->getWebserverPassword()); + // Start the server this->server->begin(); @@ -146,16 +142,10 @@ void WebServer::redirectHome() { } void WebServer::displayPrinterStatus() { - this->globalDataController->ledOnOff(true); BasePrinterClient *printerClient = this->globalDataController->getPrinterClient(); String html = ""; - this->server->sendHeader("Cache-Control", "no-cache, no-store"); - this->server->sendHeader("Pragma", "no-cache"); - this->server->sendHeader("Expires", "-1"); - this->server->setContentLength(CONTENT_LENGTH_UNKNOWN); - this->server->send(200, "text/html", ""); - this->server->sendContent(String(getHeader(true))); + WebserverMemoryVariables::sendHeader(this->server, this->globalDataController, "Status", "Monitor", true); String displayTime = this->globalDataController->getTimeClient()->getAmPmHours() + ":" + @@ -259,10 +249,7 @@ void WebServer::displayPrinterStatus() { html = ""; // fresh start } - this->server->sendContent(String(getFooter())); - this->server->sendContent(""); - this->server->client().stop(); - this->globalDataController->ledOnOff(false); + WebserverMemoryVariables::sendFooter(this->server, this->globalDataController); } void WebServer::handleSystemReset() { @@ -383,51 +370,76 @@ void WebServer::handleConfigure() { if (!this->authentication()) { return this->server->requestAuthentication(); } - this->globalDataController->ledOnOff(true); BasePrinterClient *printerClient = this->globalDataController->getPrinterClient(); String html = ""; + + WebserverMemoryVariables::sendHeader(this->server, this->globalDataController, "Configure", "Station"); - this->server->sendHeader("Cache-Control", "no-cache, no-store"); - this->server->sendHeader("Pragma", "no-cache"); - this->server->sendHeader("Expires", "-1"); - this->server->setContentLength(CONTENT_LENGTH_UNKNOWN); - this->server->send(200, "text/html", ""); - html = this->getHeader(); + // send javascript functions for repetier server test + html = ""; this->server->sendContent(html); - // send javascript functions - if (printerClient->getPrinterType() == "Repetier") { - html = ""; - - this->server->sendContent(html); - } - else if (printerClient->getPrinterType() == "Klipper") { - html = ""; - this->server->sendContent(html); - } - else { - html = ""; + // send javascript functions for klipper test + html = ""; + this->server->sendContent(html); + + // send javascript functions for octoprint test + html = ""; + this->server->sendContent(html); + + // Let us create a form for all printers + html = "

Station Config:

"; + html += "
"; + this->server->sendContent(html); - String form = "

Station Config:

"; - + String form = ""; if (printerClient->getPrinterType() != "Klipper") { form += "

" "

"; @@ -508,28 +520,36 @@ void WebServer::handleConfigure() { this->server->sendContent(form); - html = this->getFooter(); - this->server->sendContent(html); - this->server->sendContent(""); - this->server->client().stop(); - this->globalDataController->ledOnOff(false); + WebserverMemoryVariables::sendFooter(this->server, this->globalDataController); } + + + + + + + + + + + + + + + +/** + * @brief Send weather configuration page to client + */ void WebServer::handleWeatherConfigure() { if (!this->authentication()) { return this->server->requestAuthentication(); } - this->globalDataController->ledOnOff(true); + WebserverMemoryVariables::sendHeader(this->server, this->globalDataController, "Configure", "Weather"); + String html = ""; - this->server->sendHeader("Cache-Control", "no-cache, no-store"); - this->server->sendHeader("Pragma", "no-cache"); - this->server->sendHeader("Expires", "-1"); - this->server->setContentLength(CONTENT_LENGTH_UNKNOWN); - this->server->send(200, "text/html", ""); - - html = getHeader(); - this->server->sendContent(html); + String form = FPSTR(WEATHER_FORM); String isWeatherChecked = ""; @@ -550,61 +570,18 @@ void WebServer::handleWeatherConfigure() { form.replace("%LANGUAGEOPTIONS%", options); this->server->sendContent(form); - html = this->getFooter(); - this->server->sendContent(html); - this->server->sendContent(""); - this->server->client().stop(); - this->globalDataController->ledOnOff(false); + + WebserverMemoryVariables::sendFooter(this->server, this->globalDataController); } -String WebServer::getHeader() { - return this->getHeader(false); -} - -String WebServer::getHeader(boolean refresh) { - String menu = FPSTR(WEB_ACTIONS); - - String html = ""; - html += "Printer Monitor"; - html += ""; - html += ""; - if (refresh) { - html += ""; +/** + * @brief Send firmware/filesystem update page to client + */ +void WebServer::handleUpdatePage() { + if (!this->authentication()) { + return this->server->requestAuthentication(); } - html += ""; - html += ""; - html += ""; - html += ""; - html += ""; - html += "

Printer Monitor

"; - html += ""; - html += "
"; - return html; + WebserverMemoryVariables::sendHeader(this->server, this->globalDataController, "Firmware", "Update"); + WebserverMemoryVariables::sendUpdateForm(this->server, this->globalDataController); + WebserverMemoryVariables::sendFooter(this->server, this->globalDataController); } - -String WebServer::getFooter() { - int8_t rssi = this->globalDataController->getWifiQuality(); - Serial.print("Signal Strength (RSSI): "); - Serial.print(rssi); - this->debugController->printLn("%"); - String html = "


"; - html += "
"; - html += ""; - html += ""; - return html; -} \ No newline at end of file diff --git a/src/Network/WebServer.h b/src/Network/WebServer.h index 4a35e88..97f02e1 100644 --- a/src/Network/WebServer.h +++ b/src/Network/WebServer.h @@ -1,11 +1,11 @@ #pragma once #include #include -#include #include #include #include #include "../Global/GlobalDataController.h" +#include "WebserverMemoryVariables.h" class WebServer { private: @@ -29,7 +29,5 @@ public: void handleUpdateWeather(); void handleConfigure(); void handleWeatherConfigure(); - String getHeader(); - String getHeader(boolean refresh); - String getFooter(); + void handleUpdatePage(); }; diff --git a/src/Network/WebserverMemoryVariables.cpp b/src/Network/WebserverMemoryVariables.cpp new file mode 100644 index 0000000..8e7be17 --- /dev/null +++ b/src/Network/WebserverMemoryVariables.cpp @@ -0,0 +1,111 @@ +#include "WebserverMemoryVariables.h" + +/** + * @brief Send out header for webpage + * @param server Send out instancce + * @param globalDataController Access to global data + */ +void WebserverMemoryVariables::sendHeader(ESP8266WebServer *server, GlobalDataController *globalDataController, String pageLabel, String pageTitle) { + WebserverMemoryVariables::sendHeader(server, globalDataController, pageLabel, pageTitle, false); +} + +/** + * @brief Send out header for webpage + * @param server Send out instancce + * @param globalDataController Access to global data + * @param pageLabel Title label + * @param pageTitle Title + * @param refresh if true, auto refresh in header is set + */ +void WebserverMemoryVariables::sendHeader( + ESP8266WebServer *server, + GlobalDataController *globalDataController, + String pageLabel, + String pageTitle, + boolean refresh +) { + globalDataController->ledOnOff(true); + int8_t rssi = globalDataController->getWifiQuality(); + + server->sendHeader("Cache-Control", "no-cache, no-store"); + server->sendHeader("Pragma", "no-cache"); + server->sendHeader("Expires", "-1"); + server->setContentLength(CONTENT_LENGTH_UNKNOWN); + server->send(200, "text/html", ""); + + server->sendContent("" + "PrintBuddy" + "" + "" + ); + if (refresh) { + server->sendContent(""); + } + server->sendContent("" + "" + "" + "" + "" + "" + "
" + "" + ); + server->sendContent("PrintBuddy V" + String(VERSION)); + server->sendContent("" + "" + "
" + "" + "" + "
" + "" + "" + "
" + "" + "
" + "
"); +} + +/** + * @brief send out footer content for webpage + * @param server Send out instancce + * @param globalDataController Access to global data + */ +void WebserverMemoryVariables::sendFooter(ESP8266WebServer *server, GlobalDataController *globalDataController) { + server->sendContent("


"); + server->sendContent(""); + server->sendContent(""); + server->client().stop(); + globalDataController->ledOnOff(false); +} + +/** + * @brief Send out upload form for updates + * @param server Send out instancce + * @param globalDataController Access to global data + */ +void WebserverMemoryVariables::sendUpdateForm(ESP8266WebServer *server, GlobalDataController *globalDataController) { + server->sendContent(FPSTR(UPDATE_FORM)); +} \ No newline at end of file diff --git a/src/Network/WebserverMemoryVariables.h b/src/Network/WebserverMemoryVariables.h new file mode 100644 index 0000000..1f543a5 --- /dev/null +++ b/src/Network/WebserverMemoryVariables.h @@ -0,0 +1,69 @@ +#pragma once +#include +#include +#include +#include "../Global/GlobalDataController.h" + +/** + * Webpage side menu right for main items + */ +static const char MENUE_ITEMS[] PROGMEM = + "
  • Home
  • " + "
  • Configure
  • " + "
  • Weather
  • " + "
  • Reset Settings
  • " + "
  • Forget WiFi
  • " + "
  • Firmware Update
  • " + "
  • About
  • "; + +/** + * Controls for update firmware/filesystem + */ +static const char UPDATE_FORM[] PROGMEM = "
    " + "" + "
    " + "Update Firmware" + "

    Select the firmware you want to upload

    " + "
    " + "" + "
    " + "
    " + "
    " + "" + "" + "
    " + "
    " + "
    " + "
    " + "Update FileSystem" + "

    Select the filesystem you want to upload

    " + "
    " + "" + "
    " + "
    " + "
    " + "" + "
    " + "
    "; + +/** + * @brief Class to generate HTML content from Memory + */ +class WebserverMemoryVariables { +public: + static void sendHeader(ESP8266WebServer *server, GlobalDataController *globalDataController, String pageLabel, String pageTitle); + static void sendHeader(ESP8266WebServer *server, GlobalDataController *globalDataController, String pageLabel, String pageTitle, boolean refresh); + static void sendFooter(ESP8266WebServer *server, GlobalDataController *globalDataController); + + static void sendUpdateForm(ESP8266WebServer *server, GlobalDataController *globalDataController); +};