ESP32 WiFi Manager dan NTP Client

Pada contoh kali ini, saya akan coba gabungkan Tutorial WiFi Manager dan NTP client pada ESP32.
Ada tambahan fungsi pada tutorial ini, yaitu configModeCallback. Fungsi ini dijalankan sebelum fungsi AutoConnect.

void configModeCallback (WiFiManager *myWiFiManager) {
  Serial.println("===================================");
  Serial.println("Masuk ke mode konfigurasi");
  Serial.print("IP Address yang bisa diakses : ");
  Serial.println(WiFi.softAPIP());
  Serial.print("WiFi/SSID : ");
  Serial.println(myWiFiManager->getConfigPortalSSID());
  Serial.println("===================================");
}


Pada contoh di atas, dalam configModeCallback akan menampilkan IP Address dan SSID.

Program lengkapnya adalah sebagai berikut :

#include <WiFiManager.h> // https://github.com/tzapu/WiFiManager

const char* ntpServer = "pool.ntp.org";
const long  gmtOffset_sec = 3600*7;
const int   daylightOffset_sec = 0;

String Hari[7] = {"Minggu", "Senin ", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"};
String Bulan[12] = {"Januari", "Februari ", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"};
char Tanggal[50] = "";
char Jam[20] = "";

void printLocalTime(){
  struct tm timeinfo;
  if(!getLocalTime(&timeinfo)){
    Serial.println("Failed to obtain time");
    return;
  }

    // Year dalam timestruct dihitung sejak 1900
  sprintf(Tanggal, "%s,%d %s %d ",Hari[timeinfo.tm_wday],timeinfo.tm_mday,Bulan[timeinfo.tm_mon],timeinfo.tm_year+1900);
  sprintf(Jam, "%02d:%02d:%02d ",timeinfo.tm_hour,timeinfo.tm_min,timeinfo.tm_sec);

  Serial.print("Tanggal Format Indonesia : ");
  Serial.println(Tanggal);
  Serial.print("Jam Format Indonesia : ");
  Serial.println(Jam);
  Serial.println("=====================");

}

void configModeCallback (WiFiManager *myWiFiManager) {
  Serial.println("===================================");
  Serial.println("Masuk ke mode konfigurasi");
  Serial.print("IP Address yang bisa diakses : ");
  Serial.println(WiFi.softAPIP());
  Serial.print("WiFi/SSID : ");
  Serial.println(myWiFiManager->getConfigPortalSSID());
  Serial.println("===================================");
}

void setup() {
    bool res;
    Serial.begin(115200);
    
    //WiFiManager, Local intialization. Once its business is done, there is no need to keep it around
    WiFiManager wm;

    // reset settings - wipe stored credentials for testing
    // these are stored by the esp library
    // wm.resetSettings();

   // Callback ini dipakai jika ingin melakukan sesuatu sebelum 
    // menjalankan AutoConnect
    // Sebagai contoh, sebelum connect, kita akan tampilkan IP Addressnya
    wm.setAPCallback(configModeCallback);

    // Ambil SSID dan password dari EEPROM, lalu coba connect
    // Jika SSID dan password tidak ada atau tidak bisa connect,
    // maka board akan bertindak sebagai access point dengan SSID 
    // "Wemos D1 Mini AP" dengan pass = "132457"
    // dan terus looping disini sampai menunggu konfigurasi         
    res = wm.autoConnect("ESP32 Server","123456789");

    if(!res) {
        Serial.println("Tidak bisa terhubung ke WiFi");
        // ESP.restart();
    } 
    else {
        // Jika berhasil connect ke WiFi    
        Serial.println("WiFi siap digunakan");
        Serial.print("IP Address :");
        Serial.println(WiFi.localIP());
        
        // Inisialiasi dan ambil waktu dari NTP Server
        configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
        printLocalTime();        
    }        

}

void loop() {
    delay(5000);
    printLocalTime();   
}

1 thought on “ESP32 WiFi Manager dan NTP Client”

  1. Pingback: ESP32 WiFi Manager OnDemandConfig - Stelselmatig

Leave a Comment

Your email address will not be published. Required fields are marked *