Compare commits
3 Commits
0.06
...
caa6f3a833
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
caa6f3a833 | ||
|
|
a3959376e3 | ||
|
|
05cdb44ab5 |
@@ -3,7 +3,7 @@ void run_alarm(long currentMillis){
|
||||
{
|
||||
write_log("Start Alarm");
|
||||
start_wake_light(currentMillis);
|
||||
setAlarmTimer(15);
|
||||
setAlarmTimer(wakeup_time + 5);
|
||||
}
|
||||
else{
|
||||
if (run_wake_up(currentMillis)){
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
#include <EEPROM.h>
|
||||
|
||||
String Hardware = "0.10";
|
||||
String Software = "0.06";
|
||||
String Software = "0.08";
|
||||
String ntp_server = "ntp2.uni-augsburg.de";
|
||||
|
||||
// Set web server port number to 80
|
||||
@@ -57,6 +57,7 @@ const int outBeep = 9;
|
||||
bool wifi_connected = false;
|
||||
|
||||
bool ntp_update = true;
|
||||
int wakeup_time = 10;
|
||||
|
||||
//For Summertime change notification (change alarmtime) this should be saved in the EEPROM!
|
||||
bool summer = false;
|
||||
|
||||
@@ -252,7 +252,7 @@ void set_clock(){
|
||||
//Clock.setDoW(DoW);
|
||||
if (summertime_EU(y,M,d,h,1))
|
||||
{
|
||||
Clock.setHour(h-1);
|
||||
Clock.setHour(h-1);
|
||||
}
|
||||
else{
|
||||
Clock.setHour(h);
|
||||
|
||||
@@ -5,15 +5,21 @@ uint addr = 0;
|
||||
struct {
|
||||
bool summertime = false;
|
||||
bool ntp_update = true;
|
||||
int wakeup_time = 10;
|
||||
char ntp_server[22] = "ntp2.uni-augsburg.de";
|
||||
} data;
|
||||
|
||||
void write_eeprom(){
|
||||
EEPROM.begin(512);
|
||||
EEPROM.begin(1024);
|
||||
// load EEPROM data into RAM, see it
|
||||
data.summertime = summer;
|
||||
data.ntp_update = ntp_update;
|
||||
data.wakeup_time = wakeup_time;
|
||||
ntp_server.toCharArray(data.ntp_server,22);
|
||||
write_log("Writing to EEPROM: "+String(data.summertime));
|
||||
write_log("Writing to EEPROM: "+String(data.ntp_update));
|
||||
write_log("Writing to EEPROM: "+String(data.ntp_update));
|
||||
write_log("Writing to EEPROM: "+String(data.wakeup_time));
|
||||
write_log("Writing to EEPROM: "+String(data.ntp_server));
|
||||
// replace values in EEPROM
|
||||
EEPROM.put(addr,data);
|
||||
EEPROM.commit();
|
||||
@@ -21,12 +27,25 @@ void write_eeprom(){
|
||||
}
|
||||
|
||||
bool get_eeprom(){
|
||||
EEPROM.begin(512);
|
||||
EEPROM.begin(1024);
|
||||
EEPROM.get(addr,data);
|
||||
write_log("Found: "+String(data.summertime));
|
||||
write_log("Found: "+String(data.ntp_update));
|
||||
write_log("Read: "+String(data.summertime));
|
||||
write_log("Read: "+String(data.ntp_update));
|
||||
write_log("Read: "+String(data.wakeup_time));
|
||||
write_log("Read: "+String(data.ntp_update));
|
||||
EEPROM.end();
|
||||
summer = data.summertime;
|
||||
ntp_update = data.ntp_update;
|
||||
wakeup_time = data.wakeup_time;
|
||||
ntp_server = data.ntp_server;
|
||||
}
|
||||
|
||||
|
||||
void reset_eeprom(){
|
||||
summer = false;
|
||||
ntp_update = true;
|
||||
wakeup_time = 10;
|
||||
ntp_server = "ntp2.uni-augsburg.de";
|
||||
write_eeprom();
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ void show_white(){
|
||||
leds[i] = CRGB::White;
|
||||
}
|
||||
FastLED.show();
|
||||
write_log("Light: WHITE");
|
||||
//write_log("Light: WHITE");
|
||||
}
|
||||
|
||||
//Show LED Colors
|
||||
@@ -51,14 +51,20 @@ bool run_wake_up(long currentMillis){
|
||||
if (alarm_started == true)
|
||||
{
|
||||
long delta = (currentMillis - startTime)/1000;
|
||||
if (delta < 220){
|
||||
set_color(30 + int(delta), int(delta)/4, 0);
|
||||
long max_wake_time = wakeup_time *60; //Calculate Wakeuptime in Seconds
|
||||
int maxvalue = int(220/(max_wake_time/3));
|
||||
|
||||
if (delta < (max_wake_time/3)){
|
||||
int color_time = delta * maxvalue;
|
||||
set_color(30 + int(color_time), int(color_time)/4, 0);
|
||||
}
|
||||
else if(delta < 405){
|
||||
set_color(255, int(delta - 220)+55, int((delta - 220)/4));
|
||||
else if((delta < ((max_wake_time/3)*2))){
|
||||
int color_time = (delta - (max_wake_time/3)) * maxvalue;
|
||||
set_color(255, int(color_time)+30, int((color_time)/4));
|
||||
}
|
||||
else if(delta < 605){
|
||||
set_color(255, 255, int((delta - 405))+55);
|
||||
else if(delta < max_wake_time){
|
||||
int color_time = (delta - ((max_wake_time/3)*2)) * maxvalue;
|
||||
set_color(255, 255, int((color_time))+30);
|
||||
}
|
||||
else{
|
||||
if (delta % 2 == 0){
|
||||
|
||||
@@ -17,7 +17,7 @@ void update_time_from_web(){
|
||||
byte actualMonth = dateTime.month;
|
||||
byte actualday =dateTime.day;
|
||||
byte actualdayofWeek = dateTime.dayofWeek;
|
||||
if (actualMinute != m && actualday != 7 && actualMonth != 2 && actualyear != 2036){
|
||||
if (actualMinute != m && actualday != 7 && actualMonth != 2 && actualyear != 2036 && actualHour != 0){
|
||||
h = actualHour;
|
||||
m = actualMinute;
|
||||
s = actualsecond;
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
String logfile = "";
|
||||
//Webserver
|
||||
//###################################################################################
|
||||
|
||||
void setup_webserver(){
|
||||
httpUpdater.setup(&server, "Licht", "Wecker");
|
||||
@@ -18,8 +20,15 @@ void handle_webserver(){
|
||||
}
|
||||
|
||||
|
||||
String Header = "<!DOCTYPE html><html><head><meta charset=\"UTF-8\"><title>Lichtwecker</title></head><body style=\"text-align:left;margin:0.5em\"><div id=\"header\"><h1 style=\"margin:0px;padding:0px\">Licht Wecker</h1><hr></div><div id=\"content\" style=\"font-size:1.2em;\">";
|
||||
String Footer = "</div><br><br><hr><div id=\"footer\">Not for Sale, Prototyp by <a href=\"http://christian.mittring-mering.de/\">CHM</a>, Hardware: " + Hardware + ", Software: "+ Software +"</div></body></html> ";
|
||||
//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();
|
||||
@@ -45,6 +54,20 @@ void handleArgs(){
|
||||
}
|
||||
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);
|
||||
@@ -80,26 +103,37 @@ void handleArgs(){
|
||||
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 = "Alarm 1: <form action=\"/\" methode=\"get\"><input type=\"text\" name=\"al1h\" value=\"" + String(al1h) + "\">:<input type=\"text\" 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 = "Alarm 2: <form action=\"/\" methode=\"get\"><input type=\"text\" name=\"al2h\" value=\"" + String(al2h) + "\">:<input type=\"text\" 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 Alarm = "<h3>Alarm</h3>" + Alarm1 + "<br><br>" + Alarm2;
|
||||
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>" + String("stündliches Zeit Update über " + ntp_server + ": ") + 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>";
|
||||
String Body = Alarm + Zeit + NTP + Reboot;
|
||||
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 = "Neustart... <a href=\"/\">Neu laden</a>";
|
||||
String Body = "<div class=\"card\">Neustart... <a href=\"/\">Neu laden</a></div>";
|
||||
server.send(200, "text/html", Header + Body + Footer);
|
||||
delay(500);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user