Implemented NTP client
This commit is contained in:
parent
488e8598ec
commit
272535006b
@ -16,3 +16,5 @@ upload_speed = 115200
|
||||
lib_deps =
|
||||
ArduinoJson
|
||||
ESP Async WebServer
|
||||
NTPClient
|
||||
Time
|
@ -4,10 +4,10 @@
|
||||
const uint8_t VersionMajor = 2;
|
||||
const uint8_t VersionMinor = 0;
|
||||
const uint8_t VersionPatch = 0;
|
||||
const uint8_t VersionMetadata = 8;
|
||||
const uint8_t VersionMetadata = 9;
|
||||
const char VersionBranch[] = "release/2.0";
|
||||
const char VersionSemVer[] = "2.0.0-beta.1";
|
||||
const char VersionFullSemVer[] = "2.0.0-beta.1+8";
|
||||
const char VersionFullSemVer[] = "2.0.0-beta.1+9";
|
||||
const char VersionCommitDate[] = "2018-01-05";
|
||||
|
||||
#endif
|
||||
|
58
src/main.cpp
58
src/main.cpp
@ -8,6 +8,9 @@
|
||||
#include <ESP8266WiFi.h>
|
||||
#include <ESPAsyncTCP.h>
|
||||
#include <ESPAsyncWebServer.h>
|
||||
#include <NTPClient.h>
|
||||
#include <WiFiUdp.h>
|
||||
#include <TimeLib.h>
|
||||
|
||||
extern "C" {
|
||||
#include <user_interface.h>
|
||||
@ -30,8 +33,10 @@ ADC_MODE(ADC_VCC);
|
||||
void initWiFi();
|
||||
#ifdef SerialDebug
|
||||
void wifiEvent(WiFiEvent_t event);
|
||||
void updateDebugStatus();
|
||||
#endif
|
||||
void updateLED();
|
||||
void updateNTPClient();
|
||||
|
||||
void startServer();
|
||||
void stopServer();
|
||||
@ -41,6 +46,9 @@ void handleNotFound(AsyncWebServerRequest* request);
|
||||
AsyncWebServer server(80);
|
||||
PCA9685* pwmDriver;
|
||||
|
||||
WiFiUDP ntpUDP;
|
||||
NTPClient* ntpClient = NULL;
|
||||
|
||||
bool accessPoint = false;
|
||||
bool stationMode = false;
|
||||
bool forceAccessPoint = false;
|
||||
@ -48,7 +56,7 @@ bool forceAccessPoint = false;
|
||||
uint32_t stationModeStart = 0;
|
||||
|
||||
#ifdef SerialDebug
|
||||
uint32_t memoryStatusTime = 0;
|
||||
uint32_t debugStatusTime = 0;
|
||||
#endif
|
||||
|
||||
|
||||
@ -132,12 +140,7 @@ void loop()
|
||||
|
||||
|
||||
#ifdef SerialDebug
|
||||
if (currentTime - memoryStatusTime >= 5000)
|
||||
{
|
||||
_d("Memory :: available: ");
|
||||
_dln(ESP.getFreeHeap());
|
||||
memoryStatusTime = currentTime;
|
||||
}
|
||||
updateDebugStatus();
|
||||
#endif
|
||||
|
||||
|
||||
@ -179,6 +182,7 @@ void loop()
|
||||
}
|
||||
|
||||
updateLED();
|
||||
updateNTPClient();
|
||||
stairs->tick();
|
||||
}
|
||||
|
||||
@ -260,6 +264,26 @@ void wifiEvent(WiFiEvent_t event)
|
||||
_dln("WiFi:: soft AP mode: station disconnected"); break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void updateDebugStatus()
|
||||
{
|
||||
if (currentTime - debugStatusTime < 5000) return;
|
||||
debugStatusTime = currentTime;
|
||||
|
||||
|
||||
_d("Status :: available heap: ");
|
||||
_dln(ESP.getFreeHeap());
|
||||
|
||||
if (ntpClient != NULL)
|
||||
{
|
||||
_d("Status :: time: ");
|
||||
uint32_t time = ntpClient->getEpochTime();
|
||||
|
||||
_d(day(time)); _d("-"); _d(month(time)); _d("-"); _d(year(time)); _d(" ");
|
||||
_d(hour(time)); _d(":"); _d(minute(time)); _d(":"); _dln(second(time));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@ -283,6 +307,26 @@ void updateLED()
|
||||
}
|
||||
|
||||
|
||||
void updateNTPClient()
|
||||
{
|
||||
if (ntpClient == NULL && WiFi.status() == WL_CONNECTED)
|
||||
{
|
||||
_dln("NTP :: initializing NTP client");
|
||||
|
||||
// TODO make NTP address and refresh interval configurable
|
||||
ntpClient = new NTPClient(ntpUDP, "nl.pool.ntp.org", 0, 5 * 60 * 1000);
|
||||
ntpClient->begin();
|
||||
}
|
||||
|
||||
|
||||
if (ntpClient != NULL)
|
||||
{
|
||||
ntpClient->update();
|
||||
// TODO check for triggers every 10 seconds or so
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void handleNotFound(AsyncWebServerRequest *request)
|
||||
{
|
||||
_d("HTTP :: not found: "); _dln(request->url());
|
||||
|
Loading…
Reference in New Issue
Block a user