add NTP to menu

pull/133/head
sqfmi 2021-12-30 01:50:13 -05:00
parent 12915a48e6
commit a454e65ba2
5 changed files with 39 additions and 11 deletions

View File

@ -91,6 +91,9 @@ void Watchy::handleButtonPress(){
case 5:
showUpdateFW();
break;
case 6:
syncNTP();
break;
default:
break;
}
@ -170,6 +173,9 @@ void Watchy::handleButtonPress(){
case 5:
showUpdateFW();
break;
case 6:
syncNTP();
break;
default:
break;
}
@ -219,9 +225,9 @@ void Watchy::showMenu(byte menuIndex, bool partialRefresh){
uint16_t w, h;
int16_t yPos;
const char *menuItems[] = {"Check Battery", "Vibrate Motor", "Show Accelerometer", "Set Time", "Setup WiFi", "Update Firmware"};
const char *menuItems[] = {"Check Battery", "Vibrate Motor", "Show Accelerometer", "Set Time", "Setup WiFi", "Update Firmware", "Sync NTP"};
for(int i=0; i<MENU_LENGTH; i++){
yPos = 30+(MENU_HEIGHT*i);
yPos = MENU_HEIGHT+(MENU_HEIGHT*i);
display.setCursor(0, yPos);
if(i == menuIndex){
display.getTextBounds(menuItems[i], 0, yPos, &x1, &y1, &w, &h);
@ -248,9 +254,9 @@ void Watchy::showFastMenu(byte menuIndex){
uint16_t w, h;
int16_t yPos;
const char *menuItems[] = {"Check Battery", "Vibrate Motor", "Show Accelerometer", "Set Time", "Setup WiFi", "Update Firmware"};
const char *menuItems[] = {"Check Battery", "Vibrate Motor", "Show Accelerometer", "Set Time", "Setup WiFi", "Update Firmware", "Sync NTP"};
for(int i=0; i<MENU_LENGTH; i++){
yPos = 30+(MENU_HEIGHT*i);
yPos = MENU_HEIGHT+(MENU_HEIGHT*i);
display.setCursor(0, yPos);
if(i == menuIndex){
display.getTextBounds(menuItems[i], 0, yPos, &x1, &y1, &w, &h);
@ -557,7 +563,6 @@ void Watchy::drawWatchFace(){
weatherData Watchy::getWeatherData(){
if(weatherIntervalCounter >= WEATHER_UPDATE_INTERVAL){ //only update if WEATHER_UPDATE_INTERVAL has elapsed i.e. 30 minutes
if(connectWiFi()){
RTC.syncNtpTime(); //Sync NTP
HTTPClient http; //Use Weather API for live data if WiFi is connected
http.setConnectTimeout(3000);//3 second max timeout
String weatherQueryURL = String(OPENWEATHERMAP_URL) + String(CITY_NAME) + String(",") + String(COUNTRY_CODE) + String("&units=") + String(TEMP_UNIT) + String("&appid=") + String(OPENWEATHERMAP_APIKEY);
@ -729,7 +734,6 @@ void Watchy::setupWifi(){
display.println("Setup failed &");
display.println("timed out!");
}else{
RTC.syncNtpTime(); //sync ntp
display.println("Connected to");
display.println(WiFi.SSID());
}
@ -877,6 +881,28 @@ void Watchy::updateFWBegin(){
showMenu(menuIndex, false);
}
void Watchy::syncNTP(){
display.setFullWindow();
display.fillScreen(GxEPD_BLACK);
display.setFont(&FreeMonoBold9pt7b);
display.setTextColor(GxEPD_WHITE);
display.setCursor(0, 30);
display.println("Syncing NTP... ");
display.display(false); //full refresh
if(connectWiFi()){
if(RTC.syncNtpTime()){
display.println("NTP Sync Success");
}else{
display.println("NTP Sync Failed");
}
}else{
display.println("WiFi Not Configured");
}
display.display(true); //full refresh
delay(1000);
showMenu(menuIndex, false);
}
// time_t compileTime()
// {
// const time_t FUDGE(10); //fudge factor to allow for upload time, etc. (seconds, YMMV)

View File

@ -40,6 +40,7 @@ class Watchy {
void showAccelerometer();
void showUpdateFW();
void setTime();
void syncNTP();
void setupWifi();
bool connectWiFi();
weatherData getWeatherData();

View File

@ -115,11 +115,11 @@ void WatchyRTC::_PCFConfig(String datetime){ //String datetime is YYYY:MM:DD:HH:
clearAlarm();
}
void WatchyRTC::syncNtpTime(){ //NTP sync - call after connecting to WiFi and remember to turn it back off
bool WatchyRTC::syncNtpTime(){ //NTP sync - call after connecting to WiFi and remember to turn it back off
configTime(GMT_OFFSET_SEC, DST_OFFSET_SEC, NTP_SERVER);
struct tm timeinfo;
if(!getLocalTime(&timeinfo)){
return; //NTP sync failed
return false; //NTP sync failed
}
/****************************************************
struct tm
@ -143,6 +143,7 @@ void WatchyRTC::syncNtpTime(){ //NTP sync - call after connecting to WiFi and re
tm.Minute = timeinfo.tm_min;
tm.Second = timeinfo.tm_sec;
set(tm);
return true;
}
String WatchyRTC::_getValue(String data, char separator, int index)

View File

@ -25,7 +25,7 @@ class WatchyRTC {
void clearAlarm();
void read(tmElements_t &tm);
void set(tmElements_t tm);
void syncNtpTime();
bool syncNtpTime();
uint8_t temperature();
private:
void _DSConfig(String datetime);

View File

@ -40,8 +40,8 @@
#define MAIN_MENU_STATE 0
#define APP_STATE 1
#define FW_UPDATE_STATE 2
#define MENU_HEIGHT 30
#define MENU_LENGTH 6
#define MENU_HEIGHT 25
#define MENU_LENGTH 7
//set time
#define SET_HOUR 0
#define SET_MINUTE 1