Отправка данных и координат на сайт HTTP в Sim808 - PullRequest
0 голосов
/ 22 сентября 2019

Я устанавливаю новое устройство, которое будет отправлять некоторые данные и координаты на сервер, используя GPRS / GPS, sim808 и arduino

Я загрузил приведенный ниже код, который используется для отправки данных на веб-сайтОднако он не сработал так, как ожидалось.

Этот код в основном зависит от отправки данных ультразвукового датчика, привязанного к ссылке местоположения устройства, на веб-сервер.Я пытался найти решение, но не смог найти решение, которое мне помогло.

#include "functionofUS.h"
#include "gprstest.h"
#include "sleepy.h"
#include "battery.h"
#include "transistor.h"
void setup() {
 sim808.begin(9600);
 Serial.begin(9600);
 testdistance();
 delay(50);
 sendData("AT+CGNSPWR=1",1000,DEBUG);
 delay(50);
 sendData("AT+CGNSSEQ=RMC",1000,DEBUG);
 delay(150);
}
void loop(){
open_device();
gsm_connect_gprs();
gsm_send_data();
gsm_disConnect_gprs();
testbattery(); 
close_device();
sleep_enable();
}

#include <SoftwareSerial.h>
SoftwareSerial sim808(2,3);

String data[5];
#define DEBUG true
String state,timegps,latitude,longitude;
void sendTabData(String command , const int timeout , boolean debug){
  sim808.println(command);
  long int time = millis();
  int i = 0;

  while((time+timeout) > millis()){
    while(sim808.available()){
      char c = sim808.read();
      if (c != ',') {
         data[i] +=c;
         delay(100);
      } else {
        i++;  
      }
      if (i == 5) {
        delay(100);
        goto exitL;
      }
    }
  }exitL:
  if (debug) {
    state = data[1];
    timegps = data[2];
    latitude = data[3];
    longitude =data[4];  
  }
}
String sendData (String command , const int timeout ,boolean debug){

  String response = "";
  sim808.println(command);
  long int time = millis();
  int i = 0;

  while ( (time+timeout ) > millis()){
    while (sim808.available()){
      char c = sim808.read();
      response +=c;
    }
  }
  if (debug) {
     Serial.print(response);
     }
     return response;
}

void offgps(void){
  sendData( "AT+CGNSPWR=0",1000,true);
}
void getgps(void){
   sendData( "AT+CGNSPWR=1",1000,true); 
   sendData( "AT+CGPSINF=0",1000,true);
  sendTabData("AT+CGNSINF",1000,DEBUG);
  if (state !=0) {
    Serial.println("State  :"+state);
    Serial.println("Time  :"+timegps);
    Serial.println("Latitude  :"+latitude);
    Serial.println("Longitude  :"+longitude);
  } else {
    Serial.println("GPS Initialising...");
  }}
void gsm_send_data()
{

  getgps();
    Serial.println("Sending data.");    
    sim808.write("AT+HTTPINIT\r\n");  // Initialize HTTP
    //Serial.print("AT+HTTPINIT\r\n");
    delay(1000);
    sim808.write("AT+HTTPPARA=\"URL\",\"http://shehanshaman.000webhostapp.com/?readingsensor=");
    //URL/?readingsensor=98%&location=location=maps.google.com/maps?q=loc:longitude,latitude
    delay(50);
    //sim808.print(""); 
    sim808.print(runussensor());   // Add percentage to the url
    delay(150);
    sim808.write("%");
    delay(50);
    sim808.write("&location=maps.google.com/maps?q=loc:"); 
    //Serial.print("&location=");
    delay(50);
    sim808.print(longitude);   // Add location to url
    //Serial.print(location);
  delay(50);
  sim808.write(","); 
  delay(50);
  latitude+='0';
 sim808.print(latitude);   // close url
    delay(50);
    sim808.write("\"\r\n");   // close url

    //Serial.print("\"\r\n");
    delay(2000);
    sim808.write("AT+HTTPPARA=\"CID\",1\r\n");    // End the PARA
    //Serial.print("AT+HTTPPARA=\"CID\",1\r\n");
    delay(2000);
    sim808.write("AT+HTTPACTION=0\r\n");
    //Serial.print("AT+HTTPACTION=0\r\n");
    delay(3000);    
    sim808.write("AT+HTTPTERM\r\n");
    delay(3000);    
    Serial.print("data sent complete : ");
    offgps();
}
void gsm_disConnect_gprs(){
  sim808.write("AT+CGATT=0\r\n"); // Attach to GPRS
  delay(2000);
  Serial.println("GPRS off");
}

void gsm_connect_gprs(){

  sim808.write("AT+CGATT=1\r\n"); // Attach to GPRS
  delay(2000);
  sim808.write("AT+SAPBR=1,1\r\n"); // Open a GPRS context
  delay(2000);
  //serialSIM808.write("AT+SAPBER=2,1\r\n");  // To query the GPRS context
  //delay(2000);
  Serial.println("GPRS on");
}

Я не знаю, где ошибка.

...