Issues connecting to AWS via Sim900 and Arduino. Would anyone know how to connect?

Thread Starter

Karina San

Joined Mar 20, 2018
5
I have connected to other websites but have been able to connect to AWS I have seen others had this issue before me but none of the threads I found were answered. I am hoping someone has suggestion I can post the code if necessary. Is there a special way to connect to the AWS website? The goal of the project is to send data to a web page which was created using Amazons AWS services. We are using an Access point and are using a Jsong format.
 

Thread Starter

Karina San

Joined Mar 20, 2018
5
Hi yes I can. Thank you so much for responding. Can I DM you my code basically I have a Sim900 connected to an arduino and currently i have a message or string that I am trying to send to a website. With this code I was able to send the message "2019" to this website http://ptsv2.com/t/testme. When I try to use this same code to connect to a

// This is the code

// Commands: https://simcom.ee/documents/SIM900/SIM900_AT Command Manual_V1.11.pdf
#include <SoftwareSerial.h>
SoftwareSerial SIM900(7, 8); //7 = TX, 8 = RX

String reading = {" 2019"} ;

void setup() {
Serial.begin(19200);
SIM900.begin(19200);
delay(5000);

connectGPRS();
postData();

delay(1000);
}

void loop() {
}

void ShowSerialData() {
while (SIM900.available() != 0)
Serial.write(SIM900.read());
}


void connectGPRS() {
SIM900.println("AT+CMEE=2"); // ok
delay(1000);
ShowSerialData();
Serial.println("Let's start.");


SIM900.println("AT+CSQ"); //Signal Quality Report
delay(1000);
ShowSerialData();



SIM900.println("AT+CGATT=1"); // ATTACH/DETACH FROM GPRS SERVICE
delay(200);
ShowSerialData();

SIM900.println("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\""); // ATTACH/DETACH FROM GPRS SERVICE
delay(1000);
ShowSerialData();


SIM900.println("AT+SAPBR=3,1,\"APN\",\"\""); // ATTACH/DETACH FROM GPRS SERVICE
delay(5000);
ShowSerialData();

Serial.println(" Bearer settings for applications based on IP, 1 = Open bearer");
SIM900.println("AT+SAPBR=1,1"); // Bearer settings for applications based on IP
delay(10000);
ShowSerialData();



}

void postData() {
SIM900.println("AT+HTTPINIT");
delay(2000);
ShowSerialData();


SIM900.println("AT+HTTPPARA=\"URL\",\"ptsv2.com/t/testme/post\"");
delay(1000);
ShowSerialData();


SIM900.println("AT+HTTPPARA=\"CONTENT\",\"application/json\"");
delay(1000);
ShowSerialData();

SIM900.println("AT+HTTPDATA=" + String(reading.length()) + ",100000");
delay(1000);
ShowSerialData();

SIM900.println(reading);
delay(1000);
ShowSerialData();

SIM900.println("AT+HTTPACTION=1"); // AT+HTTPACTION=0 >> Get session start
delay(8000);
ShowSerialData();

SIM900.println("AT+HTTPREAD"); // Read the data of https server
delay(3000);
ShowSerialData();


}


I have sent a message to the AWS API gateway via curl. So I feel safe saying both the AWS API gatewate and this code work on their own but when i try to use this code to connect to AWS I am unable to. I felt that the problem could be either the URL or the data format may being wrong. However, I have changed and tested variation of this and have seen no change. In addition I see that other people seem to have encountered the same issues. Would you know if there is a special way in which to connect to a AWS gateway? p.s We are using Json.
 

Thread Starter

Karina San

Joined Mar 20, 2018
5
When you say "...to connect to AWS I am unable to". What is the actual error being returned by the AWS server?

The AWS isn't even connecting to my device. It doesn't register any failed attempt but I do get this. I erased the actual webpage for security reasons and in place write -URL GOES HERE-

AT+CMEE=2

OK
Let's start.
AT+CSQ

+CSQ: 29,0

OK
AT+CGATT=1

OK
AT+SAPBR=3,1,"CONTYPE","GPRS"

OK
AT+SAPBR=3,1,"APN",""

OK
Bearer settings for applications based on IP, 1 = Open bearer
AT+SAPBR=1,1

+CME ERROR: operation not allowed
AT+HTTPINIT

+CME ERROR: operation not allowed
AT+HTTPPARA="URL","-URL GOES HERE-AT+HTTPDATA=28,100000

DOWNLOAD

OK
AT+HTTPACTION=1

OK

+HTTPACTION:1,601,0
AT+HTTPREAD

OK
 

Thread Starter

Karina San

Joined Mar 20, 2018
5
The actual code that tries to post to AWS is this
// Commands: //https://simcom.ee/documents/SIM900/SIM900_AT Command Manual_V1.11.pdf
#include <SoftwareSerial.h>
SoftwareSerial SIM900(7, 8); //7 = TX, 8 = RX

