2019-09-22 14:38:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "FS.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "FFat.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <time.h>  
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <WiFi.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  char *  ssid      =  " your-ssid " ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  char *  password  =  " your-password " ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								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 17:25:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                listDir ( fs ,  file . path ( ) ,  levels  - 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-22 14:38:24 +08: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 20:09:28 +03: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 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-22 14:38:24 +08: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 ( ! FFat . begin ( true ) ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Serial . println ( " FFat Mount Failed " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    listDir ( FFat ,  " / " ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    removeDir ( FFat ,  " /mydir " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    createDir ( FFat ,  " /mydir " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    deleteFile ( FFat ,  " /hello.txt " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    writeFile ( FFat ,  " /hello.txt " ,  " Hello  " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    appendFile ( FFat ,  " /hello.txt " ,  " World! \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									listDir ( FFat ,  " / " ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  loop ( ) {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}