From 654558abcd0ff1bf5089ff7b1ec07d850012f95b Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Tue, 28 Dec 2021 19:24:10 -0800 Subject: [PATCH] Partial work for NTP client --- platformio.ini | 9 +++++---- src/gps/RTC.h | 5 ++++- src/mesh/http/WiFiAPClient.cpp | 33 +++++++++++++++++++++++++++------ 3 files changed, 36 insertions(+), 11 deletions(-) diff --git a/platformio.ini b/platformio.ini index 1d35ddeb..3e1056b7 100644 --- a/platformio.ini +++ b/platformio.ini @@ -9,10 +9,10 @@ ; https://docs.platformio.org/page/projectconf.html [platformio] -default_envs = tbeam +;default_envs = tbeam ;default_envs = tbeam0.7 ;default_envs = heltec-v2.0 -;default_envs = tlora-v1 +default_envs = tlora-v1 ;default_envs = tlora_v1_3 ;default_envs = tlora-v2 ;default_envs = lora-relay-v1 # nrf board @@ -114,6 +114,7 @@ lib_deps = paulstoffregen/OneWire@^2.3.5 robtillaart/DS18B20@^0.1.11 h2zero/NimBLE-Arduino@1.3.1 + arduino-libraries/NTPClient#531eff39d9fbc831f3d03f706a161739203fbe2a # Hmm - this doesn't work yet # board_build.ldscript = linker/esp32.extram.bss.ld lib_ignore = @@ -127,8 +128,8 @@ platform_packages = ;upload_port = /dev/ttyUSB0 ;monitor_port = /dev/ttyUSB0 -;upload_port = /dev/cu.SLAB_USBtoUART -;monitor_port = /dev/cu.SLAB_USBtoUART +upload_port = /dev/cu.SLAB_USBtoUART +monitor_port = /dev/cu.SLAB_USBtoUART ; customize the partition table ; http://docs.platformio.org/en/latest/platforms/espressif32.html#partition-tables diff --git a/src/gps/RTC.h b/src/gps/RTC.h index 3a89d981..730d1914 100644 --- a/src/gps/RTC.h +++ b/src/gps/RTC.h @@ -11,8 +11,11 @@ enum RTCQuality { /// Some other node gave us a time we can use RTCQualityFromNet = 1, + /// Our time is based on NTP + RTCQualityNTP= 2, + /// Our time is based on our own GPS - RTCQualityGPS = 2 + RTCQualityGPS = 3 }; RTCQuality getRTCQuality(); diff --git a/src/mesh/http/WiFiAPClient.cpp b/src/mesh/http/WiFiAPClient.cpp index 91892b5d..b1d1ba91 100644 --- a/src/mesh/http/WiFiAPClient.cpp +++ b/src/mesh/http/WiFiAPClient.cpp @@ -3,13 +3,15 @@ #include "concurrency/Periodic.h" #include "configuration.h" #include "main.h" -#include "mqtt/MQTT.h" #include "mesh/http/WebServer.h" #include "mesh/wifi/WiFiServerAPI.h" +#include "mqtt/MQTT.h" #include "target_specific.h" #include #include #include +#include +#include using namespace concurrency; @@ -18,6 +20,10 @@ static void WiFiEvent(WiFiEvent_t event); // DNS Server for the Captive Portal DNSServer dnsServer; +// NTP +WiFiUDP ntpUDP; +NTPClient timeClient(ntpUDP, "0.pool.ntp.org"); + uint8_t wifiDisconnectReason = 0; // Stores our hostname @@ -46,10 +52,11 @@ static WifiSleepObserver wifiSleepObserver; static int32_t reconnectWiFi() { + const char *wifiName = radioConfig.preferences.wifi_ssid; + const char *wifiPsw = radioConfig.preferences.wifi_password; + if (radioConfig.has_preferences && needReconnect) { - const char *wifiName = radioConfig.preferences.wifi_ssid; - const char *wifiPsw = radioConfig.preferences.wifi_password; if (!*wifiPsw) // Treat empty password as no password wifiPsw = NULL; @@ -60,9 +67,21 @@ static int32_t reconnectWiFi() DEBUG_MSG("... Reconnecting to WiFi access point\n"); WiFi.mode(WIFI_MODE_STA); WiFi.begin(wifiName, wifiPsw); + + // Starting timeClient; + + } } + if (*wifiName) { + DEBUG_MSG("Updating NTP time\n"); + timeClient.update(); + + Serial.println(timeClient.getFormattedTime()); + Serial.println(timeClient.getEpochTime()); + } + return 30 * 1000; // every 30 seconds } @@ -128,14 +147,17 @@ static void onNetworkConnected() MDNS.addService("https", "tcp", 443); } + DEBUG_MSG("Starting NTP time client\n"); + timeClient.begin(); + initWebServer(); initApiServer(); APStartupComplete = true; - } + } // FIXME this is kinda yucky, instead we should just have an observable for 'wifireconnected' - if(mqtt) + if (mqtt) mqtt->reconnect(); } @@ -176,7 +198,6 @@ bool initWifi(bool forceSoftAP) } else { DEBUG_MSG("Starting WIFI AP: ssid=%s, ok=%d\n", wifiName, WiFi.softAP(wifiName, wifiPsw)); - } WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));