first seperation of web server
This commit is contained in:
parent
c5fc4ba15e
commit
6f74811f39
3 changed files with 99 additions and 31 deletions
|
@ -28,6 +28,9 @@
|
||||||
#ifdef WEB_OTA_UPDATE
|
#ifdef WEB_OTA_UPDATE
|
||||||
#include <AsyncElegantOTA.h>
|
#include <AsyncElegantOTA.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "mainwebserver.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef BUZZER
|
#ifdef BUZZER
|
||||||
|
|
95
include/mainwebserver.h
Normal file
95
include/mainwebserver.h
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
#ifndef mainwebserver_h
|
||||||
|
#define mainwebserver_h
|
||||||
|
|
||||||
|
#include "Arduino.h"
|
||||||
|
#include "stdlib_noniso.h"
|
||||||
|
#include "WiFi.h"
|
||||||
|
#include "AsyncTCP.h"
|
||||||
|
#include "Update.h"
|
||||||
|
#include "esp_int_wdt.h"
|
||||||
|
#include "esp_task_wdt.h"
|
||||||
|
#include "ESPAsyncWebServer.h"
|
||||||
|
#include "SPIFFS.h"
|
||||||
|
#include "hardware.h"
|
||||||
|
|
||||||
|
class MainWebServerClass{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
void begin(AsyncWebServer *server, const char* username = "", const char* password = ""){
|
||||||
|
_server = server;
|
||||||
|
|
||||||
|
if(strlen(username) > 0){
|
||||||
|
_authRequired = true;
|
||||||
|
_username = username;
|
||||||
|
_password = password;
|
||||||
|
}else{
|
||||||
|
_authRequired = false;
|
||||||
|
_username = "";
|
||||||
|
_password = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
_server->on("/test/identity", HTTP_GET, [&](AsyncWebServerRequest *request){
|
||||||
|
if(_authRequired){
|
||||||
|
if(!request->authenticate(_username.c_str(), _password.c_str())){
|
||||||
|
return request->requestAuthentication();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
request->send(200, "application/json");
|
||||||
|
});
|
||||||
|
|
||||||
|
_server->on("/", HTTP_GET, [&](AsyncWebServerRequest *request){
|
||||||
|
if(_authRequired){
|
||||||
|
if(!request->authenticate(_username.c_str(), _password.c_str())){
|
||||||
|
return request->requestAuthentication();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
request->send(SPIFFS, "/index.html", String(), false, processor);
|
||||||
|
});
|
||||||
|
|
||||||
|
_server->onNotFound([&](AsyncWebServerRequest *request){
|
||||||
|
request->send(200, "application/json", "{\"msg\":\"The content you are looking for was not found\"}");
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// deprecated, keeping for backward compatibility
|
||||||
|
void loop() {
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
AsyncWebServer *_server;
|
||||||
|
String _username = "";
|
||||||
|
String _password = "";
|
||||||
|
bool _authRequired = false;
|
||||||
|
|
||||||
|
static String outputState(int output){
|
||||||
|
if(digitalRead(output)){
|
||||||
|
return "checked";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Replaces placeholder with button section in your web page
|
||||||
|
static String processor(const String& var){
|
||||||
|
//Serial.println(var);
|
||||||
|
if(var == "BUTTONPLACEHOLDER"){
|
||||||
|
String buttons = "";
|
||||||
|
|
||||||
|
#ifdef RELAY1
|
||||||
|
buttons += "<h4>Output - Relay 1 </h4><label class=\"switch\"><input type=\"checkbox\" onchange=\"toggleCheckbox(this)\" id=\"relay1\" " + MainWebServerClass::outputState(RELAY1_PIN) + "><span class=\"slider\"></span></label>";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return buttons;
|
||||||
|
}
|
||||||
|
return String();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
MainWebServerClass MainWebServer;
|
||||||
|
#endif
|
32
src/main.cpp
32
src/main.cpp
|
@ -96,29 +96,7 @@ void WiFiGotIP(WiFiEvent_t event, WiFiEventInfo_t info){
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef WEB_SERVER
|
#ifdef WEB_SERVER
|
||||||
String outputState(int output){
|
|
||||||
if(digitalRead(output)){
|
|
||||||
return "checked";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Replaces placeholder with button section in your web page
|
|
||||||
String processor(const String& var){
|
|
||||||
//Serial.println(var);
|
|
||||||
if(var == "BUTTONPLACEHOLDER"){
|
|
||||||
String buttons = "";
|
|
||||||
|
|
||||||
#ifdef RELAY1
|
|
||||||
buttons += "<h4>Output - Relay 1 </h4><label class=\"switch\"><input type=\"checkbox\" onchange=\"toggleCheckbox(this)\" id=\"relay1\" " + outputState(RELAY1_PIN) + "><span class=\"slider\"></span></label>";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return buttons;
|
|
||||||
}
|
|
||||||
return String();
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef LOCAL_ACL
|
#ifdef LOCAL_ACL
|
||||||
#ifdef LOCAL_ACL_API
|
#ifdef LOCAL_ACL_API
|
||||||
|
@ -331,15 +309,6 @@ void setup() {
|
||||||
|
|
||||||
#ifdef WEB_SERVER
|
#ifdef WEB_SERVER
|
||||||
// Route for root / web page
|
// Route for root / web page
|
||||||
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
|
|
||||||
if(!request->authenticate(http_username, http_password))
|
|
||||||
return request->requestAuthentication();
|
|
||||||
request->send(SPIFFS, "/index.html", String(), false, processor);
|
|
||||||
});
|
|
||||||
|
|
||||||
server.onNotFound([](AsyncWebServerRequest *request){
|
|
||||||
request->send(200, "application/json", "{\"msg\":\"The content you are looking for was not found\"}");
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef RELAY1
|
#ifdef RELAY1
|
||||||
|
@ -433,6 +402,7 @@ void setup() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
MainWebServer.begin(&server, http_username, http_password);
|
||||||
|
|
||||||
|
|
||||||
#ifdef LOCAL_ACL
|
#ifdef LOCAL_ACL
|
||||||
|
|
Loading…
Reference in a new issue