[SOLVED] Led ethernet shield w5100 y arduino

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:

GET http://things.ubidots.com/api/v1.6/variables/560d815776254227dc6b09ab/values?token=xxxxxxx&page_size=1

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.

ESTE ES MI CODIGO ES IGUAL A LAS DE ENTRADAS ANALOGICAS
LED1.ino (2.9 KB)

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:

  1. Flashea el ejemplo original de Arduino Ethernet llamado “WebClientRepeating” (está en Examples–>Ethernet–>WebClientRepeating).
  2. 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.