2021-04-05 13:23:58 +02:00
# include "FS.h"
//#include "SPIFFS.h"
2021-07-16 14:46:38 +02:00
# include "LittleFS.h"
2021-04-05 13:23:58 +02:00
# include <time.h>
# include <WiFi.h>
2021-07-16 14:46:38 +02:00
# define SPIFFS LittleFS
2021-04-05 13:23:58 +02:00
/* This examples uses "quick re-define" of SPIFFS to run
2021-07-16 14:46:38 +02:00
an existing sketch with LittleFS instead of SPIFFS
2021-04-05 13:23:58 +02:00
2021-07-16 14:46:38 +02:00
You only need to format LittleFS the first time you run a
test or else use the LittleFS plugin to create a partition
2021-04-05 13:23:58 +02:00
https : //github.com/lorol/arduino-esp32littlefs-plugin */
# define FORMAT_LITTLEFS_IF_FAILED true
const char * ssid = " yourssid " ;
const char * password = " yourpass " ;
long timezone = 1 ;
byte daysavetime = 1 ;
void listDir ( fs : : FS & fs , const char * dirname , uint8_t levels ) {
Serial . printf ( " Listing directory: %s \n " , dirname ) ;
File root = fs . open ( dirname ) ;
if ( ! root ) {
Serial . println ( " Failed to open directory " ) ;
return ;
}
if ( ! root . isDirectory ( ) ) {
Serial . println ( " Not a directory " ) ;
return ;
}
File file = root . openNextFile ( ) ;
while ( file ) {
if ( file . isDirectory ( ) ) {
Serial . print ( " DIR : " ) ;
Serial . print ( file . name ( ) ) ;
time_t t = file . getLastWrite ( ) ;
struct tm * tmstruct = localtime ( & t ) ;
Serial . printf ( " LAST WRITE: %d-%02d-%02d %02d:%02d:%02d \n " , ( tmstruct - > tm_year ) + 1900 , ( tmstruct - > tm_mon ) + 1 , tmstruct - > tm_mday , tmstruct - > tm_hour , tmstruct - > tm_min , tmstruct - > tm_sec ) ;
if ( levels ) {
2021-04-15 16:25:01 +02:00
listDir ( fs , file . path ( ) , levels - 1 ) ;
2021-04-05 13:23:58 +02:00
}
} else {
Serial . print ( " FILE: " ) ;
Serial . print ( file . name ( ) ) ;
Serial . print ( " SIZE: " ) ;
Serial . print ( file . size ( ) ) ;
time_t t = file . getLastWrite ( ) ;
struct tm * tmstruct = localtime ( & t ) ;
Serial . printf ( " LAST WRITE: %d-%02d-%02d %02d:%02d:%02d \n " , ( tmstruct - > tm_year ) + 1900 , ( tmstruct - > tm_mon ) + 1 , tmstruct - > tm_mday , tmstruct - > tm_hour , tmstruct - > tm_min , tmstruct - > tm_sec ) ;
}
file = root . openNextFile ( ) ;
}
}
void createDir ( fs : : FS & fs , const char * path ) {
Serial . printf ( " Creating Dir: %s \n " , path ) ;
if ( fs . mkdir ( path ) ) {
Serial . println ( " Dir created " ) ;
} else {
Serial . println ( " mkdir failed " ) ;
}
}
void removeDir ( fs : : FS & fs , const char * path ) {
Serial . printf ( " Removing Dir: %s \n " , path ) ;
if ( fs . rmdir ( path ) ) {
Serial . println ( " Dir removed " ) ;
} else {
Serial . println ( " rmdir failed " ) ;
}
}
void readFile ( fs : : FS & fs , const char * path ) {
Serial . printf ( " Reading file: %s \n " , path ) ;
File file = fs . open ( path ) ;
if ( ! file ) {
Serial . println ( " Failed to open file for reading " ) ;
return ;
}
Serial . print ( " Read from file: " ) ;
while ( file . available ( ) ) {
Serial . write ( file . read ( ) ) ;
}
file . close ( ) ;
}
void writeFile ( fs : : FS & fs , const char * path , const char * message ) {
Serial . printf ( " Writing file: %s \n " , path ) ;
File file = fs . open ( path , FILE_WRITE ) ;
if ( ! file ) {
Serial . println ( " Failed to open file for writing " ) ;
return ;
}
if ( file . print ( message ) ) {
Serial . println ( " File written " ) ;
} else {
Serial . println ( " Write failed " ) ;
}
file . close ( ) ;
}
void appendFile ( fs : : FS & fs , const char * path , const char * message ) {
Serial . printf ( " Appending to file: %s \n " , path ) ;
File file = fs . open ( path , FILE_APPEND ) ;
if ( ! file ) {
Serial . println ( " Failed to open file for appending " ) ;
return ;
}
if ( file . print ( message ) ) {
Serial . println ( " Message appended " ) ;
} else {
Serial . println ( " Append failed " ) ;
}
file . close ( ) ;
}
void renameFile ( fs : : FS & fs , const char * path1 , const char * path2 ) {
Serial . printf ( " Renaming file %s to %s \n " , path1 , path2 ) ;
if ( fs . rename ( path1 , path2 ) ) {
Serial . println ( " File renamed " ) ;
} else {
Serial . println ( " Rename failed " ) ;
}
}
void deleteFile ( fs : : FS & fs , const char * path ) {
Serial . printf ( " Deleting file: %s \n " , path ) ;
if ( fs . remove ( path ) ) {
Serial . println ( " File deleted " ) ;
} else {
Serial . println ( " Delete failed " ) ;
}
}
void setup ( ) {
Serial . begin ( 115200 ) ;
// We start by connecting to a WiFi network
Serial . println ( ) ;
Serial . println ( ) ;
Serial . print ( " Connecting to " ) ;
Serial . println ( ssid ) ;
WiFi . begin ( ssid , password ) ;
while ( WiFi . status ( ) ! = WL_CONNECTED ) {
delay ( 500 ) ;
Serial . print ( " . " ) ;
}
Serial . println ( " WiFi connected " ) ;
Serial . println ( " IP address: " ) ;
Serial . println ( WiFi . localIP ( ) ) ;
Serial . println ( " Contacting Time Server " ) ;
2021-07-22 19:09:28 +02:00
/*
Note : Bundled Arduino lwip supports only ONE ntp server , 2 nd and 3 rd options are silently ignored
see CONFIG_LWIP_DHCP_MAX_NTP_SERVERS define in . / tools / sdk / esp32 / sdkconfig
*/
2021-04-05 13:23:58 +02:00
configTime ( 3600 * timezone , daysavetime * 3600 , " time.nist.gov " , " 0.pool.ntp.org " , " 1.pool.ntp.org " ) ;
struct tm tmstruct ;
delay ( 2000 ) ;
tmstruct . tm_year = 0 ;
getLocalTime ( & tmstruct , 5000 ) ;
Serial . printf ( " \n Now is : %d-%02d-%02d %02d:%02d:%02d \n " , ( tmstruct . tm_year ) + 1900 , ( tmstruct . tm_mon ) + 1 , tmstruct . tm_mday , tmstruct . tm_hour , tmstruct . tm_min , tmstruct . tm_sec ) ;
Serial . println ( " " ) ;
if ( ! SPIFFS . begin ( FORMAT_LITTLEFS_IF_FAILED ) ) {
2021-07-16 14:46:38 +02:00
Serial . println ( " LittleFS Mount Failed " ) ;
2021-04-05 13:23:58 +02:00
return ;
}
Serial . println ( " ----list 1---- " ) ;
listDir ( SPIFFS , " / " , 1 ) ;
Serial . println ( " ----remove old dir---- " ) ;
removeDir ( SPIFFS , " /mydir " ) ;
Serial . println ( " ----create a new dir---- " ) ;
createDir ( SPIFFS , " /mydir " ) ;
Serial . println ( " ----remove the new dir---- " ) ;
removeDir ( SPIFFS , " /mydir " ) ;
Serial . println ( " ----create the new again---- " ) ;
createDir ( SPIFFS , " /mydir " ) ;
Serial . println ( " ----create and work with file---- " ) ;
writeFile ( SPIFFS , " /mydir/hello.txt " , " Hello " ) ;
appendFile ( SPIFFS , " /mydir/hello.txt " , " World! \n " ) ;
Serial . println ( " ----list 2---- " ) ;
listDir ( SPIFFS , " / " , 1 ) ;
Serial . println ( " ----attempt to remove dir w/ file---- " ) ;
removeDir ( SPIFFS , " /mydir " ) ;
Serial . println ( " ----remove dir after deleting file---- " ) ;
deleteFile ( SPIFFS , " /mydir/hello.txt " ) ;
removeDir ( SPIFFS , " /mydir " ) ;
Serial . println ( " ----list 3---- " ) ;
listDir ( SPIFFS , " / " , 1 ) ;
Serial . println ( " Test complete " ) ;
}
void loop ( ) {
}