Hi,
I came across a strange effect: If I connect my esp8266 to WiFi, next SD write operation gives an actual timestamp without any setTime operations in my code.
How does it come? I could not find any documentation about it.
Does this mean, that I have access to actual time information just by connecting to WiFi and without implementing any NTP stuff?
Uli
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <SPI.h>
#include <SD.h>
char dataBlock[100];
// WiFi connection
const char* ssid = "SSID";
const char* password = "PASS";
void WiFiStart();
/////////////////////
// the setup routine
/////////////////////
void setup()
{
// start serial
Serial.begin(115200);
delay(1000);
//Serial.printf("Size %d\n",sizeof(struct_alles));
Serial.println("Timestamp - Test");
Serial.println("Build: " __TIME__ " " __DATE__ );
Serial.println(__FILE__);
Serial.print("Initializing SD-Card...");
if(!SD.begin(16))
Serial.println("ERROR !!");
else
Serial.println("OK.");
write_FS("After_SD_Begin");
// inital connect
WiFi.mode(WIFI_STA);
WiFi.hostname("Timestamp");
WiFiStart();
write_FS("After_WiFiStart");
}
void write_FS(String FileName)
{
Serial.println();
File mySDFile = SD.open(FileName,FILE_WRITE);
if (!mySDFile)
Serial.println(F("ERROR opening file on SD-card for writing!"));
else
{
mySDFile.seek(0);
mySDFile.write(dataBlock,sizeof(dataBlock));
Serial.println(F("File written on SD-Card."));
mySDFile.close();
}
}
///////////////////
// (re-)start WiFi
///////////////////
void WiFiStart()
{
// Connect to WiFi network
Serial.printf("Connecting to %s\n",ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.printf("\nWiFi connected\n");
// Print the IP address
Serial.println(WiFi.localIP());
}
void loop()
{
}