From 2d43573e00f83e4c3315302a38879fa512233425 Mon Sep 17 00:00:00 2001 From: NC22 Date: Tue, 13 Aug 2024 22:03:42 +0300 Subject: [PATCH] Added force time change Added few test modes --- Volna42/src/Env.cpp | 29 ++++++++++++++++++++++++++++- Volna42/src/Env.h | 3 +++ Volna42/src/UserDefines.h | 2 +- Volna42/src/UserSettings.h | 2 +- Volna42/src/WebServerEink.cpp | 28 +++++++++++++++++++++++++--- Volna42/src/main.cpp | 2 +- 6 files changed, 59 insertions(+), 7 deletions(-) diff --git a/Volna42/src/Env.cpp b/Volna42/src/Env.cpp index b5ca108..68a8bd2 100644 --- a/Volna42/src/Env.cpp +++ b/Volna42/src/Env.cpp @@ -242,6 +242,7 @@ void Env::initDefaultTime() { t = mktime(&tm); defaultTime = t; Serial.println(F("Default time reassigned by user config")); + Serial.println(defaultTime); } } else { @@ -1268,6 +1269,13 @@ bool Env::isOnBattery() { return lastState.onBattery; } +/* + Full UI redraw + + 1. Update formatted time + 2. Draw current UI layout according to this time to buffer + 3. Send buffer to screen +*/ void Env::updateScreen() { // if (lastState.partialUpdateTest) { @@ -2534,8 +2542,27 @@ void Env::validateConfig(unsigned int version, std::vector * upda lastState.connectTimes = 0; lastState.wakeUps = 0; - } else if (key == cScreenLandscape || key == cScreenRotate) { + } else if (key == cScreenLandscape || key == cScreenRotate || key == cImagePreset) { + resetPartialData(); + + } else if (key == cTimestamp) { + + #if defined(ESP32) + if(sntp_enabled()) sntp_stop(); + #else + sntp_stop(); + #endif + yield(); + + Serial.println(F("Force manual timestamp set. NTP connection stopped.")); + lastState.timeConfigured = false; + initDefaultTime(); + + lastState.timeConfigured = true; + + yield(); + break; } } } diff --git a/Volna42/src/Env.h b/Volna42/src/Env.h index afacc26..283460e 100644 --- a/Volna42/src/Env.h +++ b/Volna42/src/Env.h @@ -6,6 +6,7 @@ #include // time() ctime() #include "sys/time.h" + #include #include #include "Config.h" @@ -14,9 +15,11 @@ #if defined(ESP32) #include + #include "esp_sntp.h" // #include #else #include + #include "sntp.h" // #include #endif diff --git a/Volna42/src/UserDefines.h b/Volna42/src/UserDefines.h index 042648b..2b5f240 100644 --- a/Volna42/src/UserDefines.h +++ b/Volna42/src/UserDefines.h @@ -109,10 +109,10 @@ #define EPD_CLK_PIN -1 // Всегда D5 - GPIO 14 (SCLK) - SPI #define EPD_DIN_PIN -1 // Всегда D7 - GPIO 13 (MOSI) - SPI - /* // [Optional, my old setup] | НЕ Основная // моя старая алт. распиновка, через резистор + /* #define EPD_BUSY_PIN 2 // D4 - GPIO - 2 (+20кОм резистор на VCC) #define EPD_RST_PIN 12 // D6 - GPIO - 12 (MISO) #define EPD_DC_PIN 0 // D3 - GPIO - 0 diff --git a/Volna42/src/UserSettings.h b/Volna42/src/UserSettings.h index 6ea410b..a8989f5 100644 --- a/Volna42/src/UserSettings.h +++ b/Volna42/src/UserSettings.h @@ -23,7 +23,7 @@ // #include // #include -const char productVersion[] PROGMEM = "0.87"; +const char productVersion[] PROGMEM = "0.88"; // [Режим точки доступа в случае отсутствия возможности подключится к Wifi] diff --git a/Volna42/src/WebServerEink.cpp b/Volna42/src/WebServerEink.cpp index 05e0dfb..b7344c9 100644 --- a/Volna42/src/WebServerEink.cpp +++ b/Volna42/src/WebServerEink.cpp @@ -948,13 +948,35 @@ void WebServerEink::apiTestData() { env->lastState.extData.isDataValid = true; env->lastState.extData.t = time(nullptr); - } + + } else if (server->arg(i) == "ext_summer" || server->arg(i) == "ext_winter"){ + + if (server->arg(i) == "ext_winter") { + + env->getConfig()->cfgValues[cTimestamp] = "2024-02-03 12:32:04"; + env->lastState.extData.temperature = -21.12f; + env->lastState.extData.humidity = 67.8f; + + } else { + + env->lastState.extData.temperature = 27.12f; + env->lastState.extData.humidity = 50.7f; + env->getConfig()->cfgValues[cTimestamp] = "2024-06-12 15:44:04"; + } + + env->lastState.extData.bat = 68; + env->lastState.extData.isDataValid = true; + env->lastState.extData.t = time(nullptr); + + std::vector updatedKeys; + updatedKeys.push_back(cTimestamp); + env->validateConfig(-1, &updatedKeys); + } break; } - env->screen->drawUIToBuffer(); - env->screen->updateScreen(); + env->updateScreen(); server->send(200, "application/json", "{\"status\":\"ok\"}"); } diff --git a/Volna42/src/main.cpp b/Volna42/src/main.cpp index 1f42c32..56f6cd9 100644 --- a/Volna42/src/main.cpp +++ b/Volna42/src/main.cpp @@ -131,7 +131,7 @@ void setup() if (env.lastState.lowBatTick < 100) { env.lastState.lowBatTick = 100; env.screen->drawUILowBat(); - env.updateScreen(); + env.screen->updateScreen(); } Serial.println(F("[On battery] LOW POWER or wrong detect voltage - [power off]"));