Program Listing for File NetworkNoScreen.cpp

Return to documentation for file (/home/fabio/Arduino/MyLvglWatch-20220910/NetworkNoScreen.cpp)

#include "NetworkNoScreen.h"
/* WiFi settings change ssid and password
 * according to your local setup.
 */
static const char *ssid            = "NameOfNetworkTP";
static const char *password        = "0123456789";
/* NTP (Network Time Protocol) settings */
static const char *ntpServer       = "pool.ntp.org";
static const long  gmtOffset_sec   = -3*3600;
static const int   daylightOffset_sec = 0;
static char ip[]="255.255.255.255";
void wiFiOff ()
/* Code do turn Wifi off.
 * based on: https://www.mischianti.org/2021/03/06/esp32-practical-power-saving-manage-wifi-and-cpu-1/
*/
{
    WiFi.disconnect(true);
    WiFi.mode(WIFI_OFF);
    adc_power_off();
}

int wiFiOn () {
    int nWiFiProbe = 0;
    int MAX_WIFIPROBE = 20;
    // turn ESP32 WiFi on and connect to Access Point
    Serial.printf("Trying to connect to %s \n", ssid);

    adc_power_on();
    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
        //tft->print(".");
        if (nWiFiProbe>MAX_WIFIPROBE) {
            wiFiOff();
            return WIFI_FAILED_TO_CONNECT;
        }
        nWiFiProbe++;
    }
    Serial.println(" CONNECTED");
    return WIFI_CONNECTED;
}

int setClockNTP()
/*
 * Turn radio (WiFi) on, connect to AP, requests
 * current time from NTP, store time into RTC,
 * turn radio off.
 */
{
    TTGOClass *ttgo = TTGOClass::getWatch();    // pointer to watch internals
    PCF8563_Class *rtc = ttgo->rtc;             // pointer to RTC (real-time clock)

    if (wiFiOn()) {
      //init, get current time from NTP server and store it in ESP32 variable.
      configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);

      struct tm timeinfo;
      if (!getLocalTime(&timeinfo)) {
          Serial.println("Failed to obtain time.");
          wiFiOff();
          return WIFI_NTP_FAILED;
      }
      Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S");
      rtc->syncToRtc(); // write current time into watch RTC (PCF8563)
      return WIFI_NTP_CLOCK_SET;
    }
    wiFiOff();
    return WIFI_NTP_FAILED;
}

const char * getIP () {
  IPAddress ipToPrint = WiFi.localIP();
  sprintf(ip, "%u.%u.%u.%u", ipToPrint[0], ipToPrint[1], ipToPrint[2], ipToPrint[3]);
  return ip;
}