Récupérer des données envoyées d'une page Web sur un ESP01 avec Webserver mode synchrone

Bonjour à tous,

Je suis nouveau sur ce forum mais je n'arrive pas à trouver ma solution partout où je cherche. J'ai un esp01 que j'ai programmer avec une page Web dans laquelle j'envoie des donnes au format JSON sur l'inspecteur je vois bien mes données partir mais je n'arrive pas à les récupérer dans mon programme C arduino.

Contenu du programme C :

ESP8266WebServer serverWeb(80);
...
serverWeb.on("/prog",HTTP_POST,programmation);
...

void programmation() {
    // Donnees presente sur le Web envoyées par javascript 
    //{  "debuH": "18",  "debutMn": "30",  "duree": "30",  "frequence": "12"}
    // Je ne sais pas quoi mettre pour récupérer ces données

    char chaine[30];
    int nombre=0;
    char json[] = "{'debutH':0,'debutMn':0,'duree':0,'frequence':0}";
    nombre=serverWeb.args();
    if (serverWeb.hasArg("debutH")) {
      hProg = serverWeb.hasArg("debutH");
    }
    if (serverWeb.hasArg("debutMn")) {
      MnProg = serverWeb.hasArg("debutMn");
    }
    if (serverWeb.hasArg("duree")) {
      tpsProg = serverWeb.hasArg("duree");
    }
    if (serverWeb.hasArg("frequence")) {
      frequence = serverWeb.hasArg("frequence");
    }


    serverWeb.send(200,"text/plain","ok");

}

Voila mon problème. Est-ce que quelqu'un pourrait m'aider ou me diriger vers un site où je pourrais trouver la solution ?

:warning:

Post mis dans la mauvaise section, on parle anglais dans les forums généraux. ➜ je l'ai déplacé vers le forum francophone pour vous pour cette fois...

Merci de prendre en compte les recommandations listées dans "Les bonnes pratiques du Forum Francophone”


il faudrait décrire un peu plus précisément votre système. Vous avez 2 ESP qui échangent des données ?

Ton programme me parais bizarre tu parle de json, mais tu utilise des fonctions pour récupérer des arguments d'une requête.
normalement si tu fais un "on" avec une méthode POST, il faut alors utiliser le contenu de la requete
je crois que tu peux le récupérer avec "server.arg("plain");", mais je n'ai pas retrouver la documentation de la librairie.

Merci c'est exactement la réponse qu'il me manquait. Voilà mon code modifié qui fonctionne correctement comme je le désirai :

 void programmation() {
    // Donnees presente sur le Web envoyées par javascript 
    //{  "debutH": "18",  "debutMn": "30",  "duree": "30",  "frequence": "12"}
    char chaine[30];
    String chaine1;
    StaticJsonDocument<256> doc;

    chaine1=serverWeb.arg("plain");
    deserializeJson(doc,chaine1);
    hProg = doc["debutH"];
    MnProg = doc["debutMn"];
    tpsProg = doc["duree"];
    frequence = doc["frequence"];
    // Test pour renvoi réponse pour controle bonne reception
    sprintf(chaine,"%d,%d,%d,%d",hProg,MnProg,tpsProg,frequence);
    serverWeb.send(200,"text/plain",chaine);
}

Merci encore pour cette aide précieuse, il y avait plusieurs jours où je bloquais sur ce sujet.

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.