Skip to content

Commit 9b806c1

Browse files
Merge pull request #41 from techniccontroller/dev_nightmodeswitch
Implement night mode activation switch
2 parents 7ba5c9e + d9069bf commit 9b806c1

File tree

2 files changed

+38
-20
lines changed

2 files changed

+38
-20
lines changed

data/index.html

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@
243243
}
244244

245245
.show{
246-
height: 230px;
246+
height: 280px;
247247
transition: height 1s;
248248
}
249249

@@ -288,6 +288,12 @@ <h1 id="headline">WORDCLOCK 2.0</h1>
288288
<label for="nm_end" style="align-self: flex-start">Nightmode end time: </label>
289289
<input type="time" id="nm_end" name="nm_end" min="00:00" max="23:59">
290290
</div>
291+
<div class="checkbox-container">
292+
<label for="NightMode" style="align-self: flex-start">Nightmode</label>
293+
<div>
294+
<input name= "NightMode" id="NightMode" type="checkbox" class="toggle">
295+
</div>
296+
</div>
291297
<div class="checkbox-container">
292298
<label for="ResetWifi" style="align-self: flex-start">Reset Wifi</label>
293299
<div>
@@ -310,12 +316,6 @@ <h1 id="headline">WORDCLOCK 2.0</h1>
310316
<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>
311317
<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>
312318
</div>
313-
<div class="checkbox-container">
314-
<label for="NightMode" style="align-self: flex-start">Nightmode</label>
315-
<div>
316-
<span style="font-weight: 800; color: green;" id="NightMode">active</span>
317-
</div>
318-
</div>
319319
<div class="checkbox-container">
320320
<label for="LED_Off" style="align-self: flex-start">LEDs OFF</label>
321321
<div>
@@ -462,17 +462,22 @@ <h1 id="headline">WORDCLOCK 2.0</h1>
462462
modebuttons[state].classList.add("active");
463463

464464
// set checkbox states
465-
var span_nightMode = document.querySelector('span[id="NightMode"]');
466-
if(myVar.nightMode == "1") {
467-
console.log("nightMode == 1");
468-
span_nightMode.textContent = "active";
469-
span_nightMode.style.color = "green";
465+
var ckb_nightmodeactivated = document.querySelector('input[id="NightMode"]');
466+
if(myVar.nightModeActivated == "1") {
467+
console.log("nightmodeactivated == 1");
468+
ckb_nightmodeactivated.checked = true;
470469
}
471470
else {
472-
console.log("nightMode == 0");
473-
span_nightMode.textContent = "inactive";
474-
span_nightMode.style.color = "red";
471+
console.log("nightmodeactivated == 0");
472+
ckb_nightmodeactivated.checked = false;
475473
}
474+
ckb_nightmodeactivated.addEventListener('change', () => {
475+
if(ckb_nightmodeactivated.checked) {
476+
sendCommand("./cmd?nightmodeactivated=1");
477+
} else {
478+
sendCommand("./cmd?nightmodeactivated=0");
479+
}
480+
});
476481

477482
// set checkbox states
478483
var ckb_ledoff = document.querySelector('input[id="LED_Off"]');

wordclock_esp8266.ino

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
#define ADR_MC_GREEN 22
5959
#define ADR_MC_BLUE 24
6060
#define ADR_STATE 26
61+
#define ADR_NM_ACTIVATED 27
6162
#define ADR_COLSHIFTSPEED 28
6263
#define ADR_COLSHIFTACTIVE 29
6364

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

620-
if (startInMinutes < endInMinutes) { // Same day scenario
622+
if (startInMinutes < endInMinutes && nightModeActivated) { // Same day scenario
621623
if (startInMinutes < currentTimeInMinutes && currentTimeInMinutes < endInMinutes) {
622624
nightMode = true;
623-
logger.logString("Nightmode activated");
625+
logger.logString("Nightmode active");
624626
}
625-
} else if (startInMinutes > endInMinutes) { // Overnight scenario
627+
} else if (startInMinutes > endInMinutes && nightModeActivated) { // Overnight scenario
626628
if (currentTimeInMinutes >= startInMinutes || currentTimeInMinutes < endInMinutes) {
627629
nightMode = true;
628-
logger.logString("Nightmode activated");
630+
logger.logString("Nightmode active");
629631
}
630632
}
631633
}
@@ -853,10 +855,12 @@ void loadNightmodeSettingsFromEEPROM()
853855
nightModeStartMin = EEPROM.read(ADR_NM_START_M);
854856
nightModeEndHour = EEPROM.read(ADR_NM_END_H);
855857
nightModeEndMin = EEPROM.read(ADR_NM_END_M);
858+
nightModeActivated = EEPROM.read(ADR_NM_ACTIVATED);
856859
if(nightModeStartHour < 0 || nightModeStartHour > 23) nightModeStartHour = 22;
857860
if(nightModeStartMin < 0 || nightModeStartMin > 59) nightModeStartMin = 0;
858861
if(nightModeEndHour < 0 || nightModeEndHour > 23) nightModeEndHour = 7;
859862
if(nightModeEndMin < 0 || nightModeEndMin > 59) nightModeEndMin = 0;
863+
logger.logString("Nightmode activated: " + String(nightModeActivated));
860864
logger.logString("Nightmode starts at: " + String(nightModeStartHour) + ":" + String(nightModeStartMin));
861865
logger.logString("Nightmode ends at: " + String(nightModeEndHour) + ":" + String(nightModeEndMin));
862866
}
@@ -941,6 +945,15 @@ void handleCommand() {
941945
if(modestr == "1") ledOff = true;
942946
else ledOff = false;
943947
}
948+
else if(server.argName(0) == "nightmodeactivated"){
949+
String modestr = server.arg(0);
950+
logger.logString("nightModeActivated change via Webserver to: " + modestr);
951+
if(modestr == "1") nightModeActivated = true;
952+
else nightModeActivated = false;
953+
EEPROM.write(ADR_NM_ACTIVATED, nightModeActivated);
954+
EEPROM.commit();
955+
checkNightmode();
956+
}
944957
else if(server.argName(0) == "setting"){
945958
String timestr = server.arg(0) + "-";
946959
logger.logString("Nightmode setting change via Webserver to: " + timestr);
@@ -1112,7 +1125,7 @@ void handleDataRequest() {
11121125
message += ",";
11131126
message += "\"ledoff\":\"" + String(ledOff) + "\"";
11141127
message += ",";
1115-
message += "\"nightMode\":\"" + String(nightMode) + "\"";
1128+
message += "\"nightModeActivated\":\"" + String(nightModeActivated) + "\"";
11161129
message += ",";
11171130
message += "\"nightModeStart\":\"" + leadingZero2Digit(nightModeStartHour) + "-" + leadingZero2Digit(nightModeStartMin) + "\"";
11181131
message += ",";

0 commit comments

Comments
 (0)