PCB lives now in its own git repo https://git.la10cy.net/DeltaLima/CanGrow-12V-PCB
131 lines
4.4 KiB
C
131 lines
4.4 KiB
C
/*
|
|
*
|
|
* include/CanGrow_Webserver.h - webserver header file
|
|
*
|
|
*
|
|
*
|
|
*/
|
|
|
|
/*
|
|
* include static files files
|
|
*/
|
|
#include "Webserver/File_cangrow_CSS.h"
|
|
#include "Webserver/File_cangrow_JS.h"
|
|
#include "Webserver/File_favicon_ico.h"
|
|
|
|
/*
|
|
* include webpages header files
|
|
*/
|
|
#include "Webserver/Header.h"
|
|
#include "Webserver/Footer.h"
|
|
#include "Webserver/Webserver_Common.h"
|
|
#include "Webserver/Page_404.h"
|
|
#include "Webserver/Page_root.h"
|
|
#include "Webserver/Page_wifi.h"
|
|
#include "Webserver/Page_system.h"
|
|
#include "Webserver/Page_grow.h"
|
|
|
|
/*
|
|
* include Api header files
|
|
*/
|
|
#include "Webserver/Api_sensor.h"
|
|
|
|
AsyncWebServer webserver(80);
|
|
// load requestLogger middleware
|
|
AsyncLoggingMiddleware requestLogger;
|
|
|
|
/*
|
|
* setup all the webhandlers
|
|
*/
|
|
void Webserver_Init() {
|
|
const static char LogLoc[] PROGMEM = "[Webserver]";
|
|
Log.notice(F("%s initializing" CR), LogLoc);
|
|
|
|
|
|
/* url handler definition */
|
|
webserver.on("/", HTTP_GET, WebPage_root);
|
|
webserver.on("/cangrow.css", HTTP_GET, WebFile_cangrow_CSS);
|
|
webserver.on("/cangrow.js", HTTP_GET, WebFile_cangrow_JS);
|
|
webserver.on("/favicon.ico", HTTP_GET, WebFile_favicon_ico);
|
|
|
|
webserver.on("/wifi/", HTTP_GET, WebPage_wifi);
|
|
webserver.on("/wifi/", HTTP_POST, WebPage_wifi);
|
|
webserver.on("/system/", HTTP_GET, WebPage_system);
|
|
webserver.on("/system/", HTTP_POST, WebPage_system);
|
|
|
|
webserver.on("/system/update", HTTP_GET, WebPage_system_update);
|
|
webserver.on("/system/update", HTTP_POST, WebPage_system_update, WebPage_system_update_ApplyUpdate);
|
|
|
|
webserver.on("/system/restart", HTTP_GET, WebPage_system_restart);
|
|
webserver.on("/system/restart", HTTP_POST, WebPage_system_restart);
|
|
|
|
webserver.on("/system/wipe", HTTP_GET, WebPage_system_wipe);
|
|
webserver.on("/system/wipe", HTTP_POST, WebPage_system_wipe);
|
|
|
|
webserver.on("/system/output/", HTTP_GET, WebPage_system_output);
|
|
webserver.on("/system/output/", HTTP_POST, WebPage_system_output);
|
|
|
|
webserver.on("/system/output/add", HTTP_GET, WebPage_system_output_add);
|
|
webserver.on("/system/output/add", HTTP_POST, WebPage_system_output_add);
|
|
|
|
webserver.on("/system/sensor/", HTTP_GET, WebPage_system_sensor);
|
|
webserver.on("/system/sensor/", HTTP_POST, WebPage_system_sensor);
|
|
|
|
webserver.on("/system/sensor/add", HTTP_GET, WebPage_system_sensor_add);
|
|
webserver.on("/system/sensor/add", HTTP_POST, WebPage_system_sensor_add);
|
|
|
|
webserver.on("/system/sensor/calibrate", HTTP_GET, WebPage_system_sensor_calibrate);
|
|
webserver.on("/system/sensor/calibrate", HTTP_POST, WebPage_system_sensor_calibrate);
|
|
|
|
|
|
/* grow */
|
|
webserver.on("/grow/", HTTP_GET, WebPage_grow);
|
|
webserver.on("/grow/", HTTP_POST, WebPage_grow);
|
|
webserver.on("/grow/light/", HTTP_GET, WebPage_grow_light);
|
|
webserver.on("/grow/light/", HTTP_POST, WebPage_grow_light);
|
|
webserver.on("/grow/air/", HTTP_GET, WebPage_grow_air);
|
|
webserver.on("/grow/air/", HTTP_POST, WebPage_grow_air);
|
|
webserver.on("/grow/water/", HTTP_GET, WebPage_grow_water);
|
|
webserver.on("/grow/water/", HTTP_POST, WebPage_grow_water);
|
|
webserver.on("/grow/dashboard/", HTTP_GET, WebPage_grow_dashboard);
|
|
webserver.on("/grow/dashboard/", HTTP_POST, WebPage_grow_dashboard);
|
|
/* api */
|
|
//webserver.on("/api/sensor", HTTP_GET, Api_sensor_data);
|
|
webserver.on("/api/sensor/", HTTP_GET, Api_sensor_data);
|
|
webserver.on("/api/sensor/raw", HTTP_GET, Api_sensor_data_raw);
|
|
webserver.on("/api/sensor/driver", HTTP_GET, Api_sensor_driver);
|
|
|
|
|
|
/* DEBUG only - offer config for direct download */
|
|
#ifndef DEBUG
|
|
webserver.serveStatic(CANGROW_CFG, LittleFS, CANGROW_CFG);
|
|
#endif
|
|
|
|
/* 404 Error page */
|
|
webserver.onNotFound(WebserverNotFound);
|
|
|
|
|
|
// this activates the middleware
|
|
if(config.system.httpLogSerial == true) {
|
|
requestLogger.setOutput(Serial);
|
|
Log.notice(F("%s serial logging: enabled" CR), LogLoc);
|
|
webserver.addMiddleware(&requestLogger);
|
|
} else {
|
|
Log.notice(F("%s serial logging: disabled" CR), LogLoc);
|
|
}
|
|
|
|
|
|
// Workaround, see comment at
|
|
// https://github.com/mathieucarbou/ESPAsyncWebServer/blob/main/docs/index.md#scanning-for-available-wifi-networks
|
|
// call the network scan once, so there are some values at the first call
|
|
// of the wifi settings page. otherwise the first call of the wifi scan would return
|
|
// an empty list of networks
|
|
Log.notice(F("%s call [wifi:ScanNetworks] to workaround empty scan results bug" CR), LogLoc);
|
|
|
|
WebPage_wifi_ScanNetworks();
|
|
|
|
webserver.begin();
|
|
Log.notice(F("%s Ready to serve" CR), LogLoc);
|
|
|
|
}
|
|
|