Ich habe mal das Programm noch ein wenig übersichtlicher gamacht. 
Das Display der ESP32 Uhr zeigt jetzt in der ersten Zeile Datum Uhrzeit an, wo der ESP32 zuletzt die Zeit aus dem Internet geholt hat. Und in Zeile 3 und Zeile 4, das Aktuelle Datum, mit der aktuellen Uhrzeit. Ich hole im Moment die Zeit noch um 00:00 Uhr, was aber eigentlich nicht so toll ist, weil die Zeit in der Nacht der Umstellung (Sommer/Winter), glaube ich, um 04:00 Uhr morgens aktuallisiert wird. Da macht es keinen Sinn, um 00:00 Uhr die Zeit vom Server zu holen, da dann den ganzen folgenden Tag die Zeit um eine Std. falsch ist.  
 
   
 
Das kleine OLED - Display; unten im Bild; zeigt zwei Spannungen an, mit einem ADS1115 Sensor gemessen. Die Analog Eingänge am ESP32 kann man nach meiner Meinung nur zum Spannung schätzen verwenden. Also schauen ob Spannung anliegt, nicht aber genau, welche Spannung anliegt. Aber der ADS1115 ist für kleines Geld zu haben und kann auf 4 Kanälen also 4 verschiedene Spannungen messen. Und das in einer Auflösung, wie man sie auf normalen 08/15 Messgeräten auch hat. Der erste Wert (1,54 Volt) ist die auf einen Poti eingestellte Spannung, der zweite Wert (3,30 Volt) ist die Betriebsspannung der beiden ESP32. 
Hier mal das aktuelle Bild:
.
			
		
				
			 
- ESP32_NTP_Zeit_02.jpg (786.35 KiB) 11156 mal betrachtet
 
Hier das aktuelle Programm dazu:
Code: Alles auswählen
#include <WiFi.h>
//#define NTP_SERVER "de.pool.ntp.org"
#define NTP_SERVER "Fritz.Box"
#define TZ_INFO "WEST-1DWEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00" // Western European Time
#include <Tone32.h>
#define BUZZER_PIN 16
#define BUZZER_CHANNEL 0
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
//---------------------Setup---------------------------
void setup()
{
  lcd.begin();
  lcd.backlight();
  Serial.begin(9600);
  lcd.setCursor (0, 0);
  lcd.print (F(" NTP Server Abfrage "));
  NTP_Zeit();
}
//---------------------LOOP---------------------------
void loop()
{
  tm local;
  getLocalTime(&local);
  lcd.setCursor (0, 2);
  lcd.print(&local, " Datum:    %d.%m.%y");
  lcd.setCursor (0, 3);
  lcd.print(&local, " Zeit :    %H:%M:%S");
  /*
    struct tm enthält diese Atribute:
    ===============================================
    Member   Type  Meaning                   Range
    tm_sec   int   seconds after the minute  0-60*
    tm_min   int   minutes after the hour    0-59
    tm_hour  int   hours since midnight      0-23
    tm_mday  int   day of the month          1-31
    tm_mon   int   months since January      0-11
    tm_year  int   years since 1900
    tm_wday  int   days since Sunday         0-6
    tm_yday  int   days since January 1      0-365
    tm_isdst int   Daylight Saving Time flag
    ==============================================
  */
  //00:00:XX = 3600(=1 Std) * std = 0 + min = 0 * 60 = 0 + sec = maximal 59 sec
  uint32_t nbSek = 3600ul * local.tm_hour + local.tm_min * 60ul + local.tm_sec;
  if (nbSek <= 2) // zwischen 00:00:00 Uhr und 00:00:59 Uhr Zeit vom NTP holen
  {
    NTP_Zeit();
  }
}
//----------------WIFI Verbindung---------------------
void NTP_Zeit()
{
  lcd.setCursor (0, 1);
  lcd.print(F("Zeitserver verbinden"));
  WiFi.mode(WIFI_STA);
  WiFi.begin("Name", "Passwort");
  while (WiFi.status() != WL_CONNECTED) // Ist WLAN Connect?
  {
    delay(500);
  }
  lcd.setCursor (0, 1);
  lcd.print(F("++ Hole NTP Zeit ++ "));
  struct tm local;
  configTzTime(TZ_INFO, NTP_SERVER); // ESP32 Systemzeit mit NTP Synchronisieren
  getLocalTime(&local, 10000);      // Versuche 10 s zu Synchronisieren
  WiFi.mode(WIFI_OFF);
  lcd.setCursor (0, 0);
  lcd.print(&local, " vom %d.%m um %H:%M ");
  lcd.setCursor (0, 1);
  lcd.print(F("--------------------"));
  //Die Töne sind C4-D4-E4-F4-G4-A4-B4
  tone(BUZZER_PIN, NOTE_C4, 200, BUZZER_CHANNEL);
  noTone(BUZZER_PIN, BUZZER_CHANNEL);
  tone(BUZZER_PIN, NOTE_D4, 200, BUZZER_CHANNEL);
  noTone(BUZZER_PIN, BUZZER_CHANNEL);
  tone(BUZZER_PIN, NOTE_E4, 500, BUZZER_CHANNEL);
  noTone(BUZZER_PIN, BUZZER_CHANNEL);
 
}