Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion data/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@
}

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

Expand Down Expand Up @@ -280,6 +280,10 @@ <h1 id="headline">WORDCLOCK 2.0</h1>
<label for="colorshiftspeed">Color shift speed:</label>
<input type="range" id="colorshiftspeed" name="volume" min="0" max="50">
</div>
<div class="number-container">
<label for="nm_brightness">Nightmode brightness:</label>
<input type="range" id="nm_brightness" name="volume" min="0" max="100">
</div>
<div class="number-container">
<label for="nm_start" style="align-self: flex-start">Nightmode start time: </label>
<input type="time" id="nm_start" name="nm_start" min="00:00" max="23:59">
Expand Down Expand Up @@ -536,6 +540,7 @@ <h1 id="headline">WORDCLOCK 2.0</h1>
document.getElementById("nm_start").value = myVar.nightModeStart.replace("-", ":");
document.getElementById("nm_end").value = myVar.nightModeEnd.replace("-", ":");
document.getElementById("brightness").value = parseInt(myVar.brightness);
document.getElementById("nm_brightness").value = parseInt(myVar.nightModeBrightness);
document.getElementById("colorshiftspeed").value = parseInt(myVar.colorshiftspeed);

updateDisplay(parseInt(myVar.modeid));
Expand Down Expand Up @@ -606,6 +611,7 @@ <h1 id="headline">WORDCLOCK 2.0</h1>
var nmStart = document.getElementById("nm_start");
var nmEnd = document.getElementById("nm_end");
var sld_brightness = document.getElementById("brightness");
var sld_nm_brightness = document.getElementById("nm_brightness");
var sld_colorshiftspeed = document.getElementById("colorshiftspeed");
var ckb_resetWifi = document.querySelector('input[id="ResetWifi"]');
var cmdstr = "./cmd?setting=";
Expand All @@ -616,6 +622,8 @@ <h1 id="headline">WORDCLOCK 2.0</h1>
cmdstr += sld_brightness.value;
cmdstr += "-";
cmdstr += sld_colorshiftspeed.value;
cmdstr += "-";
cmdstr += sld_nm_brightness.value;
console.log(cmdstr);
sendCommand(cmdstr);
if(ckb_resetWifi.checked) {
Expand Down
42 changes: 35 additions & 7 deletions wordclock_esp8266.ino
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,10 @@
// CONSTANTS
// ----------------------------------------------------------------------------------

#define EEPROM_VERSION_CODE 2 // Change this value when defaults settings change
#define EEPROM_VERSION_CODE 3 // Change this value when defaults settings change

// EEPROM address map (all uint8_t, 1 byte each)
#define EEPROM_SIZE 13 // size of EEPROM to save persistent variables
#define EEPROM_SIZE 14 // size of EEPROM to save persistent variables
#define ADR_EEPROM_VERSION 0 // uint8_t
#define ADR_NM_START_H 1 // uint8_t
#define ADR_NM_END_H 2 // uint8_t
Expand All @@ -65,17 +65,19 @@
#define ADR_NM_ACTIVATED 10 // uint8_t
#define ADR_COLSHIFTSPEED 11 // uint8_t
#define ADR_COLSHIFTACTIVE 12 // uint8_t
#define ADR_NM_BRIGHTNESS 13 // uint8_t

// DEFAULT SETTINGS (if one changes this, also increment the EEPROM_VERSION_CODE, to ensure that the EEPROM is updated with the new defaults)
#define DEFAULT_NM_START_HOUR 22 // default start hour of nightmode (0-23)
#define DEFAULT_NM_START_MIN 5 // default start minute of nightmode (0-59)
#define DEFAULT_NM_END_HOUR 7 // default end hour of nightmode (0-23)
#define DEFAULT_NM_END_MIN 0 // default end minute of nightmode (0-59)
#define DEFAULT_BRIGHTNESS 40 // default brightness of LEDs (0-255)
#define DEFAULT_BRIGHTNESS 40 // default brightness of LEDs (10-255)
#define DEFAULT_MC_RED 200 // default main color red value
#define DEFAULT_MC_GREEN 200 // default main color green value
#define DEFAULT_MC_BLUE 0 // default main color blue value
#define DEFAULT_NM_ACTIVATED 1 // if function nightmode is activated (0 = deactivated, 1 = activated)
#define DEFAULT_NM_BRIGHTNESS 0 // default brightness during night mode (0-255)
#define DEFAULT_COLSHIFT_SPEED 1 // needs to be between larger than 0 (1 = slowest, 255 = fastest)
#define DEFAULT_COLSHIFT_ACTIVE 0 // if dynamic color shift is active (0 = deactivated, 1 = activated)

Expand Down Expand Up @@ -216,6 +218,7 @@ uint8_t nightModeStartHour = DEFAULT_NM_START_HOUR;
uint8_t nightModeStartMin = DEFAULT_NM_START_MIN;
uint8_t nightModeEndHour = DEFAULT_NM_END_HOUR;
uint8_t nightModeEndMin = DEFAULT_NM_END_MIN;
uint8_t nightModeBrightness = DEFAULT_NM_BRIGHTNESS;

// Watchdog counter to trigger restart if NTP update was not possible 30 times in a row (5min)
int watchdogCounter = 30;
Expand Down Expand Up @@ -252,6 +255,7 @@ void setup() {
EEPROM.write(ADR_NM_ACTIVATED, DEFAULT_NM_ACTIVATED);
EEPROM.write(ADR_COLSHIFTSPEED, DEFAULT_COLSHIFT_SPEED);
EEPROM.write(ADR_COLSHIFTACTIVE, DEFAULT_COLSHIFT_ACTIVE);
EEPROM.write(ADR_NM_BRIGHTNESS, DEFAULT_NM_BRIGHTNESS);
EEPROM.commit();
}

Expand Down Expand Up @@ -394,6 +398,7 @@ void setup() {
loadNightmodeSettingsFromEEPROM();
loadBrightnessSettingsFromEEPROM();
loadColorShiftStateFromEEPROM();
loadNightmodeBrightnessFromEEPROM();

if(ESP.getResetReason().equals("Power On") || ESP.getResetReason().equals("External System")){
// test quickly each LED
Expand Down Expand Up @@ -460,15 +465,23 @@ void loop() {
}

// handle state behaviours (trigger loopCycles of different states depending on current state)
if(!nightMode && !ledOff && (millis() - lastStep > behaviorUpdatePeriod) && (millis() - lastLEDdirect > TIMEOUT_LEDDIRECT)){
if(!ledOff && (millis() - lastStep > behaviorUpdatePeriod) && (millis() - lastLEDdirect > TIMEOUT_LEDDIRECT)){
updateStateBehavior(currentState);
lastStep = millis();
}

// Turn off LEDs if ledOff is true or nightmode is active
if((ledOff || nightMode) && !waitForTimeAfterReboot){
// Turn off LEDs if ledOff is true
if(ledOff && !waitForTimeAfterReboot){
ledmatrix.gridFlush();
}

// Apply night mode brightness
if(nightMode && !ledOff && !waitForTimeAfterReboot){
ledmatrix.setBrightness(nightModeBrightness);
}
else if(!nightMode && !ledOff && !waitForTimeAfterReboot){
ledmatrix.setBrightness(brightness);
}

// periodically write colors to matrix
if(millis() - lastAnimationStep > PERIOD_MATRIXUPDATE && !waitForTimeAfterReboot && (millis() - lastLEDdirect > TIMEOUT_LEDDIRECT)){
Expand All @@ -480,7 +493,7 @@ void loop() {
handleButton();

// handle state changes
if(stateAutoChange && (millis() - lastStateChange > PERIOD_STATECHANGE) && !nightMode && !ledOff){
if(stateAutoChange && (millis() - lastStateChange > PERIOD_STATECHANGE) && !ledOff){
// increment state variable and trigger state change
stateChange((currentState + 1) % NUM_STATES, false);

Expand Down Expand Up @@ -931,6 +944,16 @@ void loadColorShiftStateFromEEPROM()
logger.logString("ColorShiftActive: " + String(dynColorShiftActive));
}

/**
* @brief Load the night mode brightness from EEPROM
*
*/
void loadNightmodeBrightnessFromEEPROM()
{
nightModeBrightness = EEPROM.read(ADR_NM_BRIGHTNESS);
logger.logString("Night mode brightness: " + String(nightModeBrightness));
}

/**
* @brief Handler for handling commands sent to "/cmd" url
*
Expand Down Expand Up @@ -1003,6 +1026,7 @@ void handleCommand() {
nightModeEndMin = split(timestr, '-', 3).toInt();
brightness = split(timestr, '-', 4).toInt();
dynColorShiftSpeed = split(timestr, '-', 5).toInt();
nightModeBrightness = split(timestr, '-', 6).toInt();
if(nightModeStartHour < 0 || nightModeStartHour > 23) nightModeStartHour = 22;
if(nightModeStartMin < 0 || nightModeStartMin > 59) nightModeStartMin = 0;
if(nightModeEndHour < 0 || nightModeEndHour > 23) nightModeEndHour = 7;
Expand All @@ -1015,11 +1039,13 @@ void handleCommand() {
EEPROM.write(ADR_NM_END_M, nightModeEndMin);
EEPROM.write(ADR_BRIGHTNESS, brightness);
EEPROM.write(ADR_COLSHIFTSPEED, dynColorShiftSpeed);
EEPROM.write(ADR_NM_BRIGHTNESS, nightModeBrightness);
EEPROM.commit();
logger.logString("Nightmode starts at: " + String(nightModeStartHour) + ":" + String(nightModeStartMin));
logger.logString("Nightmode ends at: " + String(nightModeEndHour) + ":" + String(nightModeEndMin));
logger.logString("Brightness: " + String(brightness));
logger.logString("ColorShiftSpeed: " + String(dynColorShiftSpeed));
logger.logString("Night mode brightness: " + String(nightModeBrightness));
ledmatrix.setBrightness(brightness);
lastNightmodeCheck = millis() - PERIOD_NIGHTMODECHECK;
}
Expand Down Expand Up @@ -1173,6 +1199,8 @@ void handleDataRequest() {
message += ",";
message += "\"brightness\":\"" + String(brightness) + "\"";
message += ",";
message += "\"nightModeBrightness\":\"" + String(nightModeBrightness) + "\"";
message += ",";
message += "\"colorshift\":\"" + String(dynColorShiftActive) + "\"";
message += ",";
message += "\"colorshiftspeed\":\"" + String(dynColorShiftSpeed) + "\"";
Expand Down