[HELP] Problème d'envoi de JSON avec un ESP8266

Bonjour,

Je contacte la communauté Arduino car je me heurte à un problème. Pour mon projet de terminal je bosse avec l’ESP8266, je l’ai déjà utilisé pour une station météo mais l’envoie se faisait avec de simples requêtes POST avec les données en paramètres.

J’utilise donc le firmware AT basique connecté directement à un Arduino Mega malheureusement je n’arrive pas à envoyer un fichier JSON (crée par la librairie ArduinoJSON) avec une requête HTTP classique via la commande CIPSEND

Voilà un aperçu du code :

  StaticJsonBuffer<200> jsonBuffer;

  JsonObject& array = jsonBuffer.createObject();
  array["tensionBatterie"] = random(0, 25);
  array["tensionPanneaux"] = random(0, 25);
  array["intensiteBatterie"] = random(0, 25);
  array["intensitePanneaux"] = random(0, 25);

  char bufferOk[256];
  array.printTo(bufferOk, sizeof(bufferOk));

  Serial.println(bufferOk);

  JSONSend("POST /parserTest.php HTTP/1.1\r\nHost: ***\r\nContent-Type: application/json\r\n"+String(bufferOk)+"\r\n\r\n");
  ESPReceive(2000);

}

void JSONSend(String postData){

	int postDataLength = postData.length();
	ESPSend("AT+CIPSTART=4,\"TCP\",\"***\",80");
	ESPReceive(4000);
	ESPSend("AT+CIPSEND=4,"+ String(postDataLength) +"");
	ESPReceive(2000);
	ESPSerial.print(postData);
	ESPReceive(2000);
	ESPSend("AT+CIPCLOSE=4");
	ESPReceive(2000);

}

void ESPSend(String commande){

   ESPSerial.println(commande);

}

void ESPReceive(const int timeout){

  String reponse = "";
  long int time = millis();
  while( (time+timeout) > millis()){
    while(ESPSerial.available()){
      char c = ESPSerial.read();
      reponse+=c;
    }
  }
  Serial.print(reponse);  

}

Avez vous une idée de la façon d’envoyer du JSON avec le firmware AT et non Node MCU ?

Merci d’avance :slight_smile:

PS : Dans mon parser pour l'instant je n'ai que cette instruction :

var_dump(file_get_contents('php://input'));

Qui me permet d'afficher le contenu JSON que j'ai envoyé