ESP32 Increase Speed of Transmission/Increase WiFi Transmission Buffer Size? #414
Replies: 1 comment
-
Sorry for reply late. I can't reply all your question because you should try and benchmark it yourself, unless information that related to the library working and devices that you should know. Due to ESP8266 SSL engine (BearSSL) reserves the memory used for SSL data decryption/encryption which slightly handle the data faster than the ESP32 SSL engine (mbedTLS) that involved dynamic memory allocations. The ESP32 allows maximum 64k SSL data to be sent at a time but the internal buffer implemented in the ESP32 core SSL client may split the large data to send/receive as chunks of 16k. The library works based on the REST API which involved https request/response. The token was used for Firebase authentication which will be sent during request as part of URL end points or the Authorization header. For the Firestore API, the OAuth 2.0 access token has a smallest size that required the lesser time for sending the request. Sending multiple small payloads should be avoided because TCP no delay was not used in this library. |
Beta Was this translation helpful? Give feedback.
-
Hi All,
Thank you to @mobizt for creating and maintaining this incredible library, and to everyone for all of the incredible support discussions.
Quick question: Similar to how the transmission buffer size for the ESP8266 can be increased:
fbdo.setBSSLBufferSize(1024, 1024);
is there a way to increase the transmission buffer size for the ESP32? After reading the section on Speed of Data Transfer, I'm not entirely sure if just increasing the transmission buffer size would make a difference, and I am not sure how to do it for the ESP32. Would someone be able to shed light on this functionality?
I would like to be able to use the transform method from the AppendMapValueArray example to send potentially hundreds of sensor data values up to a Firestore document in near real time for up to 1 minute. Ideally, I would collect data from a sensor at potentially hundreds of Hertz, store the data into a circular buffer, pop the data into a FirebaseJson object, and begin pushing the data every second after an initial, short delay once the program started collecting data. Currently, I am only sending about 25 values at a time, and it takes somewhere between 250ms to 500ms for the push of data to complete for a single axis of data. I would like to be able to send hundreds of data points in 4 axes (x,y,z,time). Does anyone know of how to push large amounts of data in a near real time fashion? Is Firestore the best option for implementing this type of functionality? If not, would someone be able to provide recommendations?
Questions in bullet format for easier response:
Thank you,
David
Beta Was this translation helpful? Give feedback.
All reactions