Estou usando o modulo esp-01 com arduino uno para fazer um post em um servidor na rede para testes, acompanhei o log do apache e vi que esta dando erro 400, fiz o post para o mesmo endereço e mesma configuração do header usando o Postman do navegador Chrome e deu certo, inclusive copiei o código do header e substitui no código do meu arduino para testar mas continua com problema, dai não sei se é algo no código do header, comando que estou usando para fazer o post pelo modulo 8266 ou se é outra coisa.
A função que faz o post esta assim:
#include <SoftwareSerial.h>
String ssid ="andre";
String password="senha";
SoftwareSerial esp(6, 7);// RX, TX
String data;
String server = "192.168.1.7";
String uri = "climatempo/index.php";
/*
RESTANTE DO CODIGO OMITIDO
*/
void loop () {
dat[0] = 70;
dat[2] = 20;
// convert the bit data to string form
hum = String(dat[0]);
temp= String(dat[2]);
data = "temperature=" + temp + "&humidity=" + hum; // dados que são enviados por post
httppost();
delay(1000);
}
// faz o post
void httppost () {
esp.println("AT+CIPSTART=\"TCP\",\"" + server + "\",80");//start a TCP connection.
do {
if( esp.find("OK")) {
Serial.println("TCP connection ready");
tcpConnect = true;
} else {
Serial.println("TCP connection not ready..."+server);
}
delay(1000);
}while(tcpConnect==false);
String postRequest =
"POST " + uri + " HTTP/1.1\r\n" +
"Host: "+server+"\r\n" +
"Accept: *"+"/"+"*\r\n" +
"Content-Length: " + data.length() + "\r\n" +
"Content-Type: application/x-www-form-urlencoded\r\n" +
"Cache-Control: no-cache\r\n" +
"\r\n"+data;
String sendCmd = "AT+CIPSEND=";//determine the number of caracters to be sent.
esp.print(sendCmd);
esp.println(postRequest.length() );
delay(500);
if(esp.find(">")) {
Serial.println("Sending..");
esp.print(postRequest);
if( esp.find("SEND OK")) {
Serial.println("Packet sent");
delay(1000);
// while (esp.available()) {
String tmpResp = esp.readString();
Serial.println(tmpResp);
// }
// close the connection
esp.println("AT+CIPCLOSE");
}
}
}
Comentei a linha que tem while (esp.available()) pois não estava passando na validação, dai já fico na duvida se estou fazendo certo pois as veze ele também não passa na validação de conexão TCP.
Sera que tem algo a ser melhorado no header ( variavel postRequest) ou na forma como esta sendo feito ??