Ir al contenido principal

Usa UbiFunctions para enviar datos de sensores usando solicitudes HTTP GET

Aprende cómo crear una API personalizada que acepte solicitudes HTTP GET y reenvíe los datos del sensor a la API de Ubidots.

Sergio M avatar
Escrito por Sergio M
Actualizado hace más de 9 meses

En este ejemplo aprenderás a:

  • Usar argumentos de URL de una solicitud HTTP GET dentro de una función.

  • Hacer una solicitud HTTP POST desde una función.

Al final de este ejemplo deberías poder pegar una URL con este formato en tu navegador para enviar datos a tus dispositivos:

https://parse.ubidots.com/prv/YOUR-USERNAME/post-data?&device_label=ABCD&temperature=73&humidity=55&token=YOUR-ACCOUNT-TOKEN

Requisitos

1. Crear una Función

  • Ve a la pestaña "dispositivos" y selecciona "funciones":

A continuación, crea una nueva función y dale un nombre descriptivo que se asemeje a la función de análisis que ejecutarás; en este caso la llamamos "Post data".

En el campo "Método HTTPS", selecciona "GET" como el método para activar la función:

2. Programar tu Función

El siguiente código tiene dos funciones:

  • Una función main que acepta "args" como entrada. Esta entrada es un diccionario que contiene los parámetros de la URL como pares "clave":"valor". Por ejemplo, si activamos la función con esta URL:

https://parse.ubidots.com/prv/YOUR-USERNAME/parser-name?hello=world&param1=message1&param2=message2

Entonces la función main los recibiría así:

args = {"hello":"world", "param1":"message1", "param2":"message2"}
  • Una función ubidotsPost, que usa el token, device_label y una carga útil JSON especificados como entrada, para hacer una solicitud HTTP POST a la API de Ubidots.

Al usar estas dos funciones, obtenemos la capacidad de (1) mapear los parámetros de la URL a variables individuales dentro de la función (token, device_label y una carga útil JSON que contiene las variables y valores a enviar), y (2) ejecutar la función ubidotsPost para enviar los datos obtenidos a Ubidots:

var request = require('request-promise');

async function main(args) {

// Get the device label from the request URL, then erase it from the args payload

var device_label = args.device_label;

delete args['device_label'];

// Get the token from the request URL, then erase it from the args payload
var token = args.token;

delete args['token'];

// Make POST request to Ubidots
var post_response = await ubidotsPost(token, device_label, args);

// Pass Ubidots' API response to the function' response

return post_response;

}

async function ubidotsPost(token, device_label, data) {

var options = {

method: 'POST',

url: 'https://industrial.api.ubidots.com/api/v1.6/devices/' + device_label + '?force=true',

body: data,
json: true,
headers: {
'Content-Type': 'application/json',
'X-Auth-Token': token
}
};
return await request.post(options);
}

3. El resultado

Si pegamos la URL a continuación en nuestro navegador, ¡podemos obtener las respuestas {"status_code": "201"} de la API de Ubidots indicando que los datos se publicaron correctamente!

Y luego, por supuesto, si vamos a nuestra cuenta de Ubidots, vemos un dispositivo con la etiqueta "abdc" con las respectivas variables y valores actualizados en los intervalos en los que tu función está programada para ejecutarse.

¿Ha quedado contestada tu pregunta?