From d3990516b5ec8c2b558662b6a487cb3d923636af Mon Sep 17 00:00:00 2001 From: UA1ZBE Date: Wed, 22 Jul 2026 13:00:55 +0300 Subject: [PATCH] add TZ offset +3h (MSK) for time display/set --- src/main.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 2dba1a5..0b14cad 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -46,6 +46,8 @@ static float g_last_temperature = -127.0f; static unsigned long g_last_hall_alert = 0; static unsigned long g_last_motion_alert = 0; static const unsigned long ALERT_COOLDOWN_MS = 600000; +static const uint32_t TZ_OFFSET = 10800; // +3h (MSK) + static uint32_t date_to_epoch(int y, int m, int d, int h, int mi) { const uint8_t mdays[] = {31,28,31,30,31,30,31,31,30,31,30,31}; uint32_t days = (y - 1970) * 365; @@ -227,7 +229,7 @@ public: } else if (strncmp(cmd, "time", 4) == 0) { const char* rest = cmd + 4; while (*rest == ' ') rest++; if (*rest == 0) { - uint32_t ts = rtc_clock.getCurrentTime(); + uint32_t ts = rtc_clock.getCurrentTime() + TZ_OFFSET; if (ts < 100000) { defer_response("time not set"); return; } uint32_t days = ts / 86400; int h = (ts % 86400) / 3600; @@ -258,7 +260,7 @@ public: if (y < 2020 || y > 2099 || m < 1 || m > 12 || d < 1 || d > 31 || h > 23 || mi > 59) { defer_response("bad date"); return; } - rtc_clock.setCurrentTime(date_to_epoch(y, m, d, h, mi)); + rtc_clock.setCurrentTime(date_to_epoch(y, m, d, h, mi) - TZ_OFFSET); char r[64]; snprintf(r, sizeof(r), "time set %02d.%02d.%04d %02d.%02d", d, m, y, h, mi); defer_response(r); } else defer_response("time s DD.MM.YYYY HH.MM");