Hola…quisiera saber si alguien dispone de un ejemplo para enviar un dato o encender un led desde la pagina de Ubidots hacia el Arduino atraves del Ethernet , por que el único ejemplo que se encuentra en la pagina es con el WIFI SHIELD. Seria de gran ayuda gracias
Hola en http://ubidots.com/docs/devices/arduino-ethernet.html se encuentra un ejemplo con un shield ethernet y un arduino UNO
Saludos.
Hola @yordifv tomando el ejemplo de @woakas, debes hacer un GET en vez de un POST, y luego parsear la respuesta. Importante que pongas la opción de paginación “page_size=1” para que solo retorne el último valor, por ejemplo:
Hola muchas gracias por la ayuda…la parte de parsear a que se refiere…el GET si se donde modificar igual la paginación… Y es lo único q tengo q cambiar?
client.println(“GET /api/v1.6/variables/”+ano+"/values HTTP/1.1");
Serial.println(“GET /api/v1.6/variables/”+ano+"/values HTTP/1.1");
client.println(“Content-Type: application/json”);
Serial.println(“Content-Type: application/json”);
client.println("Content-Length: "+String(num));
Serial.println("Content-Length: "+String(num));
client.println("X-Auth-Token: "+token);
Serial.println(“X-Auth-Token: “+token);
client.println(“Host: things.ubidots.com\n”);
Serial.println(“Host: things.ubidots.com\n”);
client.print(var);
Serial.print(var+”\n”);
El GET sería algo asi (ver documentación: http://ubidots.com/docs/api/v1_6/data/get_variables_id_values.html)
client.println("GET /api/v1.6/variables/"+ano+"/values HTTP/1.1");
client.println("Content-Type: application/json");
client.println("X-Auth-Token: "+token);
client.println("Host: things.ubidots.com\n");
Para parsear me refiero a tomar la respuesta del servidor, la cual será un string o char dependiendo de como lo recibas, para luego analizar lo que hay adentro y tomar solo la información que necesitas. Una vez obtengas la respuesta del servidor al comando GET, puedes compartir tu código para ayudarte con el parsing.
Está ok; en ésta línea estás imprimiendo la respuesta del servidor:
if (client.available())
{
char c = client.read();
Serial.print(c);
}
Por favor copianos acá lo que responde el servidor para poder hacer la función de parsing
Parece que no esta recibiendo … Podrías explicarme donde modificar la parte de paginación por que eso me falta no me ubico donde modificar
Parece que el módulo no está recibiendo respuesta alguna. Podrías agregar un “\n” adicional:
client.println("GET /api/v1.6/variables/"+ano+"/values?page_size=1 HTTP/1.1");
client.println("Content-Type: application/json");
client.println("X-Auth-Token: "+token);
client.println("Host: things.ubidots.com\n");
client.println("\n");
La paginación la da la propiedad “page_size=1”. Otra cosa, parece que estás enviando "{“value”…} y length; éstos no son necesarios pues estás haciendo un GET, no un POST.
He cambiado el código con las sugerencias. En que parte configuro lo de la paginación talvez pueda ser el error o hay alguna configuración que se debe realizar en ubidots?. Aquí adjunto parte del código del Arduino.
client.println("GET /api/v1.6/variables/"+idvariable+"/values HTTP/1.1");
Serial.println("GET /api/v1.6/variables/"+idvariable+"/values HTTP/1.1");
client.println("Content-Type: application/json");
Serial.println("Content-Type: application/json");
client.println("X-Auth-Token: "+token);
Serial.println("X-Auth-Token: "+token);
client.println("Host: things.ubidots.com\n");
Serial.println("Host: things.ubidots.com\n");
client.println("\n");
aquí esta una imagen del puerto serial.
Hola, la paginación está dada por el parámetro “?page_size=1” que ya lo incluí en mi mensaje anterior, pero ésto no afecta el hecho de que responda o no. Parece que el modulo aún no puede acceder a sitios externos.
Hagamos éste troubleshooting:
- Flashea el ejemplo original de Arduino Ethernet llamado “WebClientRepeating” (está en Examples–>Ethernet–>WebClientRepeating).
- Corre el ejemplo y envíanos el output serial. Deberías ver la respuesta de la dirección que se solicita allí (http://arduino.cc/latest.txt).
Una vez ésto funcione, procederemos a convertir ese ejemplo a un GET para Ubidots.