160 lines
6.9 KiB
C++
160 lines
6.9 KiB
C++
String logfile = "";
|
|
//Webserver
|
|
//###################################################################################
|
|
|
|
void setup_webserver(){
|
|
httpUpdater.setup(&server, "Licht", "Wecker");
|
|
|
|
server.on("/log", []() { //Define the handling function for the path
|
|
|
|
server.send(200, "text/plain", logfile);
|
|
|
|
});
|
|
|
|
server.on("/", handleRootPath); //Associate the handler function to the path
|
|
server.begin(); //Start the server
|
|
}
|
|
|
|
void handle_webserver(){
|
|
server.handleClient(); //Handling of incoming requests
|
|
}
|
|
|
|
|
|
//Layout
|
|
//###################################################################################
|
|
|
|
String Meta = "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1\"><meta charset=\"UTF-8\">";
|
|
String CSS = "<style>.card {box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);background-color: white;transition: 0.3s;margin: 0.2rem;padding: 0.4rem;padding-top: 0.5rem;display: inline-block;display: -webkit-inline-block;text-align:center;flex: 1;-webkit-flex: 1 1 250px;}.cardcontainer {box-sizing: border-box;display:flex;flex-wrap: wrap;display: -webkit-flex;-webkit-flex-wrap: wrap;overflow:auto;}#footer {border-top: 3px solid darkblue;-webkit-justify-content: space-around;display: absolute;justify-content: space-around;}</style>";
|
|
String Header = "<!DOCTYPE html><html><head>" + Meta + CSS + "<title>Lichtwecker</title></head><body style=\"text-align:left;margin: 0px;padding: 0px;\"><div id=\"header\" style=\"background-color: blue;margin: 0px;padding: 0px;color: white;border: 0.2em solid blue;text-align: center;\"><h1 style=\"margin:0px;padding:0px\">Licht Wecker</h1></div><div id=\"content\" style=\"font-size:1.2em;margin:0.5em;\" class=\"cardcontainer\">";
|
|
String Footer = "</div><br><br><div id=\"footer\">Not for Sale, Prototyp by <a href=\"http://christian.mittring-mering.de/\">CHM</a>, Hardware: " + Hardware + ", Software: "+ Software +"</div></body></html> ";
|
|
String card_start = "<div class=\"card\">";
|
|
String card_end = "</div>";
|
|
|
|
void handleRootPath() { //Handler for the rooth path
|
|
handleArgs();
|
|
}
|
|
|
|
//############################################################
|
|
//WebPage Args
|
|
void handleArgs(){
|
|
for (int i = 0; i < server.args(); i++) {
|
|
//write_log(server.argName(i) +" : " +server.arg(i));
|
|
if(server.argName(i) == "ntp"){
|
|
if(server.arg(i) == "true"){
|
|
if (ntp_update != true){
|
|
ntp_update = true;
|
|
write_eeprom();
|
|
}
|
|
}
|
|
else if (server.arg(i) == "false"){
|
|
if (ntp_update != false){
|
|
ntp_update = false;
|
|
write_eeprom();
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
else if (server.argName(i) == "ntp_server"){
|
|
if (server.arg(i) != ""){
|
|
ntp_server = server.arg(i);
|
|
write_eeprom();
|
|
}
|
|
break;
|
|
}
|
|
else if(server.argName(i) == "wakeup_time"){
|
|
if (server.arg(i) != ""){
|
|
wakeup_time = server.arg(i).toInt();
|
|
write_eeprom();
|
|
}
|
|
break;
|
|
}
|
|
else if(server.argName(i) == "a1"){
|
|
if(server.arg(i) == "true"){
|
|
Clock.turnOnAlarm(1);
|
|
}
|
|
else if (server.arg(i) == "false"){
|
|
Clock.turnOffAlarm(1);
|
|
}
|
|
break;
|
|
}
|
|
else if(server.argName(i) == "a2"){
|
|
if(server.arg(i) == "true"){
|
|
Clock.turnOnAlarm(2);
|
|
}
|
|
else if (server.arg(i) == "false"){
|
|
Clock.turnOffAlarm(2);
|
|
}
|
|
break;
|
|
}
|
|
else if(server.argName(i) == "al1h" && server.argName(i +1) == "al1m"){
|
|
al1h = server.arg(i).toInt();
|
|
al1m = server.arg(i+1).toInt();
|
|
set_alarm1();
|
|
break;
|
|
}
|
|
else if(server.argName(i) == "al2h" && server.argName(i +1) == "al2m"){
|
|
al2h = server.arg(i).toInt();
|
|
al2m = server.arg(i+1).toInt();
|
|
set_alarm2();
|
|
break;
|
|
}
|
|
else if(server.argName(i) == "reset" && server.arg(i) == "true"){
|
|
print_reset();
|
|
ESP.restart();
|
|
break;
|
|
}
|
|
else if(server.argName(i) == "factory_reset" && server.arg(i) == "true"){
|
|
reset_eeprom();
|
|
print_reset();
|
|
delay(1000);
|
|
ESP.restart();
|
|
break;
|
|
}
|
|
}
|
|
print_website();
|
|
}
|
|
|
|
|
|
//Webpage
|
|
//###################################################################################
|
|
|
|
void print_website(){
|
|
bool A1 = Clock.checkAlarmEnabled(1);
|
|
bool A2 = Clock.checkAlarmEnabled(2);
|
|
String Alarm1 = "<b>Alarm 1:</b> <form action=\"/\" methode=\"get\"><input type=\"number\" name=\"al1h\" value=\"" + String(al1h) + "\">:<input type=\"number\" name=\"al1m\" value=\"" + String(al1m) + "\"><input type=\"submit\" value=\"Speichern\"></form> Sommerzeit: " + getBoolString(summer) + "<br>Aktiv: " + getBoolString(A1) + "<br><a href=\"?a1=true\">Aktivieren</a> " + " <a href=\"?a1=false\">Deaktivieren</a>";
|
|
String Alarm2 = "<b>Alarm 2:</b> <form action=\"/\" methode=\"get\"><input type=\"number\" name=\"al2h\" value=\"" + String(al2h) + "\">:<input type=\"number\" name=\"al2m\" value=\"" + String(al2m) + "\"><input type=\"submit\" value=\"Speichern\"></form> Sommerzeit: " + getBoolString(summer) + "<br>Aktiv: " + getBoolString(A2) + "<br><a href=\"?a2=true\">Aktivieren</a> " + " <a href=\"?a2=false\">Deaktivieren</a>";
|
|
String Weckzeit = "<b>Weckdauer (Minuten):</b> <form action=\"/\" methode=\"get\"><input type=\"number\" name=\"wakeup_time\" value=\"" + String(wakeup_time) + "\"><input type=\"submit\" value=\"Speichern\"></form>";
|
|
String Alarm = "<h3>Alarm</h3>" + Alarm1 + "<br><br>" + Alarm2 + "<br><br>" + Weckzeit;
|
|
String Zeit = "<br><h3>Zeit</h3>" + String(h) + ":" + String(m) + ":" + String(s) + " - " + String(d) + "." + String(M) + "." + String(y) + " | DST: " + String(summertime_EU(y,M,d,h,1));
|
|
String NTP = "<br><h3>NTP</h3><b>Server:</b> <form action=\"/\" methode=\"get\"><input type=\"text\" name=\"ntp_server\" value=\"" + String(ntp_server) + "\"><input type=\"submit\" value=\"Speichern\"></form><br>stündliches Zeit Update: " + getBoolString(ntp_update) + "<br><a href=\"?ntp=true\">Aktivieren</a> " + " <a href=\"?ntp=false\">Deaktivieren</a>";
|
|
String Reboot = "<br><h3>System:</h3><a href=\"?reset=true\">Neustart</a><br><br><a href=\"update\">Software Update Modus</a><br><br><a href=\"?factory_reset=true\">Werkseinstellungen</a>";
|
|
String Body = card_start + Alarm + card_end + card_start + Zeit + card_end + card_start + NTP + card_end + card_start + Reboot + card_end;
|
|
server.send(200, "text/html", Header + Body + Footer);
|
|
}
|
|
|
|
void print_reset(){
|
|
String Body = "<div class=\"card\">Neustart... <a href=\"/\">Neu laden</a></div>";
|
|
server.send(200, "text/html", Header + Body + Footer);
|
|
delay(500);
|
|
}
|
|
|
|
//Helpers
|
|
//####################################################################################
|
|
String getBoolString(bool value){
|
|
if(value)
|
|
{
|
|
return "Ja";
|
|
}
|
|
return "Nein";
|
|
}
|
|
|
|
|
|
void write_log(String text){
|
|
Serial.println(text);
|
|
logfile = logfile + String(text) + "\r\n";
|
|
if (logfile.length() > 140000) {
|
|
logfile = logfile.substring((logfile.length()-100000));
|
|
}
|
|
}
|
|
|