Minor refactoring
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* Wordclock 2.0 - Wordclock with ESP8266 and NTP time update
|
* Wordclock 2.0 - Wordclock with ESP8266 and NTP time update
|
||||||
*
|
*
|
||||||
* created by techniccontroller 04.12.2021
|
* created by techniccontroller 04.12.2021, refactored and additions by ranse 10.12.2024
|
||||||
*
|
*
|
||||||
* components:
|
* components:
|
||||||
* - ESP8266
|
* - ESP8266
|
||||||
@@ -60,10 +60,10 @@ ESP8266WebServer webserver(HTTP_PORT); // Webse
|
|||||||
// STATIC VARIABLES
|
// STATIC VARIABLES
|
||||||
// ----------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------
|
||||||
// EEPROM values
|
// EEPROM values
|
||||||
static EepromLayout_st eeprom_buffer = {{0, 0, 0, 0}, {0U, 0U, 0U, false}, {0U, 0U, 0U, 0U}};
|
static EepromLayout_st eeprom_buffer_st = {{0, 0, 0, 0}, {0U, 0U, 0U, false}, {0U, 0U, 0U, 0U}};
|
||||||
static Brightness_st *const brightness_ps = &eeprom_buffer.brightness_values;
|
static Brightness_st *const brightness_cpst = &eeprom_buffer_st.brightness_values;
|
||||||
static Color_st *const colors_ps = &eeprom_buffer.color_values;
|
static Color_st *const colors_cpst = &eeprom_buffer_st.color_values;
|
||||||
static NightModeTimes_st *const night_mode_times_ps = &eeprom_buffer.night_mode_times;
|
static NightModeTimes_st *const night_mode_times_cpst = &eeprom_buffer_st.night_mode_times;
|
||||||
|
|
||||||
// Games
|
// Games
|
||||||
static Pong pong = Pong(&led_matrix, &logger);
|
static Pong pong = Pong(&led_matrix, &logger);
|
||||||
@@ -138,7 +138,7 @@ void setup()
|
|||||||
led_matrix.set_current_limit(CURRENT_LIMIT_LED);
|
led_matrix.set_current_limit(CURRENT_LIMIT_LED);
|
||||||
|
|
||||||
// Turn on minutes LEDs (blue)
|
// Turn on minutes LEDs (blue)
|
||||||
led_matrix.set_min_indicator((uint8_t)0b1111, colors_24bit[6]);
|
led_matrix.set_min_indicator(MIN_LEDS_PATTERN, colors_24bit[6]);
|
||||||
led_matrix.draw_on_matrix_instant();
|
led_matrix.draw_on_matrix_instant();
|
||||||
|
|
||||||
/* Use WiFiMaanger for handling initial Wifi setup */
|
/* Use WiFiMaanger for handling initial Wifi setup */
|
||||||
@@ -157,7 +157,7 @@ void setup()
|
|||||||
WiFi.persistent(true);
|
WiFi.persistent(true);
|
||||||
|
|
||||||
// Turn off minutes LEDs
|
// Turn off minutes LEDs
|
||||||
led_matrix.set_min_indicator((uint8_t)0b1111, 0);
|
led_matrix.set_min_indicator(MIN_LEDS_PATTERN, 0);
|
||||||
led_matrix.draw_on_matrix_instant();
|
led_matrix.draw_on_matrix_instant();
|
||||||
|
|
||||||
// init ESP8266 File manager (LittleFS)
|
// init ESP8266 File manager (LittleFS)
|
||||||
@@ -295,8 +295,8 @@ void log_data()
|
|||||||
logger.log_string("IP: " + WiFi.localIP().toString());
|
logger.log_string("IP: " + WiFi.localIP().toString());
|
||||||
logger.log_string("Reset Reason: " + ESP.getResetReason());
|
logger.log_string("Reset Reason: " + ESP.getResetReason());
|
||||||
|
|
||||||
logger.log_string("Nightmode starts at: " + String(night_mode_times_ps->start_hour) + ":" + String(night_mode_times_ps->start_min));
|
logger.log_string("Nightmode starts at: " + String(night_mode_times_cpst->start_hour) + ":" + String(night_mode_times_cpst->start_min));
|
||||||
logger.log_string("Nightmode ends at: " + String(night_mode_times_ps->end_hour) + ":" + String(night_mode_times_ps->end_min));
|
logger.log_string("Nightmode ends at: " + String(night_mode_times_cpst->end_hour) + ":" + String(night_mode_times_cpst->end_min));
|
||||||
|
|
||||||
logger.log_string("Brightness: " + String(((uint16_t)current_brightness * 100) / UINT8_MAX) + "%\n");
|
logger.log_string("Brightness: " + String(((uint16_t)current_brightness * 100) / UINT8_MAX) + "%\n");
|
||||||
}
|
}
|
||||||
@@ -363,7 +363,7 @@ void handle_current_state()
|
|||||||
// clear matrix
|
// clear matrix
|
||||||
led_matrix.flush();
|
led_matrix.flush();
|
||||||
// Turn on minutes LEDs (blue)
|
// Turn on minutes LEDs (blue)
|
||||||
led_matrix.set_min_indicator((uint8_t)0b1111, colors_24bit[6]);
|
led_matrix.set_min_indicator((uint8_t)MIN_LEDS_PATTERN, colors_24bit[6]);
|
||||||
led_matrix.draw_on_matrix_instant();
|
led_matrix.draw_on_matrix_instant();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -379,7 +379,7 @@ void handle_current_state()
|
|||||||
// clear matrix
|
// clear matrix
|
||||||
led_matrix.flush();
|
led_matrix.flush();
|
||||||
// Turn on minutes LEDs (blue)
|
// Turn on minutes LEDs (blue)
|
||||||
led_matrix.set_min_indicator((uint8_t)0b1111, colors_24bit[6]);
|
led_matrix.set_min_indicator((uint8_t)MIN_LEDS_PATTERN, colors_24bit[6]);
|
||||||
led_matrix.draw_on_matrix_instant();
|
led_matrix.draw_on_matrix_instant();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -482,11 +482,11 @@ void check_night_mode()
|
|||||||
int hours = tm_mgr.hour();
|
int hours = tm_mgr.hour();
|
||||||
int minutes = tm_mgr.minute();
|
int minutes = tm_mgr.minute();
|
||||||
|
|
||||||
if ((hours == night_mode_times_ps->start_hour) && (minutes == night_mode_times_ps->start_min))
|
if ((hours == night_mode_times_cpst->start_hour) && (minutes == night_mode_times_cpst->start_min))
|
||||||
{
|
{
|
||||||
set_night_mode(true);
|
set_night_mode(true);
|
||||||
}
|
}
|
||||||
else if ((hours == night_mode_times_ps->end_hour) && (minutes == night_mode_times_ps->end_min))
|
else if ((hours == night_mode_times_cpst->end_hour) && (minutes == night_mode_times_cpst->end_min))
|
||||||
{
|
{
|
||||||
set_night_mode(false);
|
set_night_mode(false);
|
||||||
}
|
}
|
||||||
@@ -657,9 +657,9 @@ void set_main_color(uint8_t red, uint8_t green, uint8_t blue)
|
|||||||
main_color_clock = LEDMatrix::color_24bit(red, green, blue);
|
main_color_clock = LEDMatrix::color_24bit(red, green, blue);
|
||||||
|
|
||||||
// Update colors and save color settings to EEPROM
|
// Update colors and save color settings to EEPROM
|
||||||
colors_ps->blue = blue;
|
colors_cpst->blue = blue;
|
||||||
colors_ps->red = red;
|
colors_cpst->red = red;
|
||||||
colors_ps->green = green;
|
colors_cpst->green = green;
|
||||||
write_settings_to_EEPROM();
|
write_settings_to_EEPROM();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -670,9 +670,9 @@ void set_main_color(uint8_t red, uint8_t green, uint8_t blue)
|
|||||||
|
|
||||||
void draw_main_color()
|
void draw_main_color()
|
||||||
{
|
{
|
||||||
uint8_t red = colors_ps->red;
|
uint8_t red = colors_cpst->red;
|
||||||
uint8_t green = colors_ps->green;
|
uint8_t green = colors_cpst->green;
|
||||||
uint8_t blue = colors_ps->blue;
|
uint8_t blue = colors_cpst->blue;
|
||||||
|
|
||||||
if ((int(red) + int(green) + int(blue)) < 50)
|
if ((int(red) + int(green) + int(blue)) < 50)
|
||||||
{
|
{
|
||||||
@@ -769,14 +769,14 @@ void handle_command()
|
|||||||
{
|
{
|
||||||
String cmd_str = webserver.arg(0) + "-";
|
String cmd_str = webserver.arg(0) + "-";
|
||||||
logger.log_string("Nightmode setting change via Webserver to: " + cmd_str);
|
logger.log_string("Nightmode setting change via Webserver to: " + cmd_str);
|
||||||
night_mode_times_ps->start_hour = (int)split(cmd_str, '-', 0).toInt();
|
night_mode_times_cpst->start_hour = (int)split(cmd_str, '-', 0).toInt();
|
||||||
night_mode_times_ps->start_min = (int)split(cmd_str, '-', 1).toInt();
|
night_mode_times_cpst->start_min = (int)split(cmd_str, '-', 1).toInt();
|
||||||
night_mode_times_ps->end_hour = (int)split(cmd_str, '-', 2).toInt();
|
night_mode_times_cpst->end_hour = (int)split(cmd_str, '-', 2).toInt();
|
||||||
night_mode_times_ps->end_min = (int)split(cmd_str, '-', 3).toInt();
|
night_mode_times_cpst->end_min = (int)split(cmd_str, '-', 3).toInt();
|
||||||
brightness_ps->static_brightness = (uint8_t)split(cmd_str, '-', 4).toInt();
|
brightness_cpst->static_brightness = (uint8_t)split(cmd_str, '-', 4).toInt();
|
||||||
flg_reset_wifi_creds = split(cmd_str, '-', 5).toInt() > 0 ? true : false;
|
flg_reset_wifi_creds = split(cmd_str, '-', 5).toInt() > 0 ? true : false;
|
||||||
brightness_ps->dyn_brightness_min = (uint8_t)split(cmd_str, '-', 6).toInt();
|
brightness_cpst->dyn_brightness_min = (uint8_t)split(cmd_str, '-', 6).toInt();
|
||||||
brightness_ps->dyn_brightness_max = (uint8_t)split(cmd_str, '-', 7).toInt();
|
brightness_cpst->dyn_brightness_max = (uint8_t)split(cmd_str, '-', 7).toInt();
|
||||||
|
|
||||||
if (flg_reset_wifi_creds == true)
|
if (flg_reset_wifi_creds == true)
|
||||||
{
|
{
|
||||||
@@ -788,9 +788,9 @@ void handle_command()
|
|||||||
// Update EEPROM with new settings
|
// Update EEPROM with new settings
|
||||||
write_settings_to_EEPROM();
|
write_settings_to_EEPROM();
|
||||||
|
|
||||||
logger.log_string("Nightmode starts at: " + String(night_mode_times_ps->start_hour) + ":" + String(night_mode_times_ps->start_min));
|
logger.log_string("Nightmode starts at: " + String(night_mode_times_cpst->start_hour) + ":" + String(night_mode_times_cpst->start_min));
|
||||||
delay(10);
|
delay(10);
|
||||||
logger.log_string("Nightmode ends at: " + String(night_mode_times_ps->end_hour) + ":" + String(night_mode_times_ps->end_min));
|
logger.log_string("Nightmode ends at: " + String(night_mode_times_cpst->end_hour) + ":" + String(night_mode_times_cpst->end_min));
|
||||||
delay(10);
|
delay(10);
|
||||||
|
|
||||||
// Update brightness
|
// Update brightness
|
||||||
@@ -906,17 +906,17 @@ void handle_data_request()
|
|||||||
message += ",";
|
message += ",";
|
||||||
message += "\"night_mode\":\"" + String(flg_night_mode) + "\"";
|
message += "\"night_mode\":\"" + String(flg_night_mode) + "\"";
|
||||||
message += ",";
|
message += ",";
|
||||||
message += "\"nightModeStart\":\"" + leading_zero2digit(night_mode_times_ps->start_hour) + "-" + leading_zero2digit(night_mode_times_ps->start_min) + "\"";
|
message += "\"nightModeStart\":\"" + leading_zero2digit(night_mode_times_cpst->start_hour) + "-" + leading_zero2digit(night_mode_times_cpst->start_min) + "\"";
|
||||||
message += ",";
|
message += ",";
|
||||||
message += "\"nightModeEnd\":\"" + leading_zero2digit(night_mode_times_ps->end_hour) + "-" + leading_zero2digit(night_mode_times_ps->end_min) + "\"";
|
message += "\"nightModeEnd\":\"" + leading_zero2digit(night_mode_times_cpst->end_hour) + "-" + leading_zero2digit(night_mode_times_cpst->end_min) + "\"";
|
||||||
message += ",";
|
message += ",";
|
||||||
message += "\"static_brightness\":\"" + String(brightness_ps->static_brightness) + "\"";
|
message += "\"static_brightness\":\"" + String(brightness_cpst->static_brightness) + "\"";
|
||||||
message += ",";
|
message += ",";
|
||||||
message += "\"dyn_brightness\":\"" + String(brightness_ps->flg_dynamic_brightness) + "\"";
|
message += "\"dyn_brightness\":\"" + String(brightness_cpst->flg_dynamic_brightness) + "\"";
|
||||||
message += ",";
|
message += ",";
|
||||||
message += "\"min_brightness\":\"" + String(brightness_ps->dyn_brightness_min) + "\"";
|
message += "\"min_brightness\":\"" + String(brightness_cpst->dyn_brightness_min) + "\"";
|
||||||
message += ",";
|
message += ",";
|
||||||
message += "\"max_brightness\":\"" + String(brightness_ps->dyn_brightness_max) + "\"";
|
message += "\"max_brightness\":\"" + String(brightness_cpst->dyn_brightness_max) + "\"";
|
||||||
}
|
}
|
||||||
message += "}";
|
message += "}";
|
||||||
webserver.send(200, "application/json", message);
|
webserver.send(200, "application/json", message);
|
||||||
@@ -942,7 +942,7 @@ void set_night_mode(bool state)
|
|||||||
*/
|
*/
|
||||||
void set_dynamic_brightness(bool state)
|
void set_dynamic_brightness(bool state)
|
||||||
{
|
{
|
||||||
brightness_ps->flg_dynamic_brightness = state;
|
brightness_cpst->flg_dynamic_brightness = state;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1012,7 +1012,7 @@ uint8_t calculate_dynamic_brightness(uint8_t min_brightness, uint8_t max_brightn
|
|||||||
*/
|
*/
|
||||||
void read_settings_from_EEPROM()
|
void read_settings_from_EEPROM()
|
||||||
{
|
{
|
||||||
EEPROM.get(0, eeprom_buffer);
|
EEPROM.get(0, eeprom_buffer_st);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1023,7 +1023,7 @@ void read_settings_from_EEPROM()
|
|||||||
void write_settings_to_EEPROM()
|
void write_settings_to_EEPROM()
|
||||||
{
|
{
|
||||||
// Copy EEPROM buffer
|
// Copy EEPROM buffer
|
||||||
EEPROM.put(0, eeprom_buffer);
|
EEPROM.put(0, eeprom_buffer_st);
|
||||||
// Commit changes
|
// Commit changes
|
||||||
EEPROM.commit();
|
EEPROM.commit();
|
||||||
}
|
}
|
||||||
@@ -1037,17 +1037,17 @@ uint8_t update_brightness()
|
|||||||
{
|
{
|
||||||
uint8_t new_brightness = 0;
|
uint8_t new_brightness = 0;
|
||||||
|
|
||||||
if (brightness_ps->flg_dynamic_brightness == true)
|
if (brightness_cpst->flg_dynamic_brightness == true)
|
||||||
{
|
{
|
||||||
new_brightness = calculate_dynamic_brightness(brightness_ps->dyn_brightness_min,
|
new_brightness = calculate_dynamic_brightness(brightness_cpst->dyn_brightness_min,
|
||||||
brightness_ps->dyn_brightness_max,
|
brightness_cpst->dyn_brightness_max,
|
||||||
tm_mgr.hour(),
|
tm_mgr.hour(),
|
||||||
tm_mgr.minute(),
|
tm_mgr.minute(),
|
||||||
tm_mgr.isdst());
|
tm_mgr.isdst());
|
||||||
}
|
}
|
||||||
else // use static brightness
|
else // use static brightness
|
||||||
{
|
{
|
||||||
new_brightness = brightness_ps->static_brightness;
|
new_brightness = brightness_cpst->static_brightness;
|
||||||
}
|
}
|
||||||
// now set new brightness
|
// now set new brightness
|
||||||
led_matrix.set_brightness(new_brightness);
|
led_matrix.set_brightness(new_brightness);
|
||||||
@@ -1063,29 +1063,29 @@ uint8_t update_brightness()
|
|||||||
void limit_value_ranges()
|
void limit_value_ranges()
|
||||||
{
|
{
|
||||||
// Range limits
|
// Range limits
|
||||||
brightness_ps->dyn_brightness_min = RANGE_LIMIT(brightness_ps->dyn_brightness_min,
|
brightness_cpst->dyn_brightness_min = RANGE_LIMIT(brightness_cpst->dyn_brightness_min,
|
||||||
MIN_BRIGHTNESS,
|
MIN_BRIGHTNESS,
|
||||||
brightness_ps->dyn_brightness_max - 1); // minimum brightness
|
brightness_cpst->dyn_brightness_max - 1); // minimum brightness
|
||||||
brightness_ps->dyn_brightness_max = RANGE_LIMIT(brightness_ps->dyn_brightness_max,
|
brightness_cpst->dyn_brightness_max = RANGE_LIMIT(brightness_cpst->dyn_brightness_max,
|
||||||
brightness_ps->dyn_brightness_min + 1,
|
brightness_cpst->dyn_brightness_min + 1,
|
||||||
MAX_BRIGHTNESS); // maximum brightness
|
MAX_BRIGHTNESS); // maximum brightness
|
||||||
brightness_ps->static_brightness = RANGE_LIMIT(brightness_ps->static_brightness,
|
brightness_cpst->static_brightness = RANGE_LIMIT(brightness_cpst->static_brightness,
|
||||||
MIN_BRIGHTNESS,
|
MIN_BRIGHTNESS,
|
||||||
MAX_BRIGHTNESS); // static brightness
|
MAX_BRIGHTNESS); // static brightness
|
||||||
|
|
||||||
night_mode_times_ps->start_hour = RANGE_LIMIT_SUB(night_mode_times_ps->start_hour,
|
night_mode_times_cpst->start_hour = RANGE_LIMIT_SUB(night_mode_times_cpst->start_hour,
|
||||||
0,
|
0,
|
||||||
HOUR_MAX,
|
HOUR_MAX,
|
||||||
NIGHTMODE_START_HR);
|
NIGHTMODE_START_HR);
|
||||||
night_mode_times_ps->start_min = RANGE_LIMIT_SUB(night_mode_times_ps->start_min,
|
night_mode_times_cpst->start_min = RANGE_LIMIT_SUB(night_mode_times_cpst->start_min,
|
||||||
0,
|
0,
|
||||||
MINUTE_MAX,
|
MINUTE_MAX,
|
||||||
NIGHTMODE_START_MIN);
|
NIGHTMODE_START_MIN);
|
||||||
night_mode_times_ps->end_hour = RANGE_LIMIT_SUB(night_mode_times_ps->end_hour,
|
night_mode_times_cpst->end_hour = RANGE_LIMIT_SUB(night_mode_times_cpst->end_hour,
|
||||||
0,
|
0,
|
||||||
HOUR_MAX,
|
HOUR_MAX,
|
||||||
NIGHTMODE_END_HR);
|
NIGHTMODE_END_HR);
|
||||||
night_mode_times_ps->end_min = RANGE_LIMIT_SUB(night_mode_times_ps->end_min,
|
night_mode_times_cpst->end_min = RANGE_LIMIT_SUB(night_mode_times_cpst->end_min,
|
||||||
0,
|
0,
|
||||||
MINUTE_MAX,
|
MINUTE_MAX,
|
||||||
NIGHTMODE_END_MIN);
|
NIGHTMODE_END_MIN);
|
||||||
|
|||||||
Reference in New Issue
Block a user