Forum: Mikrocontroller und Digitale Elektronik Espressif SDK


von hacker-tobi (Gast)


Lesenswert?

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

von hacker-tobi (Gast)


Lesenswert?

Sorry der Titel ist misslungen.

Kann ein MOD den Ändern auf: ESP8266 Espressif SDK: Problem beim Empfang 
großer Datensätze via http

Danke

von hacker-tobi (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.