// НЕ ЗАБУДЬ АКТУАЛИЗИРОВАТЬ ПИНЫ ПО НА РЕАЛЬНОМ ЖЕЛЕЗЕ
// Vcc  - 3v3
// GND  - GND.1
// CS   - D15
// RST  - D4 - не обязателен ?
// DC   - D2
// MOSI - D23
// SCK  - D18
// LED  - 
// MISO - D19 - не обязателен ?
// ----------------------------------------------------
#include <Arduino.h>
#include <TFT_eSPI.h>   
#include <WiFi.h>
#include <PubSubClient.h>
#include "time.h"


const char* ssid = "Wokwi-GUEST";
const char* password = "";           
const char* ntpServer0 = "0.pool.ntp.org";
const char* ntpServer1 = "1.pool.ntp.org";
const char* ntpServer2 = "2.pool.ntp.org"; // сервера для сихронизации времени.
const long  gmtOffset_sec = 0;
const int   daylightOffset_sec = 10800;
unsigned long lastConnectionTime = 0; // время последней передачи данных
#define postingInterval  600000 // интервал между отправками данных (10 минут)

TFT_eSPI tft = TFT_eSPI();


void setup() {
  
  Serial.begin(74880);
  tft.init();
  tft.setRotation (0);                                                        
  tft.fillScreen (TFT_BLACK);
  tft.setTextSize (1);
  tft.println ("network ");
  tft.println ("connecting");
  
  WiFi.begin (ssid, password);
  Serial.println ("connecting");
    while(WiFi.status() != WL_CONNECTED) {
    delay (500);
    Serial.print (".");
    tft.print ("."); 
   }
  Serial.println ();
  Serial.print ("Connected to WiFi network ");
  tft.println ("\nConnected to WiFi network ");  
  tft.println ();
  Serial.print (ssid);
  tft.print (ssid); 
   
       
  Serial.print (" - IP adress: ");
  tft.print (" - IP adress: ");
  Serial.println (WiFi.localIP());
  tft.println (WiFi.localIP());

tft.fillScreen(TFT_BLACK); tft.setCursor(0, 36); tft.print(WiFi.localIP());
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer0, ntpServer1, ntpServer2);
printLocalTime();

}

void loop() {

unsigned long current  = millis();
static unsigned long previous = current;
if (current - previous > 1000) {previous = current;
// что-то делается
printLocalTime();
  }

}




void printLocalTime()
{
  struct tm timeinfo;
  if(!getLocalTime(&timeinfo)){
   // display.setColor(BLACK);
 tft.fillRect(0, 47, 128, 9, TFT_BLACK); tft.setCursor(0, 45); tft.print("Failed to obtain time");
    return;
  }
 
  char timeStringBuff[50]; //50 символов должно быть достаточно
  strftime(timeStringBuff, sizeof(timeStringBuff), "%a  %d %b %y  %H:%M:%S", &timeinfo);
 //display.setColor(BLACK);
 tft.fillRect(0, 47, 128, 9, TFT_BLACK); tft.setCursor(0, 45); tft.print(String(timeStringBuff));
}