Ir al contenido principal
Todas las coleccionesGuías de desarrollador
Usa UbiFunctions para enviar datos de sensores usando solicitudes HTTP GET
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 4 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?