Data e ora su ESP8266

Buongiorno,
per visualizzare ora e data tramite una ESP8266 ho importato la libreria NTPClient.
Purtroppo funziona solo per l'orario, ma non per la data.
Ho letto che la funzione che serve a me (e che manca nella libreria che sto usando) è
la funzione che sto provando ad utilizzare è getFormattedDate()

Ho letto che dovrei usare la libreria GitHub - taranais/NTPClient: Connect to a NTP server

Ma perchè se la cerco su Platform.io non la trovo?
Come aggiungo su vscode+Platform.io una libreria specifica se non viene trovata direttamente dall'IDE?

EDIT: ho risolto per la data seguendo questo: ESP8266 NodeMCU NTP Client-Server: Get Date and Time (Arduino IDE)
Anche se mi resta il dubbio su come usare una libreria che l'IDE non trova.
Grazie

pulce:
Buongiorno,
per visualizzare ora e data tramite una ESP8266 ho importato la libreria NTPClient.

Su ESP8266 (e ESP32) non servono librerie esterne per sincronizzare ora e data con server NTP.
Dai un'occhiata agli esempi inclusi ed in particolare all'esempio NTPClient.ino dove mostra come fare una chiamata "grezza" al server e interpretare la risposta, o ancora meglio l'esempio NTP-TZ-DST.ino dove una volta impostato correttamente i server NTP, l'ESP8266 gestisce tutto in background compreso timezone e la transizione dell'ora solare/legale.
Nell'esempio ci sono un sacco di funzioni per mostrare tutte le possibilità, ma di fatto l'unica davvero necessaria è:

configTime(MYTZ, "pool.ntp.org", "time.google.com" );  // Si possono impostare fino a 3 NTP server diversi

E quando serve usare il timedate aggiornato un possibile modo

tm* timeinfo;                // puntatore a tm che strftime è una struttura che contiene giorno, mese, anno, ora, minuti, secondi etc etc
time_t now = time(nullptr);  // now ora contiene data e ora aggiornati in formato "unix time"
timeinfo = localtime(&now);  // aggiorna la struct timeinfo con data e ora corrente

Serial.print("Data: "); 
Serial.printf("%02d / %02d / %04d", tm_info->tm_mday, tm_info->tm_mon+1,  tm_info->tm_year+1900);

(ci sono istruzioni C specifiche per formattare un char array partendo da un timedate come **strftime **, ma qui uso un semplice printf che probabilmente è più chiaro)

avevo provato in quel modo, ma appena aggiungo

configTime(MYTZ, "pool.ntp.org", "time.google.com" );

ottengo errore

pulce:
ottengo errore

Parti dall'esempio completo!
Io ho solo scritto le istruzioni minime necessarie, ma mancano tutti gli #include che servono e il #define di MYTZ
NTP-TZ-DST.ino

Bello, guarderò quelle librerie.
Ma sto usando anche io la NTPClient, che uso per sincronizzare i miei Wemos per scaricare dati su MySql tutte le notti, e la cosa bella che ho apprezzato è che una volta sincronizzati possono anche rimanere senza collegamento internet perché la libreria fa anche da RTC software.
Le istruzioni senza librerie che hai postato hanno questa funzione oppure se non c’è rete non c’è orario?

Comunque con la libreria NTPClient usi tre istruzioni, con il tuo esempio ce ne vogliono almeno 20…

steve-cr:
Ma sto usando anche io la NTPClient

La libreria NTPClient (almeno quella che ho trovato online) fa un collegamento al server NTP quando chiami il metodo update() se c'è connessione, in caso contrario aggiorna usando millis()
Le librerie interne al core fanno più o meno la stessa cosa sincronizzando il timestamp con il configTime() e poi usando i timer interni del micro per mantenerlo aggiornato, ma usando istruzioni "più vicine" all'SDK Espressif che di fatto sono le stesse supercollaudate disponibili in C/C++

Io tendenzialmente quando sviluppo un progetto cerco di mantenere le dipendenze esterne al minimo indispensabile e quindi se ci sono librerie/funzioni già disponibili nel core cerco di usarle più che posso.

Riguardo al numero delle istruzioni nel post ho messo l'accesso ai singoli elementi della struttura solo a scopo di esempio.
Le istruzioni necessarie per printare l'ora aggiornata in formato leggibile sono il configTime() nel setup ed il time() per acquisire il timestamp corrente (equivalente all'update() della libreria NTPClient) e poi si può stampare con diversi metodi.

C'è da notare che io ho dichiarato tutto locale, ma nessuno vieta di dichiarare la struct timeinfo (se è necessario accedere singolarmente a giorno, mese etc etc ad esempio per avere un formato di stampa "custom") e time_t now a livello globale per semplificare ulteriormente.

// Variabili globali
time_t now = time(nullptr);
tm* timeinfo; 

//dove serve
{
  time(&now);                          // Aggiorno now con il valore corrente
  Serial.printf("%s", ctime(&now));    // Stampo sulla seriale con formato predefinito "Www Mmm dd hh:mm:ss yyyy"
  
  // Opzionale
  timeinfo = localtime(&now);          // Da timeinfo posso recuperare ore, giorni, anno etc senza dover dichiarare ulteriori variabili
  ........
}

Bella.
La proverò sicuramente