[Résolu] NodeMcu ou esp8266 methode POST

(deleted)

Bonjour

Quand vous ditesserver.on("/uri", HTTP_POST, []() {...});vous déclarez que votre serveur sur votre ESP répondra à une requête de type POST envoyée sur http://[i]adresseESP[/i]/uri en exécutant le code {...}

est-ce bien cela que vous avez en tête ? Qui émet la requête POST ?

(deleted)

Qui émet la requête POST ?

(deleted)

(deleted)

Quand vous rencontrez un souci avec du code web, la première chose à effectuer c'est de regarder ce qui dit le mode développeur web (la majorité des navigateurs offre cette possibilité d'inspection - ici c'est Safari). On va voir tout de suite qu'il y a un souci dans le code HTML qui ne ressemble pas à celui donné côté arduino et le fait que Safari vous notifie aussi d'une erreur et d'un warning.

Donc ici, outre le fait que le code d'exemple ne soit pas terrible (usage abusif de la classe String, pas super propre pour la connexion), votre souci vient du fait que vous avez copié le code depuis un site web qui n'est pas en UTF8 ou n'a pas encodé les caractères comme il faut et la page web a des bugs à cause des guillemets utilisés pour fermer la chaîne du viewport ou http-equiv (si vous regardez bien ils sont comme en italique, inclinés)

Essayez avec ce code (avec la console à 115200 bauds, pas la peine d'aller lentement à 9600)

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

// Création d'une instance serveur
ESP8266WebServer server(80); // port d'écoute 80

const char*  ssid    = "Freebox-truc"; // SSID
const char* password = "xxxxx"; // mot de passe pour la connexion au point d'accès

// Page HTML
const char SITE_index[] PROGMEM = R"=====(
<!DOCTYPE HTML>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
<form action="/bouton" method="POST">
  <input type="submit" name="bouton_on" value="On">
  &nbsp&nbsp
  <input type="submit" name="bouton_off" value="Off">
</form>
</HTML>
)=====";

void page_html()
{
  server.send_P(200, "text/html", SITE_index); // envoie la page principale
}

void traite_bouton()
{ 
  Serial.println("Appui sur le bouton ON/OFF");
  server.send_P(200, "text/html", SITE_index); // envoie la page principale

  if (server.hasArg("bouton_on")) {
    Serial.println("Appui sur le bouton ON");
  } else if (server.hasArg("bouton_off")) {
    Serial.println("Appui sur le bouton OFF");
  }
}

void handleNotFound() {
  server.send(404, "text/plain", "404: URL inconnue");
}

void setup()
{
  Serial.begin(115200);
  WiFi.mode(WIFI_STA); // configure le WIFI en mode station
  WiFi.disconnect();  // on se déconnecte si on été déjà connecté à un point d'accès WiFi
  WiFi.begin(ssid, password); // connexion au point d'accès WiFi

  Serial.println("");


  while (WiFi.status() != WL_CONNECTED) {  // attente de connexion 
    delay(500);
    Serial.print(".");
  }

  Serial.print("\nConnected to "); Serial.println(ssid);
  Serial.print("IP address: "); Serial.println(WiFi.localIP());

  if (MDNS.begin("esp8266")) {
    Serial.println("MDNS responder started");
  }

  // affectation des actions à effectuer
  server.on("/", page_html); // page par défaut
  server.onNotFound(handleNotFound); // page inconnue
  server.on("/bouton", HTTP_POST, traite_bouton); // appui sur un des boutons

  server.begin(); // démarre le serveur WEB
}

void loop()
{
  server.handleClient(); // gestion des requêtes HTTP ?
}

(deleted)

(deleted)

vous avez essayé mon code ?
vu comment les boutons sont déclarés, l'URL déclenchée est /bouton donc on doit enregistrer

  server.on("/bouton", HTTP_POST, traite_bouton); // appui sur un des boutons

chez moi ça fonctionne

(deleted)

je ne sais pas ce que vous faites. il faut mettre la console à 115200 bauds avec mon code

chez moi c'est fonctionnel comme le montre la copie d'écran

(deleted)

bizarre. Vous avez des trucs connectés sur votre ESP ?
mettez un copie d'écran de votre console série

(deleted)

La console est-elle bien réglée au même débit que celui défini dans le code ?

(deleted)

Sans titre 2.jpg

(deleted)

c'est bon le chinois au début c'est juste que votre ESP parle au boot à un débit différent, ce n'est pas très important.

Vous voyez bien donc le fait que le code se connecte à votre Freebox

tapez dans un navigateur web connecté sur le même réseau: http://192.168.1.40/

vous devriez voir les boutons On et Off s'afficher.
Clickez dessus et vous devriez voir les messages dans la console

(deleted)