Skip to main content

Ubidots 集成(通过 TTS)

Ubidots 是一个低代码物联网应用开发平台,能够快速组装和启动物联网应用,无需编写代码或雇佣软件开发团队。如今,已有超过 40,000+ 个应用通过 Ubidots 连接各种设备。

为了满足构建物联网应用日益增长的需求,我们一直与 Ubidots 合作,支持社区通过 The Things Network 轻松地将 SenseCAP T1000 Tracker 添加到 Ubidots。

pir

在开始设置之前,请查看将 SenseCAP T1000 连接到 TTS 以首先将您的 SenseCAP T1000 Tracker 连接到 TTS。

配置 Ubidots

首先,在 Ubidots 创建一个账户。

登录到您的 Ubidots 账户,在仪表板上方找到 Devices 选项卡。在其下拉列表中,选择 Plugins。

Ubidots 插件

点击 + 或点击 Create Data Plugin 按钮来创建一个新插件。

pir

当显示可用插件时,选择 The Things Stack 插件。

pir

接下来,您需要选择一个 Ubidots 令牌。您可以使用 Default token,也可以创建一个新令牌。

pir

要创建新令牌,首先点击右上角的头像并选择 API Credentials。然后在 Default token 下方选择 More,并在 API Credentials 页面中添加新令牌。

pir

选择 > 继续,然后点击勾选标记完成。

pir

配置解码器

创建插件后,转到解码器部分,删除所有代码并替换为以下内容:

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 };

配置 The Things Stack

当您在 Ubidots 上完成设置后,您需要使用 Ubidots Webhook 模板在 The Things Stack 上创建 Webhook 集成。

在 The Things Stack 上,导航到 IntegrationsWebhooks,然后点击 Add Webhook

pir

选择 Ubidots Webhook 模板。

pir

通过填写 Webhook ID 来命名您的集成,并粘贴 Plugin ID 和 Ubidots token 值。

pir

info

要查找插件 ID,请点击您新创建的插件并导航到左侧的 Decoder 选项卡。插件 ID 作为 HTTPs 端点 URL 的一部分可用(如下图中突出显示的部分)。

pir

监控您的数据

完成集成后,导航到 Devices 菜单。一旦您的终端设备发送上行消息,您将看到它出现在终端设备列表中。

pir

Loading Comments...