Hello all,
I am trying to send Data(Images and Audio) using SIM7000C via AT commands.
The post data will be sent to a php script that will write the data to my server.
#include "SIM7000.h"
Adafruit_FONA_LTE fona = Adafruit_FONA_LTE();
char* CONTENTTYPE_IMG = "image/jpeg";
char* CONTENTTYPE_SOUND = "audio/x-wav";
boolean SIM7000_sendData(File *file, DataType_FTP_en type, String* namee)
{
Serial.println("ENTER SEND DATA");
int timeout = 0;
bool error = false;
char auxStr[150];
uint32_t nsize = 0;
char* script = "";
char* content_type = "";
String arg = "&dir=testdir&data=";
if (type == VOICE)
{
*file = SD.open(WAV_FILENAME);
nsize = file->size();
script = SOUND_UPLOAD_SCRIPT;
content_type = CONTENTTYPE_SOUND;
}
else
{
nsize = ESP_transferStart();
script = IMAGE_UPLOAD_SCRIPT;
content_type = CONTENTTYPE_IMG;
}
Serial.print("Sending " + String(nsize) + " bytes..");
if (!fona.HTTP_init()) {
Serial.println(F("httpf"));
error = true;
goto false_area;
}
Serial.println(F("HHTP OK"));
if (!fona.sendCheckReply("AT+HTTPPARA=\"CID\",1", "OK", 10000)) {
Serial.println(F("fail"));
error = true;
goto false_area;
}
sprintf(auxStr, "AT+HTTPPARA=\"URL\",\"%s%s\"", SERVER, script);
if (!fona.sendCheckReply(auxStr, "OK", 10000)) {
Serial.println(F("fail"));
error = true;
goto false_area;
}
sprintf(auxStr, "AT+HTTPPARA=\"CONTENT\",\"%s\"", content_type);
if (!fona.sendCheckReply(auxStr, "OK", 10000)) {
Serial.println(F("fail"));
error = true;
goto false_area;
}
SIM7000.println("AT+HTTPDATA=" + String(nsize + arg.length()) + ",120000");
if (!fona.expectReply(F("DOWNLOAD"), 10000)) {
Serial.println(F("DATA fail"));
error = true;
goto false_area;
}
Serial.println(F("Writing..."));
SIM7000.print(arg);
if (type == VOICE)
{
while (file->available())
{
SIM7000.write(file->read());
}
file->close();*/
}
else
{
int n = 0;
while (nsize)
{
if (nsize >= ESP_CHUNK) n = ESP_CHUNK;
else n = nsize;
ESP_poke();
nsize = nsize - n;
while (n)
{
SIM7000.write(ESP.read());
n--;
}
ESP.find("OK");
}
if (ESP.find("DONE")) Serial.println("IMG ok");
}
if (!fona.expectReply(F("OK"), 90000)) {
Serial.println(F("DATA fail"));
error = true;
goto false_area;
}
Serial.println("Sending...");
if (!fona.sendCheckReply("AT+HTTPACTION=1", "OK", 40000)) {
Serial.println("Action fail");
error = true;
goto false_area;
}
timeout = 10;
while (!SIM7000.find("+HTTPACTION: 1,200") && timeout) {
timeout--;
if (timeout == 0)
{
Serial.println("HTTPACTION fail");
error = true;
goto false_area;
}
}
SIM7000.find("\n");
SIM7000.println("AT+HTTPREAD");
if (SIM7000.find("RESP="))
{
Serial.println(SIM7000.readStringUntil('x'));
}
false_area:
if (!fona.sendCheckReply("AT+HTTPTERM", "OK", 10000)) {
Serial.println(F("fail"));
error = true;
}
Serial.println("EXIT SEND DATA");
if (!error) {
Serial.println("Sent");
blinkSuccess(PIN_LED_GREEN);
return true;
}
blinkSuccess(PIN_LED_RED);
return false;
}
Every command is sent correctly and it always return +HTTPACTION 1,602 (network error)
Any thoughts? Thank you.