Hi,
ich habe aktuell ein Problem bei der Nutzung des Espressif SDK für den
ESP8266.
Wenn ich versuche, per HTTP Post größere Datenmengen (im konkreten Fall
ein SSL Zertifikat) zu übertragen, kommen nur Bruchstücke davon an.
Im konkreten Fall ist der Payload im POST-Request ca 2700 Byte groß,
davon werden nur 896 Byte gelesen.
Es ist auch egal, was im Payload steht, auch mit simplem Text etc werden
immer nur 896 Byte empfangen.
Das sieht doch nach irgendeinem Buffer aus.
Vielleicht hat ja jemand dieses Problem mit dem Espressif SDK schonmal
gehabt oder weiss einen anderen Ansatz (chunked ?)
Was ich bis jetzt getestet habe, alles brachte keine Veränderung:
-buf als globale Variable buf[4096] definiert.
Keine Veränderung.
-Durch wiederholtes Aufrufen von httpd_req_recv(req, buf+n*800, 800)
800 Byte Chunks eingelesen. Gleiches Endergebnis
-Im SDK mit make menuconfig mit diversen Buffern ( Task buffer, http
request buffer) experimentiert und neu compiliert und geflashed.
Keine Veränderung.
Der folgende Code macht das Einlesen:
esp_err_t cfgsav_post_handler(httpd_req_t *req)
{
...
char* buf;
size_t buf_len;
buf_len=req->content_len;
tcpip_adapter_ip_info_t ip_info;
tcpip_adapter_dns_info_t dns_info;
cfg_err = 0;
if(httpd_basic_auth(req, AUTHUSER, config.station_password) ==
ESP_OK)
{
if (buf_len > 1)
{
buf = malloc(buf_len);
ret = httpd_req_recv(req, buf, buf_len);
...
Der komplette Code - derzeit allerdings noch ohne Übertragung der
Zertifikate - findet sich unter
https://sourceforge.net/projects/wlan-controlled-switch/
Dort unter main/files/server.c
Dieser Code dient zum Einlesen der über Webinterface erstellten
Konfiguration. Die Zertifikate sind derzeit noch fest in der SW
hinterlegt und diesen der Server-Validierung für OTA und MQTTs.
Leider unterstützt httpd_req_recv den Typ multipart/form-data nicht,
ansonsten könnte ich die Zertifikate per <input type=file> direkt aus
einer Datei hochladen. Daher bin ich auf ein <textarea> Feld zum
Einfügen der Zertifikate ausgewichen.
Danke & gruß
Tobi
Sorry der Titel ist misslungen. Kann ein MOD den Ändern auf: ESP8266 Espressif SDK: Problem beim Empfang großer Datensätze via http Danke
Das Problem hat sich erledigt. Aktuell habe ich wenig Zeit aber bei Interesse berichte ich gern später woran es lag.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.