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
Una cuenta de Ubidots con plan Industrial o superior.
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¶m1=message1¶m2=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.