Skip to main content

Integración de Ubidots (via TTS)

Ubidots es una plataforma de desarrollo de aplicaciones IoT low-code que permite armar y lanzar aplicaciones IoT rápidamente sin necesidad de escribir código ni contratar un equipo de desarrollo. Hoy en día, más de 40,000+ aplicaciones ya conectan los puntos con Ubidots.

Para satisfacer la creciente necesidad de construir aplicaciones IoT, hemos estado cooperando con Ubidots y apoyando a la comunidad para agregar fácilmente el SenseCAP T1000 Tracker a Ubidots a través de The Things Network.

pir

Antes de comenzar la configuración, por favor revisa Conectar SenseCAP T1000 a TTS para conectar tu SenseCAP T1000 Tracker a TTS primero.

Configurar Ubidots

Para comenzar, crea una cuenta en Ubidots.

Inicia sesión en tu cuenta Ubidots y encuentra la pestaña Devices en la parte superior de tu panel. En el menú desplegable, elige Plugins.

Plugins de Ubidots

Haz clic en el botón + o en Create Data Plugin para crear un nuevo plugin.

pir

Cuando se muestren los plugins disponibles, selecciona el plugin The Things Stack.

pir

Luego, necesitas seleccionar un token de Ubidots. Puedes usar el Default token o crear uno nuevo.

pir

Para crear un nuevo token, primero haz clic en tu avatar en la esquina superior derecha y selecciona API Credentials. Después selecciona More debajo del Default token y añade un nuevo token dentro de la página API Credentials.

pir

Selecciona > para continuar y luego presiona la marca de verificación para finalizar.

pir

Configurar el Decodificador

Una vez creado el plugin, ve a la sección del decodificador, borra todo el código y reemplázalo por lo siguiente:

pir

const HOTSPOT_INFO = false;

function handleErrorIfExists(data){
const error = 'error' in data;
if (error) {
const errorMsg = { "error": { "value": data.errorCode, "context" : { "reason": data.error } } };
return errorMsg;
}
return false;
}

function addLat(lat, ubidotsPayload){
ubidotsPayload.position.context.lat = lat;
}

function addLng(lng, ubidotsPayload){
ubidotsPayload.position.context.lng = lng;
}

const coordinateActions = {
"Longitude": addLng,
"Latitude": addLat,
}

const assignPayloadKeys = (data, ubidotsPayload) => {
const { type, measurementValue } = data;

if (type === "Longitude" || type === "Latitude") {
if (!ubidotsPayload.position) {
ubidotsPayload.position = { "value": 1, "context": { "lat": undefined, "lng": undefined } };
}
coordinateActions[type](measurementValue, ubidotsPayload);
}
else if (data.type === "Timestamp") {
ubidotsPayload.timestamp = data.measurementValue;
}
else {
ubidotsPayload[type] = measurementValue;
}
};

function buildUbidotsPayload(data){
const ubidotsPayload = {};
data.forEach(innerData => {
innerData.forEach(innerInnerData => {
assignPayloadKeys(innerInnerData, ubidotsPayload);
});
});
return ubidotsPayload;
}

async function formatPayload(args){

const data = args.uplink_message.decoded_payload.messages;
let ubidotsPayload = {};

const error = handleErrorIfExists(data[0][0]);
if (error) return error;

if (HOTSPOT_INFO) {
const { hotspots, port, fcnt } = args;
const { snr, rssi } = hotspots[0];
Object.assign(ubidotsPayload, { SNR: snr, RSSI: rssi, port, 'Frame Counter': fcnt });
}
ubidotsPayload = buildUbidotsPayload(data);
console.log(ubidotsPayload);
return ubidotsPayload;
};

module.exports = { formatPayload };

Configurar The Things Stack

Cuando hayas preparado la configuración en Ubidots, debes crear una integración Webhook en The Things Stack usando la plantilla Ubidots Webhook.

En The Things Stack, navega a IntegrationsWebhooks, y haz clic en Add Webhook.

pir

Elige la plantilla Ubidots Webhook.

pir

Nombra tu integración llenando el Webhook ID, y pega los valores del Plugin ID y token de Ubidots.

pir

info

Para encontrar el plugin ID, haz clic en el plugin que creaste y navega a la pestaña Decoder en la izquierda. El plugin ID está disponible como parte de la URL del Endpoint HTTPs (como se destaca en la imagen a continuación).

pir

Monitorea tus datos

Después de completar la integración, navega al menú Devices. Verás tu dispositivo final apareciendo en la lista de dispositivos finales tan pronto como envíe un mensaje uplink.

pir

Loading Comments...