#include <WiFi.h>
#include <esp_sntp.h>
#include "ds1307.h"
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* ntpServer = "europe.pool.ntp.org";
void printTime() {
struct tm tim;
time_t now;
// IPAddress srv((uint32_t)0);
// uint32_t start = millis();
// if (WiFi.hostByName(ntpServer, srv))
// if (!getLocalTime(&tim)) {
// Serial.println("Could not obtain time info");
// return;
// }
//Serial.println(millis()-start);
//Serial.println(time(&now));
struct timeval nulltime;
Serial.printf("nulltime: %d\n",nulltime.tv_sec);
uint32_t start = micros();
//Serial.println(micros()-start);
struct timeval tv;
//if (gettimeofday(&tv, NULL)!= 0) {
// Serial.println("Failed to obtain time");
// return;
//}
Serial.printf("time(&now): %d\n",time(&now));
tim = *localtime(&now);
Serial.printf("tv: %d\n",tv.tv_sec);
Serial.println(&tim, "%H:%M:%S");
}
uint32_t startTime[5];
bool elapsed(uint32_t delay, uint8_t num = 0)
{
if (!startTime[num])
startTime[num] = millis();
if (millis() - startTime[num] >= delay)
{
startTime[num] = 0;
return true;
}
else
return false;
}
void setup()
{
pinMode(13, OUTPUT);
Serial.begin(115200);
sntp_set_time_sync_notification_cb([](timeval *v){
Serial.println("SNTP Sync");
time_t now;
time(&now);
Serial.println(now);
});
sntp_set_sync_interval(15000);
Serial.println(sntp_get_sync_interval());
WiFi.begin(ssid, password);
Serial.print("Connecting");
WiFi.onEvent([WiFi](arduino_event_id_t event, arduino_event_info_t info){
switch (event)
{
case ARDUINO_EVENT_WIFI_STA_CONNECTED:{
Serial.printf("{\"m\":%d,\"1\":[\"STA\",\"%s\",\"%s\"],\"2\":[\"AP\",\"%s\",\"%s\"],\"3\":[\"AP_STA\"],\"c\":\"%d\"}",WiFi.getMode(),WiFi.SSID(),WiFi.psk(),WiFi.softAPSSID(),String("sdfsf"),WiFi.isConnected());
Serial.print("SSID: ");Serial.println(WiFi.SSID());
Serial.print("PSK: ");Serial.println(WiFi.psk().isEmpty());
Serial.println((char*)info.wifi_sta_connected.ssid);
IPAddress srv((uint32_t)0);
WiFi.hostByName("index.hu",srv);delay(2000);
Serial.printf("Server ip: %s\n",srv.toString());}
break;
case ARDUINO_EVENT_WIFI_STA_DISCONNECTED:
default:
break;
}
},ARDUINO_EVENT_MAX);
// while (WiFi.status() != WL_CONNECTED) {
// delay(500);
// Serial.print(".");
// }
Serial.println();
Serial.println("Connected with success");
const timeval tv = {.tv_sec = 214748};
settimeofday(&tv, nullptr);
configTzTime("CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00", ntpServer);
uint8_t datas[56];// = {'o','b','c','d','e','f','g','h'};
uint8_t datas1[56];
for(byte i=0; i<56;i++){
datas[i] = i;
//Serial.println(datas[i]);
}
DSRTCbegin();
DSRTCwriteNVRAM(datas,56);
DSRTCreadNVRAM(datas1,56);
for(byte i= 0; i<56; i++){
Serial.println(datas1[i]);
}
delay(3000);
}
void loop()
{
tm tim;
if(Serial.available()){
String str = Serial.readStringUntil('\n');
configTzTime("CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00", str.c_str());
}
printTime();
const time_t t = time(nullptr);
tim = *localtime(&t);
Serial.println(&tim, "%c");
Serial.printf("%d:%d:%d\n",t % 86400/3600, t % 3600/60, t % 60);
//tm dst = DS1307getTime();
//Serial.println(&dst, "%c");
char* temp = "19.3";
Serial.println(String(round(((String)(temp)).toFloat()*10)/10,1));
IPAddress srv((uint32_t)0);
Serial.println(WiFi.hostByName("telex.hu",srv));
Serial.printf("Server ip: %s\n",srv.toString());
if(elapsed(15000)){
WiFi.begin(ssid, password);
}
delay(1000);
}