0

I am using a SIM808 with a atmega2560.

I have setup the endpoint in Azure and that works when I try a http post via postman and/or an online http post tool (I get a 202 as result and see data comming into Azure)

I want to send a json package to an Azure http endpoint (smart app) using the function httpPOST in the SIMCom library from itead.

I am connecting to the network:

logging (I printed all that is written to GSM):

AT+CIFSR
DB:STARTING NEW CONNECTION
AT+CIPSHUT
DB:SHUTTED OK
AT+CSTT="provider.net","","" DB:APN OK
AT+CIICR
DB:CONNECTION OK
AT+CIFSR
DB:ASSIGNED AN IP
GPRS status=ATTACHED
AT+CIPSTART="TCP","prod-13.westeurope.logic.azure.com",443
DB:RECVD CMD
DB:OK TCP

Then call the httpPost function from the library with the following variables:

const char server[35] = "prod-13.westeurope.logic.azure.com";
const int port = 443;
const char path[200] = "/workflows/someazureID/triggers/manual/paths/invoke?api-version=2016年10月01日&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=someazuretoken";
const char parameters[100] = "{\"device\":\"alive\",\"timestamp\":\"09270845\"}";

Part of the httpPost function from the library for sending the data

 int InetGSM::httpPOST(const char* server, int port, const char* path, const char* parameters, char* result, int resultlength)
 ....
 gsm.SimpleWrite("POST ");
 gsm.SimpleWrite(path);
 gsm.SimpleWrite(" HTTP/1.1\r\nHost: ");
 gsm.SimpleWrite(server);
 gsm.SimpleWrite("\r\n");
 gsm.SimpleWrite("User-Agent: Arduino\r\n");
 gsm.SimpleWrite("Content-Type: application/json\r\n");
 gsm.SimpleWrite("Content-Length: ");
 itoa(strlen(parameters),itoaBuffer,10);
 gsm.SimpleWrite(itoaBuffer);
 gsm.SimpleWrite("\r\n\r\n");
 gsm.SimpleWrite(parameters);
 gsm.SimpleWrite("\r\n\r\n");
 gsm.SimpleWrite(end_c);
....

Which gives this output on the serial monitor (I printed all that is written to GSM):

AT+CIPSEND
DB:>
POST /workflows/someazureID/triggers/manual/paths/invoke?api-version=2016年10月01日&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=someazuretoken HTTP/1.1
Host: prod-13.westeurope.logic.azure.com
User-Agent: Arduino
Content-Type: application/json
Content-Length: 55
{"device":"alive","timestamp":"09270845"}
DB:SENT

And then it is waiting for a response:

Starting read..
Waiting for Data............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ 
CLOSED 
Done..
response:
10
CLOSED

which times out I guess.

And I see nothing coming into Azure.

(I am getting data when I try a httpGet on a random site. So hardware, sim and network is working ok I guess)

Any ideas? thx!

asked Sep 27, 2018 at 13:49
3
  • doesn't Azure use https? Commented Sep 27, 2018 at 15:36
  • yes it does, I am connecting to port 443 'const char server[35] = "prod-13.westeurope.logic.azure.com"; const int port = 443;' But honestly I have never done this before so maybe I am forgetting/missing something Commented Sep 27, 2018 at 16:21
  • I don't know the AT commands for the GSM module, but it doesn't look like you would handle SSL Commented Sep 27, 2018 at 16:51

1 Answer 1

1

Juraj's comments put me on the right track, for SSL you need to do more then just select the port.

I did some searching and got it to work using a different GSM library that also supports SSL: tinyGSM

in combination with ArduinoHttpClient

Jeroen

EDIT: It works, but there is a big downside. It looks like there is major overhead, each message seems to uses 13Kb of data...? I suspect this comes from the data that is returned by the endpoint. This is way too much over GPRS so now looking into MQTT.

answered Sep 28, 2018 at 8:26

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.