Buenas tardes comunidad, la verdad no se que pasaría que me tomo el código, este código ya lo tenia anteriormente y no funciono, pero ahora ya lo realiza, quizá hay que jugar con los delay()
dejo el código funcional (Solo la parte de la petición, en esta ocasión lo realice por Petición GET)
void enviarPeticionGET() {
// do {
// respuestaPeticion = "0";
Serial2.println("AT+CGPSOUT=1"); //Cierro el flujo de datos que recibo del GPS
delay(1000);
Serial.println();
Serial.println("Ejecutando comandos para enviar datos a la API...");
Serial2.println("AT");
delay(1000);
Serial2.println("AT+HTTPTERM"); //Finalizar sesión HTTP por si hay alguna abierta antes de iniciar una sesión.
delay(2000);
Serial2.println("AT+SAPBR=0,1"); // Contexto de portador desactivado por si hay alguno activo
delay(2000);
Serial2.println("AT+CGATT=1");
delay(2000);
// Serial2.println("AT+SAPBR=3,1,\"APN\",\"internet.itelcel.com\"");
// delay(3000);
// mostrarDatosSerial();
enviarAT("AT+SAPBR=3,1,\"APN\",\"internet.itelcel.com\"","OK",3000); //Establecer contexto de portador
// Serial2.println("AT+SAPBR=1,1");
// delay(2000);
// mostrarDatosSerial();
enviarAT("AT+SAPBR=1,1","OK",2000); //Contexto de portador activo
// Serial2.println("AT+SAPBR=2,1");
// delay(2000);
// mostrarDatosSerial();
while (enviarAT("AT+SAPBR=2,1","OK",1000) == 0)
; //Ciclar mientras Leer parámetro de portador este es MUY IMPORTANTE QUE LO RESPONDA CORRECTAMENTE
Serial2.println("AT+HTTPINIT");//Se inicia el servicio HTTP
delay(2000);
mostrarDatosSerial();
Serial2.println("AT+HTTPPARA=\"CID\",1"); //Para hacer la llamar a HTTP
delay(2000);
// String peticion = "AT+HTTPPARA=\"URL\",\"" + url + "\"";
String peticion = "AT+HTTPPARA=\"URL\",\"" + url + "?" + datosEnGET + "\"";
Serial.println(peticion);
Serial2.println(peticion); //Parametro URL a la que se realizara la peticion.
delay(15000);
mostrarDatosSerial();
// Serial2.println("AT+HTTPACTION=0");//
// delay(3000);
// mostrarDatosSerial();
enviarAT("AT+HTTPACTION=0","OK",3000); //Realiza acciones HTTP (GET=0 | POST=1)
// Serial.print("respuestaPeticion: ");Serial.println(respuestaPeticion);
// Serial2.println("AT+HTTPREAD");
// delay(4000);
// mostrarRespuesta();
enviarAT("AT+HTTPREAD","OK",3000); //Leer respuesta del servidor
// if (respuestaPeticion == "1")
// peticionEnviada = 1;
// Serial.print("respuestaPeticion: ");Serial.println(respuestaPeticion);
Serial2.println("AT+HTTPTERM");//Finalizar sesión HTTP
delay(2000); // 6000
mostrarDatosSerial();
Serial2.println("AT+CGPSOUT=32");//Abrir flujo de datos de GPS
delay(4000);
Serial.println();
// if (peticionEnviada == 1)
Serial.println("DATOS ENVIADOS.");
Serial.println("********************************************************************");
Serial.println();
// } while (peticionEnviada == 0);
}
void mostrarDatosSerial() {
while(Serial2.available()!=0)
Serial.write(Serial2.read());
delay(500);
}
Lo que tengo comentado del doWhile , respuestaPeticion y peticionEnviada era porque intentaba ciclar la peticion mientras no se mandaba, pero aun no logro eso. y lo que esta comentado encima de cada ComandoAT es lo mismo pero enviandolo directamente al Serial2.
espero les sirva Saludos.
PD: el código del enviarAT esta al inicio del POST