diff --git a/src/main.cpp b/src/main.cpp index 2cea962..118ea85 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -429,8 +429,8 @@ void timerWakeCycle() { Settings s = settingsManager.get(); - // Connect WiFi (blocking) - wifiManager.begin(settingsManager); + // Connect WiFi (minimal — skip NTP/mDNS to save battery) + wifiManager.begin(settingsManager, true); if (!wifiManager.isConnected()) { Serial.println("[timer_wake] WiFi failed — going back to sleep"); powerManager.enterDeepSleep(s.interval_min); diff --git a/src/wifi_manager.cpp b/src/wifi_manager.cpp index 56f6cee..8568ca6 100644 --- a/src/wifi_manager.cpp +++ b/src/wifi_manager.cpp @@ -6,7 +6,7 @@ #include #include "config.h" -void WiFiManager::begin(SettingsManager& settings) { +void WiFiManager::begin(SettingsManager& settings, bool minimal) { _settings = &settings; if (!_settings->isProvisioned()) { @@ -15,7 +15,7 @@ void WiFiManager::begin(SettingsManager& settings) { return; } - startStation(); + startStation(minimal); } bool WiFiManager::isConnected() { @@ -47,18 +47,26 @@ void WiFiManager::startAP() { WiFi.softAPIP().toString().c_str()); } -void WiFiManager::startStation() { +void WiFiManager::startStation(bool minimal) { Settings s = _settings->get(); WiFi.disconnect(true); WiFi.mode(WIFI_STA); _apMode = false; - Serial.printf("[wifi] Connecting to: %s\n", s.wifi_ssid.c_str()); + Serial.printf("[wifi] Connecting to: %s%s\n", s.wifi_ssid.c_str(), + minimal ? " (minimal)" : ""); for (_retryCount = 0; _retryCount < WIFI_MAX_RETRIES; _retryCount++) { if (attemptConnection(s.wifi_ssid, s.wifi_pass)) { Serial.printf("[wifi] Connected! IP: %s, RSSI: %d\n", WiFi.localIP().toString().c_str(), WiFi.RSSI()); + + if (minimal) { + // Deep sleep wake path: skip NTP/mDNS to minimize active time. + // System clock was already seeded from hardware RTC at boot. + return; + } + WiFi.setSleep(WIFI_PS_MIN_MODEM); syncNTP(); setupMDNS("papercolor"); diff --git a/src/wifi_manager.h b/src/wifi_manager.h index 5c43920..463c932 100644 --- a/src/wifi_manager.h +++ b/src/wifi_manager.h @@ -5,13 +5,13 @@ class WiFiManager { public: - void begin(SettingsManager& settings); + void begin(SettingsManager& settings, bool minimal = false); bool isConnected(); bool isAPMode(); String getIP(); int getRSSI(); void startAP(); - void startStation(); + void startStation(bool minimal = false); void setupMDNS(const char* hostname); void syncNTP();