Go Down

Topic: 3G arduino url con datos (Read 208 times) previous topic - next topic

necktor

Apr 24, 2018, 04:12 pm Last Edit: Apr 25, 2018, 12:08 pm by necktor
Hola buenas, necesito ayuda con SIM900 y url compuesta por las variables.

Mi problema es que necesito enviar dentro de la url el valor de las variables, las cuales no son fijas, el ejemplo seria : http..............?hef.Tem=1&luz=2$lon=3...... donde los numeros 1,2 o 3 cambiarian al valor que tenga esa variable en ese momento.
Esto para enviar por 3G.

ArduMyth

#1
Apr 24, 2018, 09:18 pm Last Edit: Apr 24, 2018, 09:29 pm by ArduMyth
Concatena el string que tiene la url con las variables que tienen los parámetros.
Por cierto, dejen de usar los parámetros a la antigua con ? y &. No cuesta nada crear un .htacces, incluso vienen ya hechos por internet.

surbyte

#2
Apr 25, 2018, 12:18 am Last Edit: Apr 25, 2018, 05:29 pm by surbyte
Puedes usar

String.concat();
o puedes usar
Code: [Select]
sprintf(buffer,"%d%d",Tem,luz);

donde buffer es un array de caracters p. ej.
Code: [Select]
char buffer[20];

necktor

#3
Apr 25, 2018, 11:30 am Last Edit: Apr 25, 2018, 12:12 pm by necktor
Soy bastante novato en esto, nunca he tenido necesidad de usar string, char ni ninguna de este tipo de hay es que tengo el problema, no se como estructurarlo y escribirlo en el código.

Viendo por hay solo veo que el string se usa para cadenas de texto o caracteres, pero en mi caso entre medias de cada una tengo una variable la cual va cambiando a cada segundo por lo que me quedo bloqueado, sin contar que lo tengo que añadir en un GET para usarlo en el 3G.

la url seria tipo una cosa asi: apli.mibase.net/sensores/insrt.php?sensor=1&temperatura=2&humedad=3&luz=4&lluvia=5&calidadaire=6&pir=7&bar=8&bat=9

el GET : char direccion[] = "GET /sensores/insrt.php? HTTP/1.1\r\nHost: apli.mibase.net\r\nConnection: close\r\n\r\n";

es lo mas lejos que he llegado me falta todo lo importante que son lo datos para la base de datos

surbyte

Mira este hilo y sobre el final verás que usan algo parecido a lo que necesitas.
http://forum.arduino.cc/index.php?topic=539300.50

Lo que no comprendo es porque no buscas en el foro, te aseguro que TODO o CASI TODO pero con un grado de confianza del 99% esta resuelto en el foro, sea en español o inglés.


necktor

#5
Apr 25, 2018, 08:17 pm Last Edit: Apr 25, 2018, 10:34 pm by necktor
Si he buscado en el foro y revisado muchos post pero lo que busco es convertir toda esa url en un string concatenado que ademas contenga string de variables intercaladas entre ellos.

El del post que me mandas no me es útil para lo que busco, aunque gracias por las molestias.

Lo que intento hacer es una cosa tal lo que se ve en la imagen(es solo una estructura no es código).

Seguramente me este explicando muy mal por apenas yo me entiendo haber si con la imagen alguien me entiende y me hecha una mano.

Si no es posible alguna otra solución sencilla, grax y disculpad molestias.


surbyte

#6
Apr 25, 2018, 10:46 pm Last Edit: Apr 25, 2018, 10:46 pm by surbyte
Sinceramente no creo que hayas buscado mucho o bien, no sabes buscar, luego te muestro búsquedas del mismo tema

sensor=1&temperatura=2&humedad=3&luz=4&lluvia=5&calidadaire=6&pir=7&bar=8&bat=9

esto es lo que quieres

Solucion con sprintf

defines un array de char del tamaño necesario, supongo 100 chars si queda corto corrígelo.

Code: [Select]
char buffer[100];
sprintf(buffer, "sensor=%d&temperatura=%d&humedad=%d&luz=%d&lluvia=%d&calidadaire=%d&pir=%d&bar=%d&bat=%d", temperatura, humedad, luz, lluvia, calidadaire, pir, bar, bat);


no se donde lo usas pero luego solo usa buffer como un vector de caracteres que contiene todo lo que necesitas.

Solucion con String.concat() o simplemente con String

String buffer = "sensor="+String(1) + "&temperatura="+String(2)+"&humedad="+String(3)+"& luz="+ String(4)+"&lluvia="+String(5)+"&calidadaire="+String(6)+"&pir="+String(7)+"&bar="+String(8)+"&bat="+String(9)


Enlaces similares
El que te puse antes 1ro.
Dime como no te sirve si el pone que necesita enviar esto

GET /update?key=3V7EQI53HOMDPYUC&field1=26.00&field2=50.00&field3=63.44
SImilar a tu caso

y lo resueve asi
Code: [Select]
String EnviaDatos = "GET /update?key=" + writeAPIKey + "&field1=" + temp + "&field2=" + hum + "&field3=" + lumi + "\r\n";  //Prepara cadena para enviar datos a web

Link 2 => send data from sensors to mysql db


Link 3 => http://forum.arduino.cc/index.php?topic=418725.0

y hay muchos mas

Go Up