Skip to content

Commit

Permalink
Implement night mode activation switch
Browse files Browse the repository at this point in the history
  • Loading branch information
techniccontroller committed Jan 25, 2025
1 parent 7ba5c9e commit d9069bf
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 20 deletions.
35 changes: 20 additions & 15 deletions data/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@
}

.show{
height: 230px;
height: 280px;
transition: height 1s;
}

Expand Down Expand Up @@ -288,6 +288,12 @@ <h1 id="headline">WORDCLOCK 2.0</h1>
<label for="nm_end" style="align-self: flex-start">Nightmode end time: </label>
<input type="time" id="nm_end" name="nm_end" min="00:00" max="23:59">
</div>
<div class="checkbox-container">
<label for="NightMode" style="align-self: flex-start">Nightmode</label>
<div>
<input name= "NightMode" id="NightMode" type="checkbox" class="toggle">
</div>
</div>
<div class="checkbox-container">
<label for="ResetWifi" style="align-self: flex-start">Reset Wifi</label>
<div>
Expand All @@ -310,12 +316,6 @@ <h1 id="headline">WORDCLOCK 2.0</h1>
<div class="grid-item mode-item"><span class="dot-mode" onclick="modechange(this, 4)"><a onclick="sendCommand('./cmd?mode=snake')" class="buttonClass" style="width: 100%;"><img src = "./icons/snake.svg" style="height:50px"/></a></span></div>
<div class="grid-item mode-item"><span class="dot-mode" onclick="modechange(this, 5)"><a onclick="sendCommand('./cmd?mode=pingpong')" class="buttonClass" style="width: 100%;"><img src = "./icons/pingpong.svg" style="height:50px"/></a></span></div>
</div>
<div class="checkbox-container">
<label for="NightMode" style="align-self: flex-start">Nightmode</label>
<div>
<span style="font-weight: 800; color: green;" id="NightMode">active</span>
</div>
</div>
<div class="checkbox-container">
<label for="LED_Off" style="align-self: flex-start">LEDs OFF</label>
<div>
Expand Down Expand Up @@ -462,17 +462,22 @@ <h1 id="headline">WORDCLOCK 2.0</h1>
modebuttons[state].classList.add("active");

// set checkbox states
var span_nightMode = document.querySelector('span[id="NightMode"]');
if(myVar.nightMode == "1") {
console.log("nightMode == 1");
span_nightMode.textContent = "active";
span_nightMode.style.color = "green";
var ckb_nightmodeactivated = document.querySelector('input[id="NightMode"]');
if(myVar.nightModeActivated == "1") {
console.log("nightmodeactivated == 1");
ckb_nightmodeactivated.checked = true;
}
else {
console.log("nightMode == 0");
span_nightMode.textContent = "inactive";
span_nightMode.style.color = "red";
console.log("nightmodeactivated == 0");
ckb_nightmodeactivated.checked = false;
}
ckb_nightmodeactivated.addEventListener('change', () => {
if(ckb_nightmodeactivated.checked) {
sendCommand("./cmd?nightmodeactivated=1");
} else {
sendCommand("./cmd?nightmodeactivated=0");
}
});

// set checkbox states
var ckb_ledoff = document.querySelector('input[id="LED_Off"]');
Expand Down
23 changes: 18 additions & 5 deletions wordclock_esp8266.ino
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
#define ADR_MC_GREEN 22
#define ADR_MC_BLUE 24
#define ADR_STATE 26
#define ADR_NM_ACTIVATED 27
#define ADR_COLSHIFTSPEED 28
#define ADR_COLSHIFTACTIVE 29

Expand Down Expand Up @@ -184,6 +185,7 @@ float filterFactor = DEFAULT_SMOOTHING_FACTOR;// stores smoothing factor for led
uint8_t currentState = st_clock; // stores current state
bool stateAutoChange = false; // stores state of automatic state change
bool nightMode = false; // stores state of nightmode
bool nightModeActivated = true; // stores if the function nightmode is activated (its not the state of nightmode)
bool ledOff = false; // stores state of led off
uint32_t maincolor_clock = colors24bit[2]; // color of the clock and digital clock
uint32_t maincolor_snake = colors24bit[1]; // color of the random snake animation
Expand Down Expand Up @@ -617,15 +619,15 @@ void checkNightmode(){
int startInMinutes = nightModeStartHour * 60 + nightModeStartMin;
int endInMinutes = nightModeEndHour * 60 + nightModeEndMin;

if (startInMinutes < endInMinutes) { // Same day scenario
if (startInMinutes < endInMinutes && nightModeActivated) { // Same day scenario
if (startInMinutes < currentTimeInMinutes && currentTimeInMinutes < endInMinutes) {
nightMode = true;
logger.logString("Nightmode activated");
logger.logString("Nightmode active");
}
} else if (startInMinutes > endInMinutes) { // Overnight scenario
} else if (startInMinutes > endInMinutes && nightModeActivated) { // Overnight scenario
if (currentTimeInMinutes >= startInMinutes || currentTimeInMinutes < endInMinutes) {
nightMode = true;
logger.logString("Nightmode activated");
logger.logString("Nightmode active");
}
}
}
Expand Down Expand Up @@ -853,10 +855,12 @@ void loadNightmodeSettingsFromEEPROM()
nightModeStartMin = EEPROM.read(ADR_NM_START_M);
nightModeEndHour = EEPROM.read(ADR_NM_END_H);
nightModeEndMin = EEPROM.read(ADR_NM_END_M);
nightModeActivated = EEPROM.read(ADR_NM_ACTIVATED);
if(nightModeStartHour < 0 || nightModeStartHour > 23) nightModeStartHour = 22;
if(nightModeStartMin < 0 || nightModeStartMin > 59) nightModeStartMin = 0;
if(nightModeEndHour < 0 || nightModeEndHour > 23) nightModeEndHour = 7;
if(nightModeEndMin < 0 || nightModeEndMin > 59) nightModeEndMin = 0;
logger.logString("Nightmode activated: " + String(nightModeActivated));
logger.logString("Nightmode starts at: " + String(nightModeStartHour) + ":" + String(nightModeStartMin));
logger.logString("Nightmode ends at: " + String(nightModeEndHour) + ":" + String(nightModeEndMin));
}
Expand Down Expand Up @@ -941,6 +945,15 @@ void handleCommand() {
if(modestr == "1") ledOff = true;
else ledOff = false;
}
else if(server.argName(0) == "nightmodeactivated"){
String modestr = server.arg(0);
logger.logString("nightModeActivated change via Webserver to: " + modestr);
if(modestr == "1") nightModeActivated = true;
else nightModeActivated = false;
EEPROM.write(ADR_NM_ACTIVATED, nightModeActivated);
EEPROM.commit();
checkNightmode();
}
else if(server.argName(0) == "setting"){
String timestr = server.arg(0) + "-";
logger.logString("Nightmode setting change via Webserver to: " + timestr);
Expand Down Expand Up @@ -1112,7 +1125,7 @@ void handleDataRequest() {
message += ",";
message += "\"ledoff\":\"" + String(ledOff) + "\"";
message += ",";
message += "\"nightMode\":\"" + String(nightMode) + "\"";
message += "\"nightModeActivated\":\"" + String(nightModeActivated) + "\"";
message += ",";
message += "\"nightModeStart\":\"" + leadingZero2Digit(nightModeStartHour) + "-" + leadingZero2Digit(nightModeStartMin) + "\"";
message += ",";
Expand Down

0 comments on commit d9069bf

Please sign in to comment.