Hola Noter
Gracias por responder
Tienes la razon aunque mi sketch de verdad da pena pero bueno de algo se debe partir...mejor que de 0s.
#include <LTask.h>
#include <LWiFi.h>
#include <LWiFiClient.h>
#include <LGPS.h>
#define WIFI_AP "MI RED"
#define WIFI_PASSWORD "MI CLAVE."
#define WIFI_AUTH LWIFI_WPA
gpsSentenceInfoStruct info;
char buff[256];
char action[] = "POST";
char server[] = "serversql.distracom.com.co";
char path[] = "/FCIndustryServices/api/EventoGPS";
int port = 80;
String var;
String IMEI = "355675061007043"; //ESTE VALOR DEPENDE DE CADA TARJETA, LO USO COMO ID
String Nivel_Unit = "mm";//este valor tambien es fijo
int sensorPin = A0; // Entrada para el sensor
float sensorValue = 0; // variable para almacenar el valor del sensor
int ign = 4;//sensores tipo open-close
int sen1 = 7;
int sen2 = 8;
int sen3 = 12;
unsigned int valorIG;
unsigned int valorS1;
unsigned int valorS2;
unsigned int valorS3;
String pck;
static unsigned char getComma(unsigned char num,const char *str)
{
unsigned char i,j = 0;
int len=strlen(str);
for(i = 0;i < len;i ++)
{
if(str[i] == ',')
j++;
if(j == num)
return i + 1;
}
return 0;
}
static double getDoubleNumber(const char *s)
{
char buf[10];
unsigned char i;
double rev;
i=getComma(1, s);
i = i - 1;
strncpy(buf, s, i);
buf[i] = 0;
rev=atof(buf);
return rev;
}
static double getIntNumber(const char *s)
{
char buf[10];
unsigned char i;
double rev;
i=getComma(1, s);
i = i - 1;
strncpy(buf, s, i);
buf[i] = 0;
rev=atoi(buf);
return rev;
}
void parseGPGGA(const char* GPGGAstr)
{
/* Refer to http://www.gpsinformation.org/dale/nmea.htm#GGA
* Sample data: $GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47
* Where:
* GGA Global Positioning System Fix Data
* 123519 Fix taken at 12:35:19 UTC
* 4807.038,N Latitude 48 deg 07.038' N
* 01131.000,E Longitude 11 deg 31.000' E
* 1 Fix quality: 0 = invalid
* 1 = GPS fix (SPS)
* 2 = DGPS fix
* 3 = PPS fix
* 4 = Real Time Kinematic
* 5 = Float RTK
* 6 = estimated (dead reckoning) (2.3 feature)
* 7 = Manual input mode
* 8 = Simulation mode
* 08 Number of satellites being tracked
* 0.9 Horizontal dilution of position
* 545.4,M Altitude, Meters, above mean sea level
* 46.9,M Height of geoid (mean sea level) above WGS84
* ellipsoid
* (empty field) time in seconds since last DGPS update
* (empty field) DGPS station ID number
* *47 the checksum data, always begins with *
*/
double latitude;
double longitude;
int tmp, hour, minute, second, num ;
if(GPGGAstr[0] == '
Como ya dije anteriormente un ejemplo de la trama json que quiero enviar es:
{ "IMEI": "123456789012345",
"Fecha_Evento": "2015-06-01 13:45:07", //AUN NO SE DE DONDE LA VOY A SACAR.
"Latitud": "1151551",
"Longitud": "7251555",
"Nivel": "12.6",
"Nivel_Unit": "mm",
"Ign_Pwr": "True",
"Sensor1": "True",
"Sensor2": "True",
"Sensor3": "False"}
Si lo pruebas en el RESTCLIENT con POST y el servidor que esta en el Sketch, la trama sube bien al servidor, pero yo no consigo subirla...AGRADEZCO TODAS LAS AYUDAS DE ANTEMANO.
)
{
tmp = getComma(1, GPGGAstr);
hour = (GPGGAstr[tmp + 0] - '0') * 10 + (GPGGAstr[tmp + 1] - '0');
minute = (GPGGAstr[tmp + 2] - '0') * 10 + (GPGGAstr[tmp + 3] - '0');
second = (GPGGAstr[tmp + 4] - '0') * 10 + (GPGGAstr[tmp + 5] - '0');
//sprintf(buff, "HORA LOCAL %2d-%2d-%2d", hour-5, minute, second);
//Serial.println(buff);
tmp = getComma(2, GPGGAstr);
latitude = getDoubleNumber(&GPGGAstr[tmp]);
String Latitud = latitude //jajajajaja...obviamente esto no funciona y ademas no estoy seguro si sea lo correcto para enviar la data.
//sprintf(buff,"latitud = %10.4f",latitude);
//Serial.println(buff);
tmp = getComma(4, GPGGAstr);
longitude = getDoubleNumber(&GPGGAstr[tmp]);
//sprintf(buff,"longitud = %10.4f",longitude);
//Serial.println(buff);
tmp = getComma(7, GPGGAstr);
num = getIntNumber(&GPGGAstr[tmp]);
//sprintf(buff, "Cantidad de Satelites = %d", num);
// Serial.println(buff);
}
else
{
Serial.println("Not get data");
}
}
void leernivel () {
sensorValue = analogRead(sensorPin); //Lee el valor del sensor
//Serial.print("valor del sensor:");
float Nivel = (sensorValue*5)/1023;
//Serial.println(nivel);
//delay(3000);
}
void leerONOFF (){
valorIG=digitalRead(4);
if (valorIG==LOW){
String Ign_Pwr = "False";
}else{
String Ign_Pwr = "True";
}
valorS1=digitalRead(7);
if (valorS1==LOW){
String Sensor1 = "False";
}else{
String Sensor1 = "True";
}
valorS2=digitalRead(8);
if (valorS2==LOW){
String Sensor2 = "False";
}else{
String Sensor2 = "True";
}
valorS3=digitalRead(12);
if (valorS3==LOW){
String Sensor3 = "False";
}else{
String Sensor3 = "True";
}
}
void setup() {
Serial.begin(115200);
LWiFi.begin();
LGPS.powerOn();
while (0 == LWiFi.connect(WIFI_AP, LWiFiLoginInfo(WIFI_AUTH, WIFI_PASSWORD)))
{
delay(1000);
}
}
void loop() {
LWiFiClient c;
while (!c.connect(server, 80))
{
Serial.println("retry connect");
delay(100);
}
parseGPGGA((const char*)info.GPGGA);
leernivel ();
leerONOFF ();
if (c.connect(server, port)){
pck="{"IMEI":"+ IMEI +" , "Latitud":"+ Latitud +" , "Longitud":"+ longitude+" , "Nivel":"+ Nivel +" , "Nivel_Unit":" + Nivel_Unit +" , "Ign_Pwr":" + Ign_Pwr +" , "Sensor1":"+ Sensor1 +" , "Sensor2":"+ Sensor2 +" , "Sensor3":"+ Sensor3 +"}";
Serial.print(action);
Serial.print(path);
Serial.println(" HTTP/1.1");
Serial.println(F("Content-Type: application/json"));
//c.print(F("Content-Length: "));
//c.println(le);
Serial.println();
Serial.println(var); // The payload defined above
Serial.println();
Serial.println((char)26);
c.print(action);
c.print(path);
c.println(" HTTP/1.1");
c.println(F("Content-Type: application/json"));
//c.print(F("Content-Length: "));
//c.println(le);
c.println();
c.println(var); // The payload defined above
c.println();
c.println((char)26);
}
Como ya dije anteriormente un ejemplo de la trama json que quiero enviar es:
{ "IMEI": "123456789012345",
"Fecha_Evento": "2015-06-01 13:45:07", //AUN NO SE DE DONDE LA VOY A SACAR.
"Latitud": "1151551",
"Longitud": "7251555",
"Nivel": "12.6",
"Nivel_Unit": "mm",
"Ign_Pwr": "True",
"Sensor1": "True",
"Sensor2": "True",
"Sensor3": "False"}
Si lo pruebas en el RESTCLIENT con POST y el servidor que esta en el Sketch, la trama sube bien al servidor, pero yo no consigo subirla...AGRADEZCO TODAS LAS AYUDAS DE ANTEMANO.