String volts = "{\"volts\":\"689\",\"amps\":\"689\"}";

void setup() {
Serial.begin(19200);
SIM900.begin(19200);
delay(5000);

connectGPRS();
postData();

delay(1000);
}

void loop() {
}

void ShowSerialData() {
while (SIM900.available() != 0)
Serial.write(SIM900.read());
}


void connectGPRS() {
SIM900.println("AT+CMEE=2"); // ok
delay(1000);
ShowSerialData();
Serial.println("Let's start.");

//Serial.println("Signal Quality Report.");
SIM900.println("AT+CSQ"); //Signal Quality Report
delay(1000);
ShowSerialData();

//wap.cingular
//simple
//NXTGENPHONE
// mint sim
// Wholesale

SIM900.println("AT+CGATT=1"); // ATTACH/DETACH FROM GPRS SERVICE
delay(200);
ShowSerialData();

SIM900.println("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\""); // ATTACH/DETACH FROM GPRS SERVICE
delay(1000);
ShowSerialData();

//Serial.println(" ATTACH/DETACH FROM GPRS SERVICE.");
SIM900.println("AT+SAPBR=3,1,\"APN\",\"\""); // ATTACH/DETACH FROM GPRS SERVICE
delay(5000);
ShowSerialData();

Serial.println(" Bearer settings for applications based on IP, 1 = Open bearer");
SIM900.println("AT+SAPBR=1,1"); // Bearer settings for applications based on IP
delay(10000);
ShowSerialData();

//Serial.println(" Bearer settings for applications based on IP. 2 = Query bearer");
// SIM900.println("AT+SAPBR=2,1"); //
// delay(1000);
// ShowSerialData();

}

void postData() {
SIM900.println("AT+HTTPINIT");
delay(2000);
ShowSerialData();

// SIM900.println("AT+HTTPPARA=\"CID\",1");
// delay(1000);
// ShowSerialData();

SIM900.println("AT+HTTPPARA=\"URL\",\"-URL GOES HERE-\"");
delay(1000);
ShowSerialData();

// SIM900.println("AT+HTTPPARA=\"CONTENT\",\"application/json\"");
// delay(1000);
// ShowSerialData();

SIM900.println("AT+HTTPDATA=" + String(volts.length()) + ",100000");
delay(1000);
ShowSerialData();

SIM900.println(volts);
delay(1000);
ShowSerialData();

SIM900.println("AT+HTTPACTION=1"); // AT+HTTPACTION=0 >> Get session start
delay(8000);
ShowSerialData();

SIM900.println("AT+HTTPREAD"); // Read the data of https server
delay(3000);
ShowSerialData();

//SIM900.println("AT+HTTPTERM"); // Terminate https service
//delay(100000);
//ShowSerialData();

}
 

Thread Starter

Karina San

Joined Mar 20, 2018
5
The issue has been solved.
Thank you for all your help timing, placement where factors but the biggest culprit was SSL. Amazon s3 buckets are "exclusively secure protocol" so your SSL has to equal 1. Also writing these guys one after the other in this order helped.

Serial.println(" Bearer settings for applications based on IP, 1 = Open bearer");
SIM900.println("AT+SAPBR=0,1"); // Bearer settings for applications based on IP
delay(10000);
ShowSerialData();

Serial.println(" Bearer settings for applications based on IP, 1 = Open bearer");
SIM900.println("AT+SAPBR=1,1"); // Bearer settings for applications based on IP
delay(10000);
ShowSerialData();
 

Picbuster

Joined Dec 2, 2013
1,057
The AWS isn't even connecting to my device. It doesn't register any failed attempt but I do get this. I erased the actual webpage for security reasons and in place write -URL GOES HERE-

AT+CMEE=2

OK
Let's start.
AT+CSQ

+CSQ: 29,0

OK
AT+CGATT=1

OK
AT+SAPBR=3,1,"CONTYPE","GPRS"

OK
AT+SAPBR=3,1,"APN",""

OK
Bearer settings for applications based on IP, 1 = Open bearer
AT+SAPBR=1,1

+CME ERROR: operation not allowed
AT+HTTPINIT

+CME ERROR: operation not allowed
AT+HTTPPARA="URL","-URL GOES HERE-AT+HTTPDATA=28,100000

DOWNLOAD

OK
AT+HTTPACTION=1

OK

+HTTPACTION:1,601,0
AT+HTTPREAD

OK
The sim900 is obsolete but;
There are several software levels around some are not supporting gprs or other functions.
I did run into that problem even worst not all 900 are the same in memory and can't be updated.
Please consult your dealer or go direct to simcom and identify your model and upgradability.

Picbuster
 
Top