From 1fd35d235fc51ec9e7b6415ebfdee2ce21d79832 Mon Sep 17 00:00:00 2001 From: M-Factory Date: Fri, 29 Aug 2025 22:05:34 +0900 Subject: [PATCH] Added seconds to clock without the days of the week Added seconds to clock without the days of the week. Blinking colon toggle changed to Animated seconds. Correct days of the week for German language. Geolocation changed to ip-api.com --- ESPTimeCast_ESP32/ESPTimeCast_ESP32.ino | 35 ++++++++++++++----- ESPTimeCast_ESP32/data/index.html | 26 ++++++++------- ESPTimeCast_ESP32/days_lookup.h | 2 +- ESPTimeCast_ESP32/mfactoryfont.h | 2 +- ESPTimeCast_ESP8266/ESPTimeCast_ESP8266.ino | 37 ++++++++++++++------- ESPTimeCast_ESP8266/data/index.html | 26 ++++++++------- ESPTimeCast_ESP8266/days_lookup.h | 2 +- ESPTimeCast_ESP8266/mfactoryfont.h | 2 +- 8 files changed, 83 insertions(+), 49 deletions(-) diff --git a/ESPTimeCast_ESP32/ESPTimeCast_ESP32.ino b/ESPTimeCast_ESP32/ESPTimeCast_ESP32.ino index de44bb1..28757b6 100644 --- a/ESPTimeCast_ESP32/ESPTimeCast_ESP32.ino +++ b/ESPTimeCast_ESP32/ESPTimeCast_ESP32.ino @@ -1612,28 +1612,43 @@ void loop() { const char *const *daysOfTheWeek = getDaysOfWeek(language); const char *daySymbol = daysOfTheWeek[timeinfo.tm_wday]; - char timeStr[9]; + + // build base HH:MM first --- + char baseTime[9]; if (twelveHourToggle) { int hour12 = timeinfo.tm_hour % 12; if (hour12 == 0) hour12 = 12; - sprintf(timeStr, " %d:%02d", hour12, timeinfo.tm_min); + sprintf(baseTime, "%d:%02d", hour12, timeinfo.tm_min); } else { - sprintf(timeStr, " %02d:%02d", timeinfo.tm_hour, timeinfo.tm_min); + sprintf(baseTime, "%02d:%02d", timeinfo.tm_hour, timeinfo.tm_min); } - char timeSpacedStr[20]; + // add seconds only if colon blink enabled AND weekday hidden --- + char timeWithSeconds[12]; + if (!showDayOfWeek && colonBlinkEnabled) { + // Remove any leading space from baseTime + const char *trimmedBase = baseTime; + if (baseTime[0] == ' ') trimmedBase++; // skip leading space + sprintf(timeWithSeconds, "%s:%02d", trimmedBase, timeinfo.tm_sec); + } else { + strcpy(timeWithSeconds, baseTime); // no seconds + } + + // keep spacing logic the same --- + char timeSpacedStr[24]; int j = 0; - for (int i = 0; timeStr[i] != '\0'; i++) { - timeSpacedStr[j++] = timeStr[i]; - if (timeStr[i + 1] != '\0') { + for (int i = 0; timeWithSeconds[i] != '\0'; i++) { + timeSpacedStr[j++] = timeWithSeconds[i]; + if (timeWithSeconds[i + 1] != '\0') { timeSpacedStr[j++] = ' '; } } timeSpacedStr[j] = '\0'; + // build final string --- String formattedTime; if (showDayOfWeek) { - formattedTime = String(daySymbol) + " " + String(timeSpacedStr); + formattedTime = String(daySymbol) + " " + String(timeSpacedStr); } else { formattedTime = String(timeSpacedStr); } @@ -1700,7 +1715,9 @@ void loop() { } else { // NTP and weather are OK — show time String timeString = formattedTime; - if (colonBlinkEnabled && !colonVisible) { + + // --- MOD: colon blinks only when weekday is shown --- + if (showDayOfWeek && colonBlinkEnabled && !colonVisible) { timeString.replace(":", " "); } P.print(timeString); diff --git a/ESPTimeCast_ESP32/data/index.html b/ESPTimeCast_ESP32/data/index.html index fc2d5d7..fc1ab12 100644 --- a/ESPTimeCast_ESP32/data/index.html +++ b/ESPTimeCast_ESP32/data/index.html @@ -502,7 +502,7 @@ textarea::placeholder {