Salut à tous,
Je rencontre des difficultés pour envoyer des données (POST) via GPRS vers un serveur en ligne. Je reçois un code d'état 603 ou 601. J'ai pensé à essayer un GET vers d'autres serveurs comme www.google.com et www.facebook.com , et cela fonctionne avec un code d'état 200. Cependant, lorsque j'ai tenté un GET vers mon propre serveur où j'envoie habituellement des POST, j'ai rencontré les mêmes erreurs (603 ou 601). Cette erreur se reproduit avec la plupart des serveurs que j'ai testés.
j'ai checké des solutions à des problèmes similaire mais rien n'a marché. Voici mon code ci-dessous. Auriez-vous des suggestions sur la façon de faire fonctionner le script pour communiquer avec mon serveur ? Merci d'avance pour votre aide.
- OS: Windows
- IDE: Arduino 2.1.1
#include <SoftwareSerial.h>
SoftwareSerial mySerial(1, 3); //SIM900 Tx & Rx is connected to NodeMCU #Tx & #Rx
String data= "data";
void testPostRequest(String urlencodedToSend){
sendCommand("AT");
ShowSerialData();
sendCommand("AT+CIPSHUT");
ShowSerialData();
delay(500);
sendCommand("AT+SAPBR=0,1");
delay(2000);
ShowSerialData();
sendCommand("AT+SAPBR=3,1,\"Contype\",\"GPRS\"");
ShowSerialData();
sendCommand("AT+SAPBR=3,1,\"APN\",\"internet\"");
ShowSerialData();
sendCommand("AT+SAPBR=1,1");
ShowSerialData();
sendCommand("AT+SAPBR=2,1");
ShowSerialData();
sendCommand("AT+CGATT?");
ShowSerialData();
sendCommand("AT+HTTPINIT");
delay(1000);
ShowSerialData();
sendCommand("AT+HTTPPARA=\"CID\",1");
ShowSerialData();
sendCommand("AT+HTTPSSL=1");
delay(2000);
ShowSerialData();
String url = "https://example.com";
sendCommand(("AT+HTTPPARA=\"URL\",\"" + url + "\"").c_str());
ShowSerialData();
sendCommand("AT+HTTPPARA=\"CONTENT\",\"application/json\"");
ShowSerialData();
sendCommand(("AT+HTTPDATA=" + String(urlencodedToSend.length()) + ",20000").c_str());
delay(6000);
mySerial.println(urlencodedToSend);
delay(1000);
ShowSerialData();
Serial.println(urlencodedToSend);
delay(1000);
sendCommand("AT+HTTPACTION=0"); // requête GET
delay(10000);
ShowSerialData();
sendCommand("AT+HTTPREAD");
delay(300);
ShowSerialData();
sendCommand("AT+HTTPTERM");
ShowSerialData();
sendCommand("AT+CIPSHUT");
ShowSerialData();
}
void sendCommand(const char* command) {
Serial.print("C: ");
Serial.print(command);
mySerial.println(command);
delay(1000);
}
void ShowSerialData() {
while (mySerial.available()) {
Serial.write(mySerial.read());
}
while (Serial.available()) {
mySerial.write(Serial.read());
}
}
void setup() {
int baudRate = 115200;
Serial.begin(baudRate); // Serial monitor
mySerial.begin(baudRate); // GSM module
delay(7000);
}
void loop() {
String urlencodedToSend = "{\"data\":\"data\"}" ;
testPostRequest(urlencodedToSend) ;
}