@ -6,7 +6,7 @@ 
		
	
		
			
				# define LANGUAGE 1                   // 1 = deutsch; 2 = english
 # define LANGUAGE 1                   // 1 = deutsch; 2 = english
  
		
	
		
			
				//#define SINGLE_SPI_ENABLE           // If only one SPI-instance should be used instead of two
 //#define SINGLE_SPI_ENABLE           // If only one SPI-instance should be used instead of two
  
		
	
		
			
				
 
		
	
		
			
				//#define SD_NOT_MANDATORY_ENABLE     // Only for debugging-purposes: Tonuino will also start without mounted SD-card anyway (will only try once to mount it)
  
		
	
		
			
				//#define SD_NOT_MANDATORY_ENABLE     // Only for debugging-purposes: Tonuino will also start without mounted SD-card anyway (will only try once to mount it  )
  
		
	
		
			
				//#define BLUETOOTH_ENABLE          // Doesn't work currently (so don't enable) as there's not enough DRAM available
 //#define BLUETOOTH_ENABLE          // Doesn't work currently (so don't enable) as there's not enough DRAM available
  
		
	
		
			
				
 
		
	
		
			
				# include  <ESP32Encoder.h> 
 # include  <ESP32Encoder.h> 
  
		
	
	
		
			
				
					
						
							 
					
					
						
							 
					
					
				 
				@ -151,10 +151,10 @@ char *logBuf = (char*) calloc(serialLoglength, sizeof(char)); // Buffer for all 
		
	
		
			
				# define DIMM_LEDS_NIGHTMODE             120          // Changes LED-brightness
 # define DIMM_LEDS_NIGHTMODE             120          // Changes LED-brightness
  
		
	
		
			
				
 
		
	
		
			
				// Repeat-Modes
 // Repeat-Modes
  
		
	
		
			
				# define NO_REPEAT                       0 
  
		
	
		
			
				# define TRACK                           1 
  
		
	
		
			
				# define PLAYLIST                        2 
  
		
	
		
			
				# define TRACK_N_PLAYLIST                3 
  
		
	
		
			
				# define NO_REPEAT                       0            // No repeat 
  
		
	
		
			
				# define TRACK                           1            // Repeat current track (infinite loop) 
  
		
	
		
			
				# define PLAYLIST                        2            // Repeat whole playlist (infinite loop) 
  
		
	
		
			
				# define TRACK_N_PLAYLIST                3            // Repeat both (infinite loop) 
  
		
	
		
			
				
 
		
	
		
			
				typedef  struct  {  // Bit field
 typedef  struct  {  // Bit field
  
		
	
		
			
				    uint8_t  playMode :                    4 ;       // playMode
     uint8_t  playMode :                    4 ;       // playMode
  
		
	
	
		
			
				
					
						
							 
					
					
						
							 
					
					
				 
				@ -199,15 +199,17 @@ bool enableMqtt = true; 
		
	
		
			
				# define RFID_SCAN_INTERVAL 300                           // in ms
 # define RFID_SCAN_INTERVAL 300                           // in ms
  
		
	
		
			
				uint8_t  const  cardIdSize  =  4 ;                            // RFID
 uint8_t  const  cardIdSize  =  4 ;                            // RFID
  
		
	
		
			
				// Volume
 // Volume
  
		
	
		
			
				uint8_t  maxVolume  =  21 ;                                  // Maximum volume that can be adjusted
  
		
	
		
			
				uint8_t  maxVolume  =  21 ;                                  // Maximum volume that can be adjusted (default; can be changed later via GUI) 
  
		
	
		
			
				uint8_t  minVolume  =  0 ;                                   // Lowest volume that can be adjusted
 uint8_t  minVolume  =  0 ;                                   // Lowest volume that can be adjusted
  
		
	
		
			
				uint8_t  initVolume  =  3 ;                                  // 0...21 (If not found in NVS, this one will be taken)
  
		
	
		
			
				uint8_t  initVolume  =  3 ;                                  // 0...21 (If not found in NVS, this one will be taken) (default; can be changed later via GUI) 
  
		
	
		
			
				// Sleep
 // Sleep
  
		
	
		
			
				uint8_t  maxInactivityTime  =  10 ;                          // Time in minutes, after uC is put to deep sleep because of inactivity
 uint8_t  maxInactivityTime  =  10 ;                          // Time in minutes, after uC is put to deep sleep because of inactivity
  
		
	
		
			
				uint8_t  sleepTimer  =  30 ;                                 // Sleep timer in minutes that can be optionally used (and modified later via MQTT or RFID)
 uint8_t  sleepTimer  =  30 ;                                 // Sleep timer in minutes that can be optionally used (and modified later via MQTT or RFID)
  
		
	
		
			
				// FTP
 // FTP
  
		
	
		
			
				char  * ftpUser  =  strndup ( ( char * )  " esp32 " ,  10 ) ;            // FTP-user
  
		
	
		
			
				char  * ftpPassword  =  strndup ( ( char * )  " esp32 " ,  15 ) ;        // FTP-password
  
		
	
		
			
				uint8_t  ftpUserLength  =  10 ;                              // Length will be published n-1 as maxlength to GUI
  
		
	
		
			
				uint8_t  ftpPasswordLength  =  15 ;                          // Length will be published n-1 as maxlength to GUI
  
		
	
		
			
				char  * ftpUser  =  strndup ( ( char * )  " esp32 " ,  ftpUserLength ) ;                 // FTP-user (default; can be changed later via GUI)
  
		
	
		
			
				char  * ftpPassword  =  strndup ( ( char * )  " esp32 " ,  ftpPasswordLength ) ;         // FTP-password (default; can be changed later via GUI)
  
		
	
		
			
				
 
		
	
		
			
				// Button-configuration (change according your needs)
 // Button-configuration (change according your needs)
  
		
	
		
			
				uint8_t  buttonDebounceInterval  =  50 ;                     // Interval in ms to software-debounce buttons
 uint8_t  buttonDebounceInterval  =  50 ;                     // Interval in ms to software-debounce buttons
  
		
	
	
		
			
				
					
						
							 
					
					
						
							 
					
					
				 
				@ -255,9 +257,15 @@ bool accessPointStarted = false; 
		
	
		
			
				
 
		
	
		
			
				
 
		
	
		
			
				// MQTT-configuration
 // MQTT-configuration
  
		
	
		
			
				char  * mqtt_server  =  strndup ( ( char * )  " 192.168.2.43 " ,  16 ) ;     // IP-address of MQTT-server (if not found in NVS this one will be taken)
  
		
	
		
			
				char  * mqttUser  =  strndup ( ( char * )  " mqtt-user " ,  16 ) ;           // MQTT-user
  
		
	
		
			
				char  * mqttPassword  =  strndup ( ( char * )  " mqtt-password " ,  16 ) ;   // MQTT-password*/
  
		
	
		
			
				// Please note: all lengths will be published n-1 as maxlength to GUI
  
		
	
		
			
				uint8_t  mqttServerLength  =  32 ;  
		
	
		
			
				uint8_t  mqttUserLength  =  16 ;  
		
	
		
			
				uint8_t  mqttPasswordLength  =  16 ;  
		
	
		
			
				
 
		
	
		
			
				// Please note: all of them are defaults that can be changed later via GUI
  
		
	
		
			
				char  * mqtt_server  =  strndup ( ( char * )  " 192.168.2.43 " ,  mqttServerLength ) ;       // IP-address of MQTT-server (if not found in NVS this one will be taken)
  
		
	
		
			
				char  * mqttUser  =  strndup ( ( char * )  " mqtt-user " ,  mqttUserLength ) ;               // MQTT-user
  
		
	
		
			
				char  * mqttPassword  =  strndup ( ( char * )  " mqtt-password " ,  mqttPasswordLength ) ;   // MQTT-password*/
  
		
	
		
			
				
 
		
	
		
			
				# ifdef MQTT_ENABLE 
 # ifdef MQTT_ENABLE 
  
		
	
		
			
				    # define DEVICE_HOSTNAME "ESP32-Tonuino"                  // Name that that is used for MQTT
     # define DEVICE_HOSTNAME "ESP32-Tonuino"                  // Name that that is used for MQTT
  
		
	
	
		
			
				
					
						
							 
					
					
						
							 
					
					
				 
				@ -1540,7 +1548,7 @@ void rfidScanner(void *parameter) { 
		
	
		
			
				            for  ( uint8_t  i = 0 ;  i < cardIdSize ;  i + + )  {             for  ( uint8_t  i = 0 ;  i < cardIdSize ;  i + + )  {  
		
	
		
			
				                cardId [ i ]  =  mfrc522 . uid . uidByte [ i ] ;                 cardId [ i ]  =  mfrc522 . uid . uidByte [ i ] ;  
		
	
		
			
				
 
		
	
		
			
				                snprintf ( logBuf ,  sizeof ( logBuf ) / sizeof ( logBuf [ 0 ] ) ,  " %02x " ,  cardId [ i ] ) ;  
		
	
		
			
				                snprintf ( logBuf ,  serialLoglength ,  " %02x " ,  cardId [ i ] ) ;  
		
	
		
			
				                logger ( logBuf ,  LOGLEVEL_NOTICE ) ;                 logger ( logBuf ,  LOGLEVEL_NOTICE ) ;  
		
	
		
			
				
 
		
	
		
			
				                n  + =  snprintf  ( & cardIdString [ n ] ,  sizeof ( cardIdString )  /  sizeof ( cardIdString [ 0 ] ) ,  " %03d " ,  cardId [ i ] ) ;                 n  + =  snprintf  ( & cardIdString [ n ] ,  sizeof ( cardIdString )  /  sizeof ( cardIdString [ 0 ] ) ,  " %03d " ,  cardId [ i ] ) ;  
		
	
	
		
			
				
					
						
							 
					
					
						
							 
					
					
				 
				@ -2045,7 +2053,7 @@ void trackQueueDispatcher(const char *_itemToPlay, const uint32_t _lastPlayPos, 
		
	
		
			
				        }         }  
		
	
		
			
				
 
		
	
		
			
				        case  ALL_TRACKS_OF_DIR_SORTED :  {         case  ALL_TRACKS_OF_DIR_SORTED :  {  
		
	
		
			
				            snprintf ( logBuf ,  sizeof ( logBuf ) / sizeof ( logBuf [ 0 ] ) ,  " %s '%s'  " ,  ( char  * )  FPSTR ( modeAllTrackAlphSorted ) ,  filename ) ;  
		
	
		
			
				            snprintf ( logBuf ,  serialLoglength ,  " %s '%s'  " ,  ( char  * )  FPSTR ( modeAllTrackAlphSorted ) ,  filename ) ;  
		
	
		
			
				            loggerNl ( logBuf ,  LOGLEVEL_NOTICE ) ;             loggerNl ( logBuf ,  LOGLEVEL_NOTICE ) ;  
		
	
		
			
				            sortPlaylist ( ( const  char * * )  musicFiles ,  strtoul ( * ( musicFiles - 1 ) ,  NULL ,  10 ) ) ;             sortPlaylist ( ( const  char * * )  musicFiles ,  strtoul ( * ( musicFiles - 1 ) ,  NULL ,  10 ) ) ;  
		
	
		
			
				            # ifdef MQTT_ENABLE 
             # ifdef MQTT_ENABLE 
  
		
	
	
		
			
				
					
						
							 
					
					
						
							 
					
					
				 
				@ -2484,12 +2492,13 @@ void rfidPreferenceLookupHandler (void) { 
		
	
		
			
				    rfidStatus  =  xQueueReceive ( rfidCardQueue ,  & rfidTagId ,  0 ) ;     rfidStatus  =  xQueueReceive ( rfidCardQueue ,  & rfidTagId ,  0 ) ;  
		
	
		
			
				    if  ( rfidStatus  = =  pdPASS )  {     if  ( rfidStatus  = =  pdPASS )  {  
		
	
		
			
				        lastTimeActiveTimestamp  =  millis ( ) ;         lastTimeActiveTimestamp  =  millis ( ) ;  
		
	
		
			
				        snprintf ( logBuf ,  sizeof ( logBuf ) / sizeof ( logBuf [ 0 ] ) ,  " %s: %s " ,  ( char  * )  FPSTR ( rfidTagReceived ) ,  r fidTagId) ;  
		
	
		
			
				        free ( currentR fidTagId) ;  
		
	
		
			
				        currentRfidTagId  =  strdup ( rfidTagId ) ;         currentRfidTagId  =  strdup ( rfidTagId ) ;  
		
	
		
			
				        snprintf ( logBuf ,  serialLoglength ,  " %s: %s " ,  ( char  * )  FPSTR ( rfidTagReceived ) ,  currentRfidTagId ) ;  
		
	
		
			
				        sendWebsocketData ( 0 ,  10 ) ;        // Push new rfidTagId to all websocket-clients
         sendWebsocketData ( 0 ,  10 ) ;        // Push new rfidTagId to all websocket-clients
  
		
	
		
			
				        loggerNl ( logBuf ,  LOGLEVEL_INFO ) ;         loggerNl ( logBuf ,  LOGLEVEL_INFO ) ;  
		
	
		
			
				
 
		
	
		
			
				        String  s  =  prefsRfid . getString ( rfidTagId ,  " -1 " ) ;                  // Try to lookup rfidId in NVS
  
		
	
		
			
				        String  s  =  prefsRfid . getString ( cu rrentR fidTagId,  " -1 " ) ;                  // Try to lookup rfidId in NVS
  
		
	
		
			
				        if  ( ! s . compareTo ( " -1 " ) )  {         if  ( ! s . compareTo ( " -1 " ) )  {  
		
	
		
			
				            loggerNl ( ( char  * )  FPSTR ( rfidTagUnknownInNvs ) ,  LOGLEVEL_ERROR ) ;             loggerNl ( ( char  * )  FPSTR ( rfidTagUnknownInNvs ) ,  LOGLEVEL_ERROR ) ;  
		
	
		
			
				            # ifdef NEOPIXEL_ENABLE 
             # ifdef NEOPIXEL_ENABLE 
  
		
	
	
		
			
				
					
						
							 
					
					
						
							 
					
					
				 
				@ -2654,9 +2663,13 @@ String templateProcessor(const String& templ) { 
		
	
		
			
				        return  prefsSettings . getString ( " ftpuser " ,  " -1 " ) ;         return  prefsSettings . getString ( " ftpuser " ,  " -1 " ) ;  
		
	
		
			
				    }  else  if  ( templ  = =  " FTP_PWD " )  {     }  else  if  ( templ  = =  " FTP_PWD " )  {  
		
	
		
			
				        return  prefsSettings . getString ( " ftppassword " ,  " -1 " ) ;         return  prefsSettings . getString ( " ftppassword " ,  " -1 " ) ;  
		
	
		
			
				    }  else  if  ( templ  = =  " INIT_LED_BRIGHTBESS " )  {  
		
	
		
			
				    }  else  if  ( templ  = =  " FTP_USER_LENGTH " )  {  
		
	
		
			
				        return  String ( ftpUserLength - 1 ) ;  
		
	
		
			
				    }  else  if  ( templ  = =  " FTP_PWD_LENGTH " )  {  
		
	
		
			
				        return  String ( ftpPasswordLength - 1 ) ;  
		
	
		
			
				    }  else  if  ( templ  = =  " INIT_LED_BRIGHTNESS " )  {  
		
	
		
			
				        return  String ( prefsSettings . getUChar ( " iLedBrightness " ,  0 ) ) ;         return  String ( prefsSettings . getUChar ( " iLedBrightness " ,  0 ) ) ;  
		
	
		
			
				    }  else  if  ( templ  = =  " NIGHT_LED_BRIGHTBESS " )  {  
		
	
		
			
				    }  else  if  ( templ  = =  " NIGHT_LED_BRIGHTN ESS " )  {  
		
	
		
			
				        return  String ( prefsSettings . getUChar ( " nLedBrightness " ,  0 ) ) ;         return  String ( prefsSettings . getUChar ( " nLedBrightness " ,  0 ) ) ;  
		
	
		
			
				    }  else  if  ( templ  = =  " MAX_INACTIVITY " )  {     }  else  if  ( templ  = =  " MAX_INACTIVITY " )  {  
		
	
		
			
				        return  String ( prefsSettings . getUInt ( " mInactiviyT " ,  0 ) ) ;         return  String ( prefsSettings . getUInt ( " mInactiviyT " ,  0 ) ) ;  
		
	
	
		
			
				
					
					
					
						
							 
					
				 
				@ -2676,6 +2689,12 @@ String templateProcessor(const String& templ) { 
		
	
		
			
				        return  prefsSettings . getString ( " mqttUser " ,  " -1 " ) ;         return  prefsSettings . getString ( " mqttUser " ,  " -1 " ) ;  
		
	
		
			
				    }  else  if  ( templ  = =  " MQTT_PWD " )  {     }  else  if  ( templ  = =  " MQTT_PWD " )  {  
		
	
		
			
				        return  prefsSettings . getString ( " mqttPassword " ,  " -1 " ) ;         return  prefsSettings . getString ( " mqttPassword " ,  " -1 " ) ;  
		
	
		
			
				    }  else  if  ( templ  = =  " MQTT_USER_LENGTH " )  {  
		
	
		
			
				        return  String ( mqttUserLength - 1 ) ;  
		
	
		
			
				    }  else  if  ( templ  = =  " MQTT_PWD_LENGTH " )  {  
		
	
		
			
				        return  String ( mqttPasswordLength - 1 ) ;  
		
	
		
			
				    }  else  if  ( templ  = =  " MQTT_SERVER_LENGTH " )  {  
		
	
		
			
				        return  String ( mqttServerLength - 1 ) ;  
		
	
		
			
				    }  else  if  ( templ  = =  " IPv4 " )  {     }  else  if  ( templ  = =  " IPv4 " )  {  
		
	
		
			
				        myIP  =  WiFi . localIP ( ) ;         myIP  =  WiFi . localIP ( ) ;  
		
	
		
			
				        snprintf ( logBuf ,  serialLoglength ,  " %d.%d.%d.%d " ,  myIP [ 0 ] ,  myIP [ 1 ] ,  myIP [ 2 ] ,  myIP [ 3 ] ) ;         snprintf ( logBuf ,  serialLoglength ,  " %d.%d.%d.%d " ,  myIP [ 0 ] ,  myIP [ 1 ] ,  myIP [ 2 ] ,  myIP [ 3 ] ) ;  
		
	
	
		
			
				
					
						
							 
					
					
						
							 
					
					
				 
				@ -3149,7 +3168,7 @@ void setup() { 
		
	
		
			
				        prefsSettings . putString ( " ftpuser " ,  ( String )  ftpUser ) ;         prefsSettings . putString ( " ftpuser " ,  ( String )  ftpUser ) ;  
		
	
		
			
				        loggerNl ( ( char  * )  FPSTR ( wroteFtpUserToNvs ) ,  LOGLEVEL_ERROR ) ;         loggerNl ( ( char  * )  FPSTR ( wroteFtpUserToNvs ) ,  LOGLEVEL_ERROR ) ;  
		
	
		
			
				    }  else  {     }  else  {  
		
	
		
			
				        strncpy ( ftpUser ,  nvsFtpUser . c_str ( ) ,  sizeof ( ftpUser ) / sizeof ( ftpUser [ 0 ] ) ) ;  
		
	
		
			
				        strncpy ( ftpUser ,  nvsFtpUser . c_str ( ) ,  ftpUserLength ) ;  
		
	
		
			
				        snprintf ( logBuf ,  serialLoglength ,  " %s: %s " ,  ( char  * )  FPSTR ( restoredFtpUserFromNvs ) ,  nvsFtpUser . c_str ( ) ) ;         snprintf ( logBuf ,  serialLoglength ,  " %s: %s " ,  ( char  * )  FPSTR ( restoredFtpUserFromNvs ) ,  nvsFtpUser . c_str ( ) ) ;  
		
	
		
			
				        loggerNl ( logBuf ,  LOGLEVEL_INFO ) ;         loggerNl ( logBuf ,  LOGLEVEL_INFO ) ;  
		
	
		
			
				    }     }  
		
	
	
		
			
				
					
					
					
						
							 
					
				 
				@ -3160,7 +3179,7 @@ void setup() { 
		
	
		
			
				        prefsSettings . putString ( " ftppassword " ,  ( String )  ftpPassword ) ;         prefsSettings . putString ( " ftppassword " ,  ( String )  ftpPassword ) ;  
		
	
		
			
				        loggerNl ( ( char  * )  FPSTR ( wroteFtpPwdToNvs ) ,  LOGLEVEL_ERROR ) ;         loggerNl ( ( char  * )  FPSTR ( wroteFtpPwdToNvs ) ,  LOGLEVEL_ERROR ) ;  
		
	
		
			
				    }  else  {     }  else  {  
		
	
		
			
				        strncpy ( ftpPassword ,  nvsFtpPassword . c_str ( ) ,  sizeof ( ftpPassword ) / sizeof ( ftpPassword [ 0 ] ) ) ;  
		
	
		
			
				        strncpy ( ftpPassword ,  nvsFtpPassword . c_str ( ) ,  ftpPasswordLength ) ;  
		
	
		
			
				        snprintf ( logBuf ,  serialLoglength ,  " %s: %s " ,  ( char  * )  FPSTR ( restoredFtpPwdFromNvs ) ,  nvsFtpPassword . c_str ( ) ) ;         snprintf ( logBuf ,  serialLoglength ,  " %s: %s " ,  ( char  * )  FPSTR ( restoredFtpPwdFromNvs ) ,  nvsFtpPassword . c_str ( ) ) ;  
		
	
		
			
				        loggerNl ( logBuf ,  LOGLEVEL_INFO ) ;         loggerNl ( logBuf ,  LOGLEVEL_INFO ) ;  
		
	
		
			
				    }     }  
		
	
	
		
			
				
					
						
							 
					
					
						
							 
					
					
				 
				@ -3224,7 +3243,7 @@ void setup() { 
		
	
		
			
				        prefsSettings . putString ( " mqttServer " ,  ( String )  mqtt_server ) ;         prefsSettings . putString ( " mqttServer " ,  ( String )  mqtt_server ) ;  
		
	
		
			
				        loggerNl ( ( char * )  FPSTR ( wroteMqttServerToNvs ) ,  LOGLEVEL_ERROR ) ;         loggerNl ( ( char * )  FPSTR ( wroteMqttServerToNvs ) ,  LOGLEVEL_ERROR ) ;  
		
	
		
			
				    }  else  {     }  else  {  
		
	
		
			
				        strncpy ( mqtt_server ,  nvsMqttServer . c_str ( ) ,  sizeof ( mqtt_server ) / sizeof ( mqtt_server [ 0 ] ) ) ;  
		
	
		
			
				        strncpy ( mqtt_server ,  nvsMqttServer . c_str ( ) ,  mqttServerLength ) ;  
		
	
		
			
				        snprintf ( logBuf ,  serialLoglength ,  " %s: %s " ,  ( char  * )  FPSTR ( restoredMqttServerFromNvs ) ,  nvsMqttServer . c_str ( ) ) ;         snprintf ( logBuf ,  serialLoglength ,  " %s: %s " ,  ( char  * )  FPSTR ( restoredMqttServerFromNvs ) ,  nvsMqttServer . c_str ( ) ) ;  
		
	
		
			
				        loggerNl ( logBuf ,  LOGLEVEL_INFO ) ;         loggerNl ( logBuf ,  LOGLEVEL_INFO ) ;  
		
	
		
			
				    }     }  
		
	
	
		
			
				
					
					
					
						
							 
					
				 
				@ -3235,7 +3254,7 @@ void setup() { 
		
	
		
			
				        prefsSettings . putString ( " mqttUser " ,  ( String )  mqttUser ) ;         prefsSettings . putString ( " mqttUser " ,  ( String )  mqttUser ) ;  
		
	
		
			
				        loggerNl ( ( char  * )  FPSTR ( wroteMqttUserToNvs ) ,  LOGLEVEL_ERROR ) ;         loggerNl ( ( char  * )  FPSTR ( wroteMqttUserToNvs ) ,  LOGLEVEL_ERROR ) ;  
		
	
		
			
				    }  else  {     }  else  {  
		
	
		
			
				        strncpy ( mqttUser ,  nvsMqttUser . c_str ( ) ,  sizeof ( mqttUser ) / sizeof ( mqttUser [ 0 ] ) ) ;  
		
	
		
			
				        strncpy ( mqttUser ,  nvsMqttUser . c_str ( ) ,  mqttUserLength ) ;  
		
	
		
			
				        snprintf ( logBuf ,  serialLoglength ,  " %s: %s " ,  ( char  * )  FPSTR ( restoredMqttUserFromNvs ) ,  nvsMqttUser . c_str ( ) ) ;         snprintf ( logBuf ,  serialLoglength ,  " %s: %s " ,  ( char  * )  FPSTR ( restoredMqttUserFromNvs ) ,  nvsMqttUser . c_str ( ) ) ;  
		
	
		
			
				        loggerNl ( logBuf ,  LOGLEVEL_INFO ) ;         loggerNl ( logBuf ,  LOGLEVEL_INFO ) ;  
		
	
		
			
				    }     }  
		
	
	
		
			
				
					
					
					
						
							 
					
				 
				@ -3246,7 +3265,7 @@ void setup() { 
		
	
		
			
				        prefsSettings . putString ( " mqttPassword " ,  ( String )  mqttPassword ) ;         prefsSettings . putString ( " mqttPassword " ,  ( String )  mqttPassword ) ;  
		
	
		
			
				        loggerNl ( ( char  * )  FPSTR ( wroteMqttPwdToNvs ) ,  LOGLEVEL_ERROR ) ;         loggerNl ( ( char  * )  FPSTR ( wroteMqttPwdToNvs ) ,  LOGLEVEL_ERROR ) ;  
		
	
		
			
				    }  else  {     }  else  {  
		
	
		
			
				        strncpy ( mqttPassword ,  nvsMqttPassword . c_str ( ) ,  sizeof ( mqttPassword ) / sizeof ( mqttPassword [ 0 ] ) ) ;  
		
	
		
			
				        strncpy ( mqttPassword ,  nvsMqttPassword . c_str ( ) ,  mqttPasswordLength ) ;  
		
	
		
			
				        snprintf ( logBuf ,  serialLoglength ,  " %s: %s " ,  ( char  * )  FPSTR ( restoredMqttPwdFromNvs ) ,  nvsMqttPassword . c_str ( ) ) ;         snprintf ( logBuf ,  serialLoglength ,  " %s: %s " ,  ( char  * )  FPSTR ( restoredMqttPwdFromNvs ) ,  nvsMqttPassword . c_str ( ) ) ;  
		
	
		
			
				        loggerNl ( logBuf ,  LOGLEVEL_INFO ) ;         loggerNl ( logBuf ,  LOGLEVEL_INFO ) ;  
		
	
		
			
				    }     }