Ubidots 集成(通过 TTS)
Ubidots 是一个低代码物联网应用开发平台,能够快速组装和启动物联网应用,无需编写代码或雇佣软件开发团队。如今,已有超过 40,000+ 个应用通过 Ubidots 连接各种设备。
为了满足构建物联网应用日益增长的需求,我们一直与 Ubidots 合作,支持社区通过 The Things Network 轻松地将 SenseCAP T1000 Tracker 添加到 Ubidots。
在开始设置之前,请查看将 SenseCAP T1000 连接到 TTS 以首先将您的 SenseCAP T1000 Tracker 连接到 TTS。
配置 Ubidots
首先,在 Ubidots 创建一个账户。
登录到您的 Ubidots 账户,在仪表板上方找到 Devices 选项卡。在其下拉列表中,选择 Plugins。
Ubidots 插件
点击 + 或点击 Create Data Plugin 按钮来创建一个新插件。
当显示可用插件时,选择 The Things Stack 插件。
接下来,您需要选择一个 Ubidots 令牌。您可以使用 Default token,也可以创建一个新令牌。
要创建新令牌,首先点击右上角的头像并选择 API Credentials。然后在 Default token 下方选择 More,并在 API Credentials 页面中添加新令牌。
选择 > 继续,然后点击勾选标记完成。
配置解码器
创建插件后,转到解码器部分,删除所有代码并替换为以下内容:
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 上,导航到 Integrations → Webhooks,然后点击 Add Webhook。
选择 Ubidots Webhook 模板。
通过填写 Webhook ID 来命名您的集成,并粘贴 Plugin ID 和 Ubidots token 值。
要查找插件 ID,请点击您新创建的插件并导航到左侧的 Decoder 选项卡。插件 ID 作为 HTTPs 端点 URL 的一部分可用(如下图中突出显示的部分)。
监控您的数据
完成集成后,导航到 Devices 菜单。一旦您的终端设备发送上行消息,您将看到它出现在终端设备列表中。