Esp32cam: I read String from SPIFFS but it is not accepted. Why ?

esp@esp@esp
Posts: 16
Joined: Wed Apr 12, 2023 11:14 am

Esp32cam: I read String from SPIFFS but it is not accepted. Why ?

Postby esp@esp@esp » Thu Aug 10, 2023 10:44 am

Hello. I ask for help.

I'm using the sendFile example from this library:

https://github.com/GyverLibs/FastBot/tree/main

But instead of having the BOT_TOKEN value as a #define, I intend to read the BOT_TOKEN from a .txt file inside LittleFS.

For this I declared a global String bottokenstring;

I comment out // the #define BOT_TOKEN and create an empty global String BOT_TOKEN.

And read using:

file = LittleFS.open("/CONFIG.txt", "r");
if (file) {
while (file.available()) {
bottokenstring = myFile.readStringUntil('\n');
}
file.close();
}

Then I do it inside the setup(), BOT_TOKEN = bottokenstring;

Mute FastBot bot(BOT_TOKEN); instead of placing it inside the Setup(); after getting the String BOT_TOKEN.

Does not work.

But if I enter the value of BOT_TOKEN inside Setup(); Just type, manually, BOT_TOKEN = "2654326546:asjhAsfAsfkllgUsaOuiz_axfkj_AsfkjhB";

There it works. Wonder what's going on? I read the String bottokenstring in the serial monitor and it is identical. But something prevents it from being recognized as a String.

ESP_rrtandler
Posts: 22
Joined: Wed May 31, 2023 6:54 pm

Re: Esp32cam: I read String from SPIFFS but it is not accepted. Why ?

Postby ESP_rrtandler » Mon Aug 14, 2023 7:07 am

Hello esp@esp@esp,

Could you check and compare, whether the String variable retrieved from file has same length as the one with static assignment ?

Code: Select all

unsigned int bts_len = bottokenstring.length();
serial.println(bts_len);
One thing that comes to my mind is that the file CONFIG.txt has been created on windows environment and before \n character it also contains \r character. When reading the file, the \r will be part of String data, but when printing it using serial.println(), there won't be visible difference on serial monitor.

ESP_rrtandler
Posts: 22
Joined: Wed May 31, 2023 6:54 pm

Re: Esp32cam: I read String from SPIFFS but it is not accepted. Why ?

Postby ESP_rrtandler » Mon Aug 14, 2023 7:25 am

Hello esp@esp@esp,

Could you please compare length of String retrieved from config file with length of statically initialised String ?
i.e.

Code: Select all

unsigned int bts_len = bottokenstring.length();
serial.println(bts_len);
Last character of the string retrieved from config file might be the '\r' character and visual check using serial.println(bottokenstring) would not reveal this.

esp@esp@esp
Posts: 16
Joined: Wed Apr 12, 2023 11:14 am

Re: Esp32cam: I read String from SPIFFS but it is not accepted. Why ?

Postby esp@esp@esp » Mon Aug 14, 2023 9:36 am

Thanks for the answer. I take the opportunity to ask something else: When I do OTA I see progress evolve in the serial monitor according to the code below:

// Callback - Progress
Update.onProgress([](size_t progresso, size_t total) {
Serial.print(progresso * 100 / total);
});


But the 100% is relative to the maximum size of the selected partition (in my case ESP DEV MODULE). This way when the count % is at 52% (relative size of my code) it's already finished. To be more correct, I would like 100% to be relative to the maximum size of my code, so the count would end at 100%. It's not important but I'd like to know if it's possible and how the code would look. Grateful.

ESP_rrtandler
Posts: 22
Joined: Wed May 31, 2023 6:54 pm

Re: Esp32cam: I read String from SPIFFS but it is not accepted. Why ?

Postby ESP_rrtandler » Mon Aug 14, 2023 11:50 am

Hi,

The total parameter of onProgress() comes from Arduino framework. It looks like it is populated by the flash size rather than value dynamically created during the build process. I think you would have turn to the Arduino forum to figure out whether there is chance to change the value reported to the onProgress callback as "total".

Regards

Who is online

Users browsing this forum: No registered users and 368 guests