SPIFFS / SDFS fileTime en/of getLastWrite.
12 berichten
• Pagina 1 van 2 • 1, 2
SPIFFS / SDFS fileTime en/of getLastWrite.
Ik probeer een bestanden lijst webpagina te maken voor zowel SPIFFS als voor SDFS.
Volgens de documetatie van het file systeem
https://arduino-esp8266.readthedocs.io/en/latest/filesystem.html
is er een (datum) tijd, van de laatste WRITE beschikbaar per bestand.
Het is me echter nog niet gelukt dit ook zichtbaar te maken.
Heeft iemand dit al eens wel goed kunnen programmeren.
Volgens de documentatie zijn er twee variant voor het ophalen van die wijzigingsdatum.
Beide geven bij mij een NUL.
m.v.g Nico
Volgens de documetatie van het file systeem
https://arduino-esp8266.readthedocs.io/en/latest/filesystem.html
is er een (datum) tijd, van de laatste WRITE beschikbaar per bestand.
Het is me echter nog niet gelukt dit ook zichtbaar te maken.
Heeft iemand dit al eens wel goed kunnen programmeren.
Volgens de documentatie zijn er twee variant voor het ophalen van die wijzigingsdatum.
Beide geven bij mij een NUL.
m.v.g Nico
- Code: Alles selecteren
// MENU en SPIFFS bestand lijst =================================================================
void handleMenu() {
webServer = "<!DOCTYPE html>\n"
"<html>\n"
"<head>\n"
" <link rel=\"stylesheet\" href=\"styl1.css\">"
" <link rel=icon href=/favicon.ico type=image/x-icon>"
" <title>Menu</title>\n"
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n"
"<body>\n"
"<table class=\"center\"><tr><td class=\"groot\" colspan=3> MENU </td></tr>\n"
"<tr><th class=\"kleinL\">Naam</th><th class=\"kleinL\">Omschrijving</th><th></th></tr>\n"
"<tr><td class=\"klein\"><form action=/menu><input type=submit value=menu size=8></form></td>\n"
"<td class=\"klein\">Dit menu</td></tr>\n"
"<tr><td class=\"klein\"><form action=/menu>\n"
"<input type=hidden name=delete value=del>\n"
"<input type=submit value=menu size=8></form></td>\n"
"<td class=\"klein\">Idem, met file delete functie</td></tr>\n"
"<tr><td class=\"klein\"><form action=/weer><input type=submit value=weer></form></td>\n"
"<td class=\"klein\">Pagina met actueel weer</td></tr>\n"
"<tr><td class=\"klein\"><form action=/grafiek><input type=submit value=grafiek></form></td>\n"
"<td class=\"klein\">24 uurs temperatuur grafiek</td></tr>\n"
"<tr><td class=\"klein\"><form action=/status><input type=submit value=status></form></td>\n"
"<td class=\"klein\">Pagina met de status van het programma</td></tr>\n"
"</table><br>\n"
"<table class=\"center\"><tr><td colspan=4 class=\"groot\"> BESTANDEN </td></tr>\n"
"<tr><th class=\"kleinL\">Naam</th><th>Gewijzigd op</th><th>Grootte</th></tr>\n";
Dir dir = SPIFFS.openDir("/");
while (dir.next()) {
webServer += "<tr><td class=\"klein\"><a href=\n";
webServer += dir.fileName();
webServer += ">";
webServer += dir.fileName();
webServer += "</a></td><td class=\"klein\">";
File f = dir.openFile("r");
webServer += f.getLastWrite(); // VARIANT 1
webServer += " \;";
webServer += dir.fileTime(); // VARIANT 2
f.close();
webServer += "</td><td class=\"klein\">\n";
webServer += dir.fileSize();
webServer += "</td>\n";
if(server.arg(0) == "del"){
webServer += "<td><form action=/update >"
"<input type=hidden name=delete value=\"";
webServer += dir.fileName();
webServer += "\">\n<input type=submit value=delete>\n"
"</form></td>\n";
}
webServer += "</tr>\n"; }
webServer += "</table><br>"
"<table class=\"center\"><tr><td class=\"groot\">UPLOAD</td></tr>\n"
"<tr><td>\n"
"<form action=/update method=\"post\" enctype=\"multipart\/form-data\">\n"
"<input type=\"file\" name=\"name\" required><br>\n"
"<input type=submit value=Upload></form>\n"
"</td></tr>\n";
webServer += "</table></body></html>\n";
server.send(200, "text/html", webServer);
}
Advertisement
- Gij Kieken
- Berichten: 631
- Geregistreerd: 15 Nov 2015, 11:54
Re: SPIFFS / SDFS fileTime en/of getLastWrite.
Hallo ,Zuid
Zelf heb ik het nog niet geprobeerd maar moet je niet eerst een setTimeCallback functie oproepen om dit te kunnen verkrijgen?
Zelf heb ik het nog niet geprobeerd maar moet je niet eerst een setTimeCallback functie oproepen om dit te kunnen verkrijgen?
Re: SPIFFS / SDFS fileTime en/of getLastWrite.
Volgens de documentatie zou dat niet nodig zijn.
Niet nodig maar het helpt ook niet. In mijn programma heb ik dat ook geprobeerd.
Ik kan helaas ook nergens een voorbeeld vinden.
m.v.g. Nico
setTimeCallback(time_t (*cb)(void))
If your app sets the system time using NTP before file operations, then you should not need to use this function.
Niet nodig maar het helpt ook niet. In mijn programma heb ik dat ook geprobeerd.
Ik kan helaas ook nergens een voorbeeld vinden.
m.v.g. Nico
Re: SPIFFS / SDFS fileTime en/of getLastWrite.
Met de ESP32 werkt het wel.
Deze functies gebruikte ik: https://github.com/espressif/arduino-esp32/blob/master/libraries/SPIFFS/examples/SPIFFS_time/SPIFFS_time.ino.
Ik heb een bestand geupload via de "Sketch Data Upload" vanuit de Arduino IDE volgens dit: https://randomnerdtutorials.com/install-esp32-filesystem-uploader-arduino-ide/.
Bij een upload vauit de Arduino IDE is de tijd van een bestand helaas 0.
Vanuit de ESP32 bleef de tijd in eerste instantie ook 0.
Pas nadat ik de ESP32 op de juist tijd had gezet met hulp van een NTP server en ik deed bijvoorbeeld een append aan een bestand vanuit de ESP32, dan pas staat de tijd van het bestand er in.
Het voorbeeld "SPIFFS_time.ino" zet vanzelfsprekend ook eerst de tijd, en pas daarna worden de testen met het bestand gedaan. Op die manier werkt het.
Deze functies gebruikte ik: https://github.com/espressif/arduino-esp32/blob/master/libraries/SPIFFS/examples/SPIFFS_time/SPIFFS_time.ino.
Ik heb een bestand geupload via de "Sketch Data Upload" vanuit de Arduino IDE volgens dit: https://randomnerdtutorials.com/install-esp32-filesystem-uploader-arduino-ide/.
Bij een upload vauit de Arduino IDE is de tijd van een bestand helaas 0.
Vanuit de ESP32 bleef de tijd in eerste instantie ook 0.
Pas nadat ik de ESP32 op de juist tijd had gezet met hulp van een NTP server en ik deed bijvoorbeeld een append aan een bestand vanuit de ESP32, dan pas staat de tijd van het bestand er in.
Het voorbeeld "SPIFFS_time.ino" zet vanzelfsprekend ook eerst de tijd, en pas daarna worden de testen met het bestand gedaan. Op die manier werkt het.
Re: SPIFFS / SDFS fileTime en/of getLastWrite.
NTP tijd wordt bij mij ook als eerste gezet.
Maar ook heb ik de Callback functie opgenomen.
Append had ik nog niet geprobeerd. Zojuist dat ook nog even getest, maar helaas geen resultaat.
Ik heb nu drie varianten zonder resultaat.
1.Upload via een http POST.
2.Nieuw bestand (open w+)
3.Append bestaand bestand (open a)
Wie heeft een werkend voorbeeld voor een ESP8266
m.v.g. Nico
Maar ook heb ik de Callback functie opgenomen.
Append had ik nog niet geprobeerd. Zojuist dat ook nog even getest, maar helaas geen resultaat.
Ik heb nu drie varianten zonder resultaat.
1.Upload via een http POST.
2.Nieuw bestand (open w+)
3.Append bestaand bestand (open a)
Wie heeft een werkend voorbeeld voor een ESP8266
m.v.g. Nico
Re: SPIFFS / SDFS fileTime en/of getLastWrite.
Ook de ESP8266 werkt.
In het menu zit dit voorbeeld: https://github.com/esp8266/Arduino/blob/master/libraries/LittleFS/examples/LittleFS_Timestamp/LittleFS_Timestamp.ino.
Daar vulde ik mijn Wifi naam en wachtwoord in en ik wijzigde de NTP:
Dat werkte ook.
Bij de ESP32 kun je kiezen uit een standaard SPIFFS en een LittleFS voor het interne geheugen. Bij de ESP8266 lijkt er alleen de LittleFS te zijn.
In het menu zit dit voorbeeld: https://github.com/esp8266/Arduino/blob/master/libraries/LittleFS/examples/LittleFS_Timestamp/LittleFS_Timestamp.ino.
Daar vulde ik mijn Wifi naam en wachtwoord in en ik wijzigde de NTP:
- Code: Alles selecteren
configTime(3600 * timezone, daysavetime * 3600, "pool.ntp.org");
Dat werkte ook.
Bij de ESP32 kun je kiezen uit een standaard SPIFFS en een LittleFS voor het interne geheugen. Bij de ESP8266 lijkt er alleen de LittleFS te zijn.
Re: SPIFFS / SDFS fileTime en/of getLastWrite.
Die had ik nog niet gevonden. Ik had wel SDFS variant ook geprobeerd echter ook nog zonder resultaat.
Nu maar eens met het LittleFS voor beeld aan de slag.
Dank voor het mee zoeken/helpen.
Nu maar eens met het LittleFS voor beeld aan de slag.
Dank voor het mee zoeken/helpen.
Re: SPIFFS / SDFS fileTime en/of getLastWrite.
Het LittleFS voorbeeld werkt bij mij (meestel) ook.
Ik zie in de code van dit voorbeeld nog wel iets wat ik niet begrijp.
Er staat:
Dit lijkt mij het oproepen van de functie configTime(parameter1, parameter2, parameter3 ……);
Alleen kan ik niet vinden waar deze functie daadwerkelijk staat.
Niet in de code van het voorbeeld maar ook niet in de #include van time.h
Ik probeer te begrijpen hoe de NTP tijd wordt geregeld.
De hier gebruikte manier was ik nog niet eerder tegen gekomen.
Wie helpt?
m.v.g. Nico
Ik zie in de code van dit voorbeeld nog wel iets wat ik niet begrijp.
Er staat:
- Code: Alles selecteren
configTime(3600 * timezone, daysavetime * 3600, "time.nist.gov", "0.pool.ntp.org", "1.pool.ntp.org");
Dit lijkt mij het oproepen van de functie configTime(parameter1, parameter2, parameter3 ……);
Alleen kan ik niet vinden waar deze functie daadwerkelijk staat.
Niet in de code van het voorbeeld maar ook niet in de #include van time.h
Ik probeer te begrijpen hoe de NTP tijd wordt geregeld.
De hier gebruikte manier was ik nog niet eerder tegen gekomen.
Wie helpt?
m.v.g. Nico
Re: SPIFFS / SDFS fileTime en/of getLastWrite.
Vul gewoon de NTP server in zoals ik al schreef:
De tijdzone klopt volgens mij niet, maar dat mag je zelf oplossen.
Hier schreef ik al: "zo eenvoudig kan het zijn": http://arduinoforum.nl/viewtopic.php?f=8&t=4088#p27354. Dus je had het kunnen weten Dat voorbeeld zit er al een tijdje bij.
Het lijkt er op dat de ESP32 en ESP8266 omgeving de functie prototyping hebben toegevoegd aan "Arduino.h".
Bij de ESP8266 zit de functie zelf in "time.cpp" en bij de ESP32 in "esp32-hal-time.c".
Je kunt zelf de bestanden vinden waar configTime wordt gebruikt: https://www.google.nl/search?q=site%3Agithub.com%2Fesp8266%2FArduino%2Fblob%2Fmaster%2Fcores%2Fesp8266%2F+configTime
Documentatie ? Doe iets met de tijdzone, iets met zomer/winter-tijd en een NTP server. Dat is het zo'n beetje.
Er zijn inmiddels veel verschillende "time" libraries. Dit is echt iets van de ESP32 en ESP8266 omgeving zelf.
Volgens mij is het goed opletten om ze niet door elkaar te gebruiken.
Dit zijn volgens mij de meest gangbare:
- TImeLib (onderhouden door Paul Stoffregen)
- RTClib (Adafruit)
- De standaard 'time' zoals die al heel lang bij de 'c' taal hoort. Die kan tegenwoordig door de GNU C++ compiler meegelinkt worden voor de Arduino boards.
- De officiële RTC library voor de Arduino Zero/MKR/M0, gemaakt en onderhouden door Arduino.
- De ESP32/ESP8266 time.
- Code: Alles selecteren
configTime(3600 * timezone, daysavetime * 3600, "pool.ntp.org");
De tijdzone klopt volgens mij niet, maar dat mag je zelf oplossen.
Hier schreef ik al: "zo eenvoudig kan het zijn": http://arduinoforum.nl/viewtopic.php?f=8&t=4088#p27354. Dus je had het kunnen weten Dat voorbeeld zit er al een tijdje bij.
Het lijkt er op dat de ESP32 en ESP8266 omgeving de functie prototyping hebben toegevoegd aan "Arduino.h".
Bij de ESP8266 zit de functie zelf in "time.cpp" en bij de ESP32 in "esp32-hal-time.c".
Je kunt zelf de bestanden vinden waar configTime wordt gebruikt: https://www.google.nl/search?q=site%3Agithub.com%2Fesp8266%2FArduino%2Fblob%2Fmaster%2Fcores%2Fesp8266%2F+configTime
Documentatie ? Doe iets met de tijdzone, iets met zomer/winter-tijd en een NTP server. Dat is het zo'n beetje.
Er zijn inmiddels veel verschillende "time" libraries. Dit is echt iets van de ESP32 en ESP8266 omgeving zelf.
Volgens mij is het goed opletten om ze niet door elkaar te gebruiken.
Dit zijn volgens mij de meest gangbare:
- TImeLib (onderhouden door Paul Stoffregen)
- RTClib (Adafruit)
- De standaard 'time' zoals die al heel lang bij de 'c' taal hoort. Die kan tegenwoordig door de GNU C++ compiler meegelinkt worden voor de Arduino boards.
- De officiële RTC library voor de Arduino Zero/MKR/M0, gemaakt en onderhouden door Arduino.
- De ESP32/ESP8266 time.
Re: SPIFFS / SDFS fileTime en/of getLastWrite.
Ik had in de librarys gezocht.
Dus kennelijk een niveau te diep.
Met tijdzone, zomer en wintertijd enz had ik geen probleem.
Ik probeer alleen te begrijpen wat er gebeurt en of ik kan vinden hoe en hoe vaak de tijd wordt gesynchroniseerd.
In het voorbeeld is er alleen een Setup. Als een programma altijd moet werken moet ook af en toe de klok gelijk gezet worden. Zomaar een kopie maken is voor mij geen optie.
En.. alles lezen gaat al niet laat staan alles onthouden.
m.v.g.Nico
Dus kennelijk een niveau te diep.
Met tijdzone, zomer en wintertijd enz had ik geen probleem.
Ik probeer alleen te begrijpen wat er gebeurt en of ik kan vinden hoe en hoe vaak de tijd wordt gesynchroniseerd.
In het voorbeeld is er alleen een Setup. Als een programma altijd moet werken moet ook af en toe de klok gelijk gezet worden. Zomaar een kopie maken is voor mij geen optie.
En.. alles lezen gaat al niet laat staan alles onthouden.
m.v.g.Nico
12 berichten
• Pagina 1 van 2 • 1, 2
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 5 gasten