Integración con Ubidots (vía TTS)
Ubidots es una plataforma de desarrollo de aplicaciones IoT de bajo código que permite ensamblar y lanzar rápidamente aplicaciones IoT sin tener que escribir código o contratar un equipo de desarrollo de software. 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.
Antes de comenzar la configuración, por favor revisa Conectar SenseCAP T1000 a TTS para conectar primero tu SenseCAP T1000 Tracker a TTS.
Configurar Ubidots
Para comenzar, crea una cuenta con Ubidots.
Inicia sesión en tu cuenta de Ubidots y encuentra la pestaña Devices en la parte superior de tu panel de control. En su lista desplegable, elige Plugins.
Plugins de Ubidots
Haz clic en el + o en el botón Create Data Plugin para crear un nuevo plugin.
Cuando se te presenten los plugins disponibles, selecciona el plugin The Things Stack.
A continuación, necesitas seleccionar un token de Ubidots. Puedes usar el Default token, también puedes crear un nuevo token.
Para crear un nuevo token, primero haz clic en tu avatar en la esquina superior derecha y selecciona API Credentials. Luego selecciona More debajo del Default token y agrega un nuevo token dentro de la página API Credentials.
Selecciona > para continuar y luego presiona la marca de verificación para finalizar.
Configurar el Decodificador
Una vez creado el plugin, ve a la sección del decodificador, elimina todo el código y reemplázalo por el siguiente:
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, entonces necesitas crear una integración Webhook en The Things Stack usando la plantilla Webhook de Ubidots.
En The Things Stack, navega a Integrations → Webhooks, y haz clic en Add Webhook.
Elige la plantilla Webhook de Ubidots.
Nombra tu integración completando el Webhook ID, y pega los valores del Plugin ID y el token de Ubidots.
Para encontrar el plugin ID, haz clic en tu plugin recién creado y navega a la pestaña Decoder en la izquierda. El plugin ID está disponible como parte de la URL del HTTPs Endpoint (como se resalta en la imagen a continuación).
Monitorear Tus Datos
Después de que hayas completado 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.