MarcoMartines / GSM-GPRS-GPS-Shield

GSM/GPRS & GPS Shield Library for modules using SIM900/SIM908
GNU General Public License v2.0
208 stars 152 forks source link

Don't know how to make httpPOST request to Ubidots REST API #50

Open NelsGit opened 6 years ago

NelsGit commented 6 years ago

Hello. What exactly is the proper syntax of the httpPOST request to Ubidots REST API? Here are the info provided by Ubidots to be able to post value to their web app:

include

include

//Serial Relay - Arduino will patch a //serial link between the computer and the GPRS Shield //at 19200 bps 8-N-1 //Computer is connected to Hardware UART //GPRS Shield is connected to the Software UART

define APN "Put_the_APN_here" // Assign the APN

define USER "Put_the_APN_user_herer" // If your apn doesnt have username just put ""

define PASS "Put_the_APN_pwd_here" // If your apn doesnt have password just put ""

define TOKEN "Put_your_Ubidots_token_here" // Replace it with your Ubidots token

define VARIABLE_LABEL "temperature" // Assign the variable label

Ubidots client(TOKEN); SoftwareSerial gprs = SoftwareSerial(7, 8); SoftwareSerial *GPRSSerial = &gprs;

void setup() { Serial.begin(115200); GPRSSerial->begin(19200); if (! client.init(*GPRSSerial)) { Serial.println(F("Couldn't find FONA")); while (1); } client.setApn(APN,USER,PASS); //client.setDebug(false); }

void loop() { float value = analogRead(A0); // Reading analog pin A0 client.add(VARIABLE_LABEL, value);
client.sendAll(); }`

NelsGit commented 6 years ago

But I wan't this code to function like the code above because this is the code that uses compatible library:

include "SIM900.h"

include

include "inetGSM.h"

//#include "sms.h" //#include "call.h"

//To change pins for Software Serial, use the two lines in GSM.cpp.

//GSM Shield for Arduino //www.open-electronics.org //this code is based on the example of Arduino Labs.

//Simple sketch to start a connection as client.

InetGSM inet; //CallGSM call; //SMSGSM sms;

char msg[50]; int numdata; char inSerial[50]; int i=0; boolean started=false;

void setup() { //Serial connection. Serial.begin(9600); Serial.println("GSM Shield testing."); //Start configuration of shield with baudrate. //For http uses is raccomanded to use 4800 or slower. if (gsm.begin(2400)) { Serial.println("\nstatus=READY"); started=true; } else Serial.println("\nstatus=IDLE");

 if(started) {
      //GPRS attach, put in order APN, username and password.
      //If no needed auth let them blank.
      if (inet.attachGPRS("internet.wind", "", ""))
           Serial.println("status=ATTACHED");
      else Serial.println("status=ERROR");
      delay(1000);

      //Read IP address.
      gsm.SimpleWriteln("AT+CIFSR");
      delay(5000);
      //Read until serial buffer is empty.
      gsm.WhileSimpleRead();

      //TCP Client GET, send a GET request to the server and
      //save the reply.
      numdata=inet.httpGET("www.google.com", 80, "/", msg, 50);
      //Print the results.
      Serial.println("\nNumber of data received:");
      Serial.println(numdata);
      Serial.println("\nData received:");
      Serial.println(msg);
 }

};

void loop() { //Read for new byte on serial hardware, //and write them on NewSoftSerial. serialhwread(); //Read for new byte on NewSoftSerial. serialswread(); };

void serialhwread() { i=0; if (Serial.available() > 0) { while (Serial.available() > 0) { inSerial[i]=(Serial.read()); delay(10); i++; }

      inSerial[i]='\0';
      if(!strcmp(inSerial,"/END")) {
           Serial.println("_");
           inSerial[0]=0x1a;
           inSerial[1]='\0';
           gsm.SimpleWriteln(inSerial);
      }
      //Send a saved AT command using serial port.
      if(!strcmp(inSerial,"TEST")) {
           Serial.println("SIGNAL QUALITY");
           gsm.SimpleWriteln("AT+CSQ");
      }
      //Read last message saved.
      if(!strcmp(inSerial,"MSG")) {
           Serial.println(msg);
      } else {
           Serial.println(inSerial);
           gsm.SimpleWriteln(inSerial);
      }
      inSerial[0]='\0';
 }

}

void serialswread() { gsm.SimpleRead(); }