diff --git a/LichtWecker/Alarm.ino b/LichtWecker/Alarm.ino index 977007d..601e75d 100644 --- a/LichtWecker/Alarm.ino +++ b/LichtWecker/Alarm.ino @@ -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)){ diff --git a/LichtWecker/LichtWecker.ino b/LichtWecker/LichtWecker.ino index 4daf863..09336c6 100644 --- a/LichtWecker/LichtWecker.ino +++ b/LichtWecker/LichtWecker.ino @@ -16,7 +16,7 @@ #include String Hardware = "0.10"; -String Software = "0.07"; +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; diff --git a/LichtWecker/Uhr.ino b/LichtWecker/Uhr.ino index c2d0367..b818118 100644 --- a/LichtWecker/Uhr.ino +++ b/LichtWecker/Uhr.ino @@ -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); diff --git a/LichtWecker/eeprom.ino b/LichtWecker/eeprom.ino index d1ae954..0122bbf 100644 --- a/LichtWecker/eeprom.ino +++ b/LichtWecker/eeprom.ino @@ -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(); } diff --git a/LichtWecker/light.ino b/LichtWecker/light.ino index 7a51538..c54ab43 100644 --- a/LichtWecker/light.ino +++ b/LichtWecker/light.ino @@ -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)+55, 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))+55); } else{ if (delta % 2 == 0){ diff --git a/LichtWecker/ntp.ino b/LichtWecker/ntp.ino index 307b6c0..947a4b7 100644 --- a/LichtWecker/ntp.ino +++ b/LichtWecker/ntp.ino @@ -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; diff --git a/LichtWecker/webserver.ino b/LichtWecker/webserver.ino index 2cc129a..2729a47 100644 --- a/LichtWecker/webserver.ino +++ b/LichtWecker/webserver.ino @@ -54,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); @@ -89,6 +103,13 @@ 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(); } @@ -102,10 +123,11 @@ void print_website(){ bool A2 = Clock.checkAlarmEnabled(2); String Alarm1 = "Alarm 1:
:
Sommerzeit: " + getBoolString(summer) + "
Aktiv: " + getBoolString(A1) + "
Aktivieren " + "  Deaktivieren"; String Alarm2 = "Alarm 2:
:
Sommerzeit: " + getBoolString(summer) + "
Aktiv: " + getBoolString(A2) + "
Aktivieren " + "  Deaktivieren"; - String Alarm = "

Alarm

" + Alarm1 + "

" + Alarm2; + String Weckzeit = "Weckdauer (Minuten):
"; + String Alarm = "

Alarm

" + Alarm1 + "

" + Alarm2 + "

" + Weckzeit; String Zeit = "

Zeit

" + String(h) + ":" + String(m) + ":" + String(s) + " - " + String(d) + "." + String(M) + "." + String(y) + " | DST: " + String(summertime_EU(y,M,d,h,1)); - String NTP = "

NTP

" + String("stündliches Zeit Update über " + ntp_server + ": ") + getBoolString(ntp_update) + "
Aktivieren " + "  Deaktivieren"; - String Reboot = "

System:

Neustart

Software Update Modus"; + String NTP = "

NTP

Server:

stündliches Zeit Update: " + getBoolString(ntp_update) + "
Aktivieren " + "  Deaktivieren"; + String Reboot = "

System:

Neustart

Software Update Modus

Werkseinstellungen"; 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); }