Tijd synchronisatie ESP via UDP

Software vragen voor ESP chip familie
Gebruikers-avatar
Berichten: 161
Geregistreerd: 22 Jan 2013, 16:40

Tijd synchronisatie ESP via UDP

Berichtdoor zuid » 27 Dec 2019, 19:35

Mij is er op gewezen (@Koepel) dat in het voorbeeld LittleFS_Timestamp de tijd op de esp32 module via UDP wordt ingesteld.
In het voorbeeld wordt in de SETUP de code gebruikt:
Code: Alles selecteren
//init and get the time

  configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
  printLocalTime();
  //disconnect WiFi as it's no longer needed
  WiFi.disconnect(true);
  WiFi.mode(WIFI_OFF);

}


Met de instructie configTime(….)wordt m.i. de tijd EENMALIG ingesteld en moet de ESP verder het "zelf" doen.
Hierbij wordt ook de variabele time(NULL) op de juiste tijd gezet en dit wordt weer gebruikt om de LittleFS write time in te stellen
De code lijkt mij minder geschikt om in een LOOP de tijd periodiek te controleren.

Weet iemand of er naast configTime nog een variant is waarmee de tijd in de LOOP via UDP kan worden gesynchroniseerd.
mvg Nico

Advertisement

Gebruikers-avatar
Berichten: 2491
Geregistreerd: 06 Aug 2016, 01:03

Re: Tijd synchronisatie ESP via UDP

Berichtdoor Koepel » 27 Dec 2019, 20:24

Waar baseer je op dat de NTP server eenmalig wordt aangeroepen ?
Begrijp jij dan wel de sntp module ?

Voor de ESP32 heb ik veel geleerd van randomnerdtutorials.com, en die heeft ook een voorbeeld met zelf de NTP aanroepen: https://randomnerdtutorials.com/esp32-ntp-client-date-time-arduino-ide/

Gebruikers-avatar
Berichten: 161
Geregistreerd: 22 Jan 2013, 16:40

Re: Tijd synchronisatie ESP via UDP

Berichtdoor zuid » 28 Dec 2019, 07:37

Kort antwoord NEE.
Ik baseer mij op het feit dat het in de schets slecht eenmaal de tijd synchronisatie wordt aangeroepen.
Ik begreep wel dat er een snpt module is, echter documentatie heb ik niet gevonden.
En mijn C++ kennis is beperkt, meer met Google bezig dan met programmeren :)
Bedankt voor je verwijzing naar random tutorials. Weer wat te lezen.
NTP / UDP had ik al opgelost via een andere manier, daarbij wordt echter time(NULL) niet gebruikt.
Dat is een voorwaarde voor de werking van TimeStamp (zonder call back)
mvg Nico

Gebruikers-avatar
Berichten: 161
Geregistreerd: 22 Jan 2013, 16:40

Re: Tijd synchronisatie ESP via UDP

Berichtdoor zuid » 28 Dec 2019, 08:22

@Koepel Misschien leuk om eens te proberen in het voorbeeld LittleFS_Timestamp
Plaats een delay(60000) voor laatste readFile:
Code: Alles selecteren
delay(60000);
readFile("/hello.txt");
  listDir("/");

Gebruikers-avatar
Berichten: 2491
Geregistreerd: 06 Aug 2016, 01:03

Re: Tijd synchronisatie ESP via UDP

Berichtdoor Koepel » 28 Dec 2019, 18:11

Voor mij is de ESP32 en ESP8266 ook nieuw, en dit is allemaal verwarrend :roll:

Het voorbeeld "LittleFS_Timestamp" is voor de ESP8266, terwijl je begon met de ESP32.

Dat voorbeeld ga ik natuurlijk niet zo gebruiken, die timeservers werken niet goed bij mij. Als jij de normal timeserver gebruikt ("pool.ntp.org") zou je dat erbij willen vermelden ?

Met een normale timeserver is het na de delay een minuut later, terwijl er alleen een 'read' heeft plaatsgevonden :o Bedoel je dat ?
Of bedoel je dat als je timeservers gebruikt die het niet doen, dat de ESP8266 dan na een minuut toch de tijd heeft ? Dat wordt hier uitgelegd: https://forum.arduino.cc/index.php?topic=655222.0. De ESP8266 onthoudt de Wifi gegevens en gaat zelf de tijd opvragen. Of dat ergens gedocumenteerd is weet ik ook niet.

Het is dus de vraag in hoeverre die tijd van getLastWrite() ook echt bij dat bestand hoort. Ik ga dat nu niet uitzoeken, maar ergens klopt er volgens mij iets niet.

Bij de ESP32 met SPIFFS zou ik de tijd van een bestand willen weten dat ik vanaf de computer (via de Arduino IDE) heb geupload. Dat lijkt helaas niet mogelijk. Misschien een jaar wachten totdat ze dat werkend hebben ;)

Gebruikers-avatar
Berichten: 161
Geregistreerd: 22 Jan 2013, 16:40

Re: Tijd synchronisatie ESP via UDP

Berichtdoor zuid » 28 Dec 2019, 18:55

De verwijzing naar het ESP8266 voorbeeld was meer een verwijzing naar een FOUT. (had dus niets te maken met de eerste post, sorry)
Als je het voorbeeld aanvult met de delay(60000) zal je in de output kunnen zien dat het file van tijd verandert.
Het file wordt NIET gewijzigd dus er is geen noodzaak om de lastWrite time te veranderen.
Het viel mij op dat in mijn schets datum tijd van een css file veranderde.
Daarna zag ik dat alle files die gelezen werden een andere tijd kregen.
Ik heb geen ESP32 of het probleem daar ook speelt weet ik niet.

PS IK gebruik de upload via de IDE niet. Ik heb alle benodigde upload zelf in mijn schets geregeld.
Er is dus een html pagina geprogrammeerd met en lijst van de bestanden, en een mogelijkheid van upload.

Gebruikers-avatar
Berichten: 2491
Geregistreerd: 06 Aug 2016, 01:03

Re: Tijd synchronisatie ESP via UDP

Berichtdoor Koepel » 28 Dec 2019, 19:03

Dus de conclusie is dat het niet werkt ? Het is niet de datum van het bestand.

Gebruikers-avatar
Berichten: 161
Geregistreerd: 22 Jan 2013, 16:40

Re: Tijd synchronisatie ESP via UDP

Berichtdoor zuid » 28 Dec 2019, 19:23

Nee het is WEL de datum van het bestand.
Verander de delay maar in een nog langere periode en je zal zien dat de tijd van het bestand mee verandert.
Als je het formatteren van het LittleFS aan het begin weghaalt, is het zelfs mogelijk, na herstart, bij de eerste list directory die tijd van het bestand opnieuw te zien.
Het is dus een fout in de software LittleFS.
Probleem zit waarschijnlijk ook in de SDFS versie.
Helaas heeft die versie voor ik het probleem goed kon vastleggen de SD kaart onbruikbaar gemaakt.
Corrupt, niet te lezen in mijn project maar ook niet via een Windows PC. Nog wel met Ubuntu PC :)

Terug naar ESP Software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast