Arduino leonardo no envia datos a Ubidots

hola amigos,
Estoy tratando de enviar informacion directamente desde mi arduino leonardo, estuve copiando el ejemplo de http://ubidots.com/docs/devices/arduino-ethernet.html pero no me funciona, entonces intenté escrbirle directamente al servidor el valor “2.0” de la siguiente manera:

if (client.connect(“things.ubidots.com”, 80)) {
Serial.println(“connected”);
client.println(“POST /api/v1.6/variables/54eaa34a7625427b9cdc4fb7/values HTTP/1.1”);
client.println(“Content-Type: application/json”);
client.println(“X-Auth-Token: MX6IH9zwM7OeYTwsb8r1ukNvotLTYjEhfQ1w7GP2MDl8ckXkImyjUs9dNF38”);
client.println(“Host: things.ubidots.com”);
client.println();
client.println(’{“value”: 2.0,}’);
client.println();
} else {
Serial.println(“connection failed”);
}

pero me sale lo siguiente


No me está leyendo los valores.
¿alquien sabe algun truco para lograrlo?

Hola @darjos,

La respuesta se debe a que el servidor no está reconociendo el Body del request. Ésto debido a que el IDE de Arduino está leyendo las comillas de “value” como una declaración de strings, y no como algo que deba enviarse al servidor.

La forma correcta sería así:

En lugar de:

'{"value": 2.0,}'

Cambiarlo por algo así:

'{\"value\":2.0}';

Saludos

Hola @aguspg
realice el cambio por:
‘{“value”: 2.0}’; y por:
“’{“value”: 2.0}”; y me sigue arrojando el mismo error " {“Value”: [“this field is required.”]}

Hola, se me ocurre que tal vez estés cerrando el request antes de enviar el valor. Aquí te dejo un link de la librería WiFi que puede ser útil:

https://github.com/ubidots/ubidots-arduino-wifi/blob/master/Library/Ubidots.cpp

@darjos mira la linea 192 https://github.com/ubidots/ubidots-arduino-wifi/blob/master/Library/Ubidots.cpp#L192

Allí se concatena values para el envío de datos.

Saludos.

Gracias amigos, ya encontré el error del programa que está colgado en el link http://ubidots.com/docs/devices/arduino-ethernet.html
lo que pasa es que en el void setup no se está iniciando el ethernet client (es decir falta esta linea: Ethernet.begin(mac); ) yo estaba confundico porque está linea estaba pero cumpliendo una funcion de si logico.

Hola @darjos gracias por tu retroalimentación, vamos a mejorar el tutorial Ethernet usando tus comentarios. Saludos

Hola estimados

tengo el mismo tema, el monitor serial me replica la solicitud a ubidots, el tuto no ha sido creo actualizado porque no incluye las variables el string:

client.println(“POST /api/v1.6/variables/”+idvariable+"/values HTTP/1.1\nContent-Type: application/json\nContent-Length: “+String(num)+”\nX-Auth-Token: “+token+”\nHost: things.ubidots.com\n\n");

el monitor replica:

POST /api/v1.6/variables/xxxxxxxxxxx_,myvarID/values HTTP/1.1
Content-Type: application/json
Content-Length: 13
X-Auth-Token: xxxxx_mytoken
Host: things.ubidots.com
{“value”:903}

estoy usado un chipkit max32 con Network shield digilent, apunte el sketch a una ip dentro de la lan y escuchando trafico si me llegan los datos como se ve hasta arriba, dentro del monitor serial imprimo el valor de retorno de la conexion y siempre obtengo 1 = exito,

despues de unos 5 intentos (con delay de 5 segundos entre ellos) me rechaza la conexion,alguien tiene alguna otro tip?
gracias

Ésta conversación fue continuada en éste foro: http://community.ubidots.com/t/chipkit-max32-con-digilent-wifi-shield/